parent
98db18e687
commit
9518c7130a
13 changed files with 176 additions and 61 deletions
|
|
@ -0,0 +1,26 @@
|
||||||
|
package ru.spcex.clearing.registry.config;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import ru.spcex.clearing.registry.validation.ValuesOfMapNonNullRule;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class ValidationConfig {
|
||||||
|
|
||||||
|
@Bean("fieldValuesValidator")
|
||||||
|
public Function<Map<String, ?>, IValidator> fieldValuesValidator() {
|
||||||
|
return map -> {
|
||||||
|
ImdgValidationContext<Map<String, ?>> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(map);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
new ValuesOfMapNonNullRule()
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,35 +17,41 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.AdmittedLiabilitiesRegisterNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.registry.AdmittedLiabilitiesRegisterNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
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.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_ADLR;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_ADLR;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
|
public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<Registry, AdmittedLiabilitiesRegister> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<AdmittedLiabilitiesRegister> admittedLiabilitiesRegisterMap;
|
private final Imdg<AdmittedLiabilitiesRegister> admittedLiabilitiesRegisterMap;
|
||||||
private final Imdg<Registry> registryMap;
|
private final Imdg<Registry> registryMap;
|
||||||
private final Imdg<Company> companyMap;
|
private final Imdg<Company> companyMap;
|
||||||
private final Imdg<Security> securityMap;
|
private final Imdg<Security> securityMap;
|
||||||
|
private final Function<Map<String, ?>, IValidator> fieldValuesValidator;
|
||||||
@Autowired
|
@Autowired
|
||||||
public AdmittedLiabilitiesRegisterService(Consumer<String, Object> kafkaQueue,
|
public AdmittedLiabilitiesRegisterService(Consumer<String, Object> kafkaQueue,
|
||||||
Producer<String, Object> kafkaProducer,
|
Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider) {
|
ImdgProvider imdgProvider, Function<Map<String, ?>, IValidator> fieldValuesValidator) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.admittedLiabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_AdmittedLiabilitiesRegister, AdmittedLiabilitiesRegister.class);
|
this.admittedLiabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_AdmittedLiabilitiesRegister, AdmittedLiabilitiesRegister.class);
|
||||||
this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
this.securityMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class);
|
this.securityMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class);
|
||||||
|
this.fieldValuesValidator = fieldValuesValidator;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -68,9 +74,7 @@ public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
registries.forEach((registry -> {
|
registries.forEach((registry -> {
|
||||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
if (isDuplicateInMap(registry).isEmpty()) {
|
||||||
Collection<AdmittedLiabilitiesRegister> admittedLiabilitiesRegistersBySessionIdAndCompanyId = admittedLiabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
|
||||||
if (admittedLiabilitiesRegistersBySessionIdAndCompanyId == null || admittedLiabilitiesRegistersBySessionIdAndCompanyId.isEmpty()) {
|
|
||||||
insertAdmittedLiabilitiesRegister(registry);
|
insertAdmittedLiabilitiesRegister(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -118,4 +122,11 @@ public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements
|
||||||
RegistryStatus.FAIL.getKey()
|
RegistryStatus.FAIL.getKey()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<AdmittedLiabilitiesRegister> isDuplicateInMap(Registry entity) {
|
||||||
|
Map<String, ? extends Comparable<?>> fieldValues = Map.of("companyId", entity.getCompanyId(), "sessionId", entity.getSessionId());
|
||||||
|
return Optional.ofNullable(admittedLiabilitiesRegisterMap.getFirstObjectByFieldValues(fieldValues));
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,19 +17,22 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.registry.CoveredLiabilitiesRegisterNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.registry.CoveredLiabilitiesRegisterNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.RegistryDesignation;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryInstrumentType;
|
||||||
|
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||||
|
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.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_CDLR;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_CDLR;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class CoveredLiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
|
public class CoveredLiabilitiesRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<Registry, CoveredLiabilitiesRegister> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<CoveredLiabilitiesRegister> coveredLiabilitiesRegisterMap;
|
private final Imdg<CoveredLiabilitiesRegister> coveredLiabilitiesRegisterMap;
|
||||||
|
|
@ -69,9 +72,7 @@ public class CoveredLiabilitiesRegisterService extends QueueConsumer implements
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
registries.forEach((registry -> {
|
registries.forEach((registry -> {
|
||||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
if (isDuplicateInMap(registry).isEmpty()) {
|
||||||
Collection<CoveredLiabilitiesRegister> coveredLiabilitiesRegisterBySessionIdAndCompanyId = coveredLiabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
|
||||||
if (coveredLiabilitiesRegisterBySessionIdAndCompanyId == null || coveredLiabilitiesRegisterBySessionIdAndCompanyId.isEmpty()) {
|
|
||||||
insertCoveredLiabilitiesRegister(registry);
|
insertCoveredLiabilitiesRegister(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -113,4 +114,10 @@ public class CoveredLiabilitiesRegisterService extends QueueConsumer implements
|
||||||
RegistryUnit.T.getKey(),
|
RegistryUnit.T.getKey(),
|
||||||
RegistryStatus.OK.getKey());
|
RegistryStatus.OK.getKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<CoveredLiabilitiesRegister> isDuplicateInMap(Registry entity) {
|
||||||
|
Map<String, ? extends Comparable<?>> fieldValues = Map.of("companyId", entity.getCompanyId(), "sessionId", entity.getSessionId());
|
||||||
|
return Optional.ofNullable(coveredLiabilitiesRegisterMap.getFirstObjectByFieldValues(fieldValues));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,12 +23,12 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_GRRT;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class DepoBalanceRegisterService extends QueueConsumer implements InitializingBean {
|
public class DepoBalanceRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<Registry, DepoBalanceRegister> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<DepoBalanceRegister> depoBalanceRegisterMap;
|
private final Imdg<DepoBalanceRegister> depoBalanceRegisterMap;
|
||||||
|
|
@ -53,7 +53,7 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
||||||
|
|
||||||
public void depoBalanceRegisterNew(BaseRequest<LauncherCommandRequest> userRequest) {
|
public void depoBalanceRegisterNew(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||||
log.debug("LauncherCommandRequest received from {}", createRegistry_GRRT.topic());
|
log.debug("LauncherCommandRequest received from {}", createRegistry_GRRT.topic());
|
||||||
if (userRequest.getRequestPayload().getCompanyId() == null ){
|
if (userRequest.getRequestPayload().getCompanyId() == null) {
|
||||||
log.debug("No companyId in LauncherCommandRequest.id={}", userRequest.getId());
|
log.debug("No companyId in LauncherCommandRequest.id={}", userRequest.getId());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -65,9 +65,7 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
registries.forEach((registry -> {
|
registries.forEach((registry -> {
|
||||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
if (isDuplicateInMap(registry).isEmpty()) {
|
||||||
Collection<DepoBalanceRegister> depoBalanceRegisterBySessionIdAndCompanyId = depoBalanceRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
|
||||||
if (depoBalanceRegisterBySessionIdAndCompanyId == null || depoBalanceRegisterBySessionIdAndCompanyId.isEmpty()) {
|
|
||||||
insertDepoBalanceRegister(registry);
|
insertDepoBalanceRegister(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -99,4 +97,10 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
||||||
pb.sql(codeSql.build())
|
pb.sql(codeSql.build())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<DepoBalanceRegister> isDuplicateInMap(Registry entity) {
|
||||||
|
Map<String, ? extends Comparable<?>> fieldValues = Map.of("companyId", entity.getCompanyId(), "sessionId", entity.getSessionId());
|
||||||
|
return Optional.ofNullable(depoBalanceRegisterMap.getFirstObjectByFieldValues(fieldValues));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -22,13 +22,13 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_GORD;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_GORD;
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_GORR;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_GORR;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class DepoPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean {
|
public class DepoPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<PaymentInstruction, DepoPaymentInstructionRegister> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<DepoPaymentInstructionRegister> depoPaymentInstructionRegisterMap;
|
private final Imdg<DepoPaymentInstructionRegister> depoPaymentInstructionRegisterMap;
|
||||||
|
|
@ -36,6 +36,7 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
||||||
private final Imdg<Session> sessionMap;
|
private final Imdg<Session> sessionMap;
|
||||||
private final Imdg<TradingClearingRegistry> tradingClearingRegistryMap;
|
private final Imdg<TradingClearingRegistry> tradingClearingRegistryMap;
|
||||||
private final Imdg<InOutDirectionDictionary> InOutDirectionDictionaryMap;
|
private final Imdg<InOutDirectionDictionary> InOutDirectionDictionaryMap;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public DepoPaymentInstructionRegisterService(Consumer<String, Object> kafkaQueue,
|
public DepoPaymentInstructionRegisterService(Consumer<String, Object> kafkaQueue,
|
||||||
Producer<String, Object> kafkaProducer,
|
Producer<String, Object> kafkaProducer,
|
||||||
|
|
@ -65,15 +66,11 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (Session session : actualSessions) {
|
for (Session session : actualSessions) {
|
||||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("sessionId", session.getId()));
|
Map<String, ? extends Comparable<?>> fieldValues = Map.of("sessionId", session.getId());
|
||||||
Collection<PaymentInstruction> paymentInstructionBySessionId =
|
Collection<PaymentInstruction> paymentInstructionBySessionId =
|
||||||
paymentInstructionMap.getCollectionObjectsByFieldValues(fieldValues);
|
paymentInstructionMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||||
for (PaymentInstruction paymentInstruction : paymentInstructionBySessionId) {
|
for (PaymentInstruction paymentInstruction : paymentInstructionBySessionId) {
|
||||||
DepoPaymentInstructionRegister depoPaymentInstructionRegister = depoPaymentInstructionRegisterMap.getFirstObjectByFieldValues(Map.of(
|
if (isDuplicateInMap(paymentInstruction).isEmpty()) {
|
||||||
"companyId", paymentInstruction.getSenderId(),
|
|
||||||
"sessionId", paymentInstruction.getSessionId())
|
|
||||||
);
|
|
||||||
if (depoPaymentInstructionRegister == null){
|
|
||||||
insertDepoPaymentInstructionRegister(paymentInstruction);
|
insertDepoPaymentInstructionRegister(paymentInstruction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -90,7 +87,7 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
||||||
depoPaymentInstructionRegister.setCreated(Instant.now());
|
depoPaymentInstructionRegister.setCreated(Instant.now());
|
||||||
depoPaymentInstructionRegister.setUpdated(Instant.now());
|
depoPaymentInstructionRegister.setUpdated(Instant.now());
|
||||||
depoPaymentInstructionRegister.setCompanyId(paymentInstruction.getSenderId());
|
depoPaymentInstructionRegister.setCompanyId(paymentInstruction.getSenderId());
|
||||||
depoPaymentInstructionRegister.setTradingClearingRegistryType(tradingClearingRegistry.getTradingClearingRegistryType() );
|
depoPaymentInstructionRegister.setTradingClearingRegistryType(tradingClearingRegistry.getTradingClearingRegistryType());
|
||||||
depoPaymentInstructionRegister.setTradingClearingRegistry(tradingClearingRegistry.getCode());
|
depoPaymentInstructionRegister.setTradingClearingRegistry(tradingClearingRegistry.getCode());
|
||||||
depoPaymentInstructionRegister.setCbCode("RNCB-BE-01");
|
depoPaymentInstructionRegister.setCbCode("RNCB-BE-01");
|
||||||
depoPaymentInstructionRegister.setQuantity(paymentInstruction.getCreditLeg_amount());
|
depoPaymentInstructionRegister.setQuantity(paymentInstruction.getCreditLeg_amount());
|
||||||
|
|
@ -101,4 +98,12 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
||||||
depoPaymentInstructionRegisterMap.insert(depoPaymentInstructionRegister);
|
depoPaymentInstructionRegisterMap.insert(depoPaymentInstructionRegister);
|
||||||
log.debug("inserted successfully DepoBalanceRegister entity with id: {}", depoPaymentInstructionRegister.getId());
|
log.debug("inserted successfully DepoBalanceRegister entity with id: {}", depoPaymentInstructionRegister.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<DepoPaymentInstructionRegister> isDuplicateInMap(PaymentInstruction entity) {
|
||||||
|
return Optional.ofNullable(depoPaymentInstructionRegisterMap.getFirstObjectByFieldValues(Map.of(
|
||||||
|
"companyId", entity.getSenderId(),
|
||||||
|
"sessionId", entity.getSessionId())
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,12 +26,12 @@ import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_EXLR;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_EXLR;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
|
public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<Registry, ExcludeLiabilitiesRegister> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<ExcludeLiabilitiesRegister> excludeLiabilitiesRegisterMap;
|
private final Imdg<ExcludeLiabilitiesRegister> excludeLiabilitiesRegisterMap;
|
||||||
|
|
@ -73,9 +73,7 @@ public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
registries.forEach((registry -> {
|
registries.forEach((registry -> {
|
||||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
if (isDuplicateInMap(registry).isEmpty()) {
|
||||||
Collection<ExcludeLiabilitiesRegister> excludeLiabilitiesRegisterBySessionIdAndCompanyId = excludeLiabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
|
||||||
if (excludeLiabilitiesRegisterBySessionIdAndCompanyId == null || excludeLiabilitiesRegisterBySessionIdAndCompanyId.isEmpty()) {
|
|
||||||
insertExcludeLiabilitiesRegister(registry);
|
insertExcludeLiabilitiesRegister(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -122,4 +120,10 @@ public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements
|
||||||
RegistryUnit.T.getKey(),
|
RegistryUnit.T.getKey(),
|
||||||
RegistryStatus.FAIL.getKey());
|
RegistryStatus.FAIL.getKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<ExcludeLiabilitiesRegister> isDuplicateInMap(Registry entity) {
|
||||||
|
Map<String, ? extends Comparable<?>> fieldValues = Map.of("companyId", entity.getCompanyId(), "sessionId", entity.getSessionId());
|
||||||
|
return Optional.ofNullable(excludeLiabilitiesRegisterMap.getFirstObjectByFieldValues(fieldValues));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,13 @@ package ru.spcex.clearing.registry.service;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param <T> - тип объекта по которому мы будем проверять наличие дубликата
|
||||||
|
* @param <T1> - тип объекта (реестра) который мы нашли как дубликат
|
||||||
|
* */
|
||||||
public interface ICheckDuplicate<T, T1> {
|
public interface ICheckDuplicate<T, T1> {
|
||||||
/**
|
/**
|
||||||
* @return возвращает optinal с дубликатом
|
* @return возвращает optional с дубликатом
|
||||||
* */
|
* */
|
||||||
Optional<T1> isDuplicateInMap(T entity);
|
Optional<T1> isDuplicateInMap(T entity);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,12 +28,12 @@ import ru.spcex.platform.utils.time.TimeUtil;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_LBSR;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_LBSR;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class LiabilitiesRegisterService extends QueueConsumer implements InitializingBean {
|
public class LiabilitiesRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<Registry, LiabilitiesRegister> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<LiabilitiesRegister> liabilitiesRegisterMap;
|
private final Imdg<LiabilitiesRegister> liabilitiesRegisterMap;
|
||||||
|
|
@ -72,9 +72,7 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial
|
||||||
Collection<Registry> registries = registryMap.getCollectionObjectsBySQL(sqlConditionForRegistry);
|
Collection<Registry> registries = registryMap.getCollectionObjectsBySQL(sqlConditionForRegistry);
|
||||||
//checking for duplicates
|
//checking for duplicates
|
||||||
registries.forEach((registry -> {
|
registries.forEach((registry -> {
|
||||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
if (isDuplicateInMap(registry).isEmpty()) {
|
||||||
Collection<LiabilitiesRegister> liabilitiesRegisterBySessionIdAndCompanyId = liabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
|
||||||
if (liabilitiesRegisterBySessionIdAndCompanyId == null || liabilitiesRegisterBySessionIdAndCompanyId.isEmpty()) {
|
|
||||||
insertLiabilitiesRegister(registry);
|
insertLiabilitiesRegister(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -142,4 +140,10 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial
|
||||||
RegistryInstrumentType.M.getKey(),
|
RegistryInstrumentType.M.getKey(),
|
||||||
RegistryUnit.T.getKey());
|
RegistryUnit.T.getKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<LiabilitiesRegister> isDuplicateInMap(Registry entity) {
|
||||||
|
Map<String, ? extends Comparable<?>> fieldValues = Map.of("companyId", entity.getCompanyId(), "sessionId", entity.getSessionId());
|
||||||
|
return Optional.ofNullable(liabilitiesRegisterMap.getFirstObjectByFieldValues(fieldValues));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,12 +26,12 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_GBRR;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_GBRR;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MoneyBalanceRegisterService extends QueueConsumer implements InitializingBean {
|
public class MoneyBalanceRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<Registry, MoneyBalanceRegister> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<MoneyBalanceRegister> moneyBalanceRegisterMap;
|
private final Imdg<MoneyBalanceRegister> moneyBalanceRegisterMap;
|
||||||
|
|
@ -73,15 +73,7 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
registries.forEach((registry -> {
|
registries.forEach((registry -> {
|
||||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of(
|
if (isDuplicateInMap(registry).isEmpty()) {
|
||||||
"companyId",
|
|
||||||
registry.getCompanyId(),
|
|
||||||
"sessionId",
|
|
||||||
registry.getSessionId()
|
|
||||||
)
|
|
||||||
);
|
|
||||||
Collection<MoneyBalanceRegister> moneyBalanceRegisterBySessionIdAndCompanyId = moneyBalanceRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
|
||||||
if (moneyBalanceRegisterBySessionIdAndCompanyId == null || moneyBalanceRegisterBySessionIdAndCompanyId.isEmpty()) {
|
|
||||||
insertMoneyBalanceRegister(registry);
|
insertMoneyBalanceRegister(registry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -170,4 +162,14 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia
|
||||||
return prdct;
|
return prdct;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<MoneyBalanceRegister> isDuplicateInMap(Registry entity) {
|
||||||
|
Map<String, ? extends Comparable<?>> fieldValues = Map.of(
|
||||||
|
"companyId",
|
||||||
|
entity.getCompanyId(),
|
||||||
|
"sessionId",
|
||||||
|
entity.getSessionId()
|
||||||
|
);
|
||||||
|
return Optional.ofNullable(moneyBalanceRegisterMap.getFirstObjectByFieldValues(fieldValues));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,12 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static ru.spcex.clearing.registry.util.FieldValuesValidator.getFieldValuesOrThrowException;
|
|
||||||
import static ru.spcex.platform.enumeration.Task.createRegistry_GORR;
|
import static ru.spcex.platform.enumeration.Task.createRegistry_GORR;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MoneyPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean {
|
public class MoneyPaymentInstructionRegisterService extends QueueConsumer implements InitializingBean, ICheckDuplicate<PaymentInstruction, MoneyPaymentInstructionRegister> {
|
||||||
private final static String TOPIC_NAME = createRegistry_GORR.topic();
|
private final static String TOPIC_NAME = createRegistry_GORR.topic();
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
private final Imdg<MoneyPaymentInstructionRegister> moneyPaymentInstructionRegisterMap;
|
private final Imdg<MoneyPaymentInstructionRegister> moneyPaymentInstructionRegisterMap;
|
||||||
|
|
@ -52,16 +52,14 @@ public class MoneyPaymentInstructionRegisterService extends QueueConsumer implem
|
||||||
|
|
||||||
public void moneyPaymentInstructionRegisterNew(BaseRequest<LauncherCommandRequest> userRequest) {
|
public void moneyPaymentInstructionRegisterNew(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||||
log.debug("LauncherCommandRequest received from {}", TOPIC_NAME);
|
log.debug("LauncherCommandRequest received from {}", TOPIC_NAME);
|
||||||
Map<String, ? extends Comparable<?>> fieldValuesSectionMkr = getFieldValuesOrThrowException(Map.of("section", "MKR"));
|
Map<String, ? extends Comparable<?>> fieldValuesSectionMkr = Map.of("section", "MKR");
|
||||||
Collection<Session> actualSessions = sessionMap.getCollectionObjectsByFieldValues(fieldValuesSectionMkr);
|
Collection<Session> actualSessions = sessionMap.getCollectionObjectsByFieldValues(fieldValuesSectionMkr);
|
||||||
actualSessions.forEach(session -> {
|
actualSessions.forEach(session -> {
|
||||||
Map<String, ? extends Comparable<?>> fieldValuesSessionId = getFieldValuesOrThrowException(Map.of("sessionId", session.getId()));
|
Map<String, ? extends Comparable<?>> fieldValuesSessionId = Map.of("sessionId", session.getId());
|
||||||
Collection<PaymentInstruction> paymentInstructionBySessionId =
|
Collection<PaymentInstruction> paymentInstructionBySessionId =
|
||||||
paymentInstructionMap.getCollectionObjectsByFieldValues(fieldValuesSessionId);
|
paymentInstructionMap.getCollectionObjectsByFieldValues(fieldValuesSessionId);
|
||||||
for (PaymentInstruction paymentInstruction : paymentInstructionBySessionId) {
|
for (PaymentInstruction paymentInstruction : paymentInstructionBySessionId) {
|
||||||
Map<String, ? extends Comparable<?>> fieldValuesCompanyIdSessionId = getFieldValuesOrThrowException(Map.of("senderId", paymentInstruction.getSenderId(), "date", paymentInstruction.getClearingDate()));
|
if (isDuplicateInMap(paymentInstruction).isEmpty()) {
|
||||||
MoneyPaymentInstructionRegister moneyPaymentInstructionRegister = moneyPaymentInstructionRegisterMap.getFirstObjectByFieldValues(fieldValuesCompanyIdSessionId);
|
|
||||||
if (moneyPaymentInstructionRegister == null) {
|
|
||||||
insertMoneyPaymentInstructionRegister(paymentInstruction);
|
insertMoneyPaymentInstructionRegister(paymentInstruction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -84,4 +82,10 @@ public class MoneyPaymentInstructionRegisterService extends QueueConsumer implem
|
||||||
moneyPaymentInstructionRegisterMap.insert(moneyPaymentInstructionRegister);
|
moneyPaymentInstructionRegisterMap.insert(moneyPaymentInstructionRegister);
|
||||||
log.debug("inserted successfully PaymentInstruction entity with id: {}", paymentInstruction.getId());
|
log.debug("inserted successfully PaymentInstruction entity with id: {}", paymentInstruction.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<MoneyPaymentInstructionRegister> isDuplicateInMap(PaymentInstruction entity) {
|
||||||
|
Map<String, ? extends Comparable<?>> fieldValuesCompanyIdSessionId = Map.of("senderId", entity.getSenderId(), "date", entity.getClearingDate());
|
||||||
|
return Optional.ofNullable(moneyPaymentInstructionRegisterMap.getFirstObjectByFieldValues(fieldValuesCompanyIdSessionId));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class FieldValuesValidator {
|
public class FieldValuesValidator {
|
||||||
public static List<String> validateFieldValues(Map<String, ?> map) {
|
public static List<String> delete2(Map<String, ?> map) {
|
||||||
List<String> errors = new ArrayList<>();
|
List<String> errors = new ArrayList<>();
|
||||||
map.forEach((key, value) -> {
|
map.forEach((key, value) -> {
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
|
|
@ -21,8 +21,8 @@ public class FieldValuesValidator {
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, ? extends Comparable<?>> getFieldValuesOrThrowException(Map<String, ? extends Comparable<?>> fieldValues) {
|
public static Map<String, ? extends Comparable<?>> delete(Map<String, ? extends Comparable<?>> fieldValues) {
|
||||||
List<String> errors = validateFieldValues(fieldValues);
|
List<String> errors = delete2(fieldValues);
|
||||||
if (!errors.isEmpty()) {
|
if (!errors.isEmpty()) {
|
||||||
Optional<String> error = errors.stream().findFirst();
|
Optional<String> error = errors.stream().findFirst();
|
||||||
throw new IllegalStateException("Illegal state of field and values :" + error.orElse(null));
|
throw new IllegalStateException("Illegal state of field and values :" + error.orElse(null));
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package ru.spcex.clearing.registry.validation;
|
||||||
|
|
||||||
|
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
|
||||||
|
|
||||||
|
public enum RegistryError implements IErrorEnumId {
|
||||||
|
ValidationOfFieldValuesMapError(19000L);
|
||||||
|
|
||||||
|
private final Long id;
|
||||||
|
|
||||||
|
RegistryError(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package ru.spcex.clearing.registry.validation;
|
||||||
|
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка наличия компании с переданными в запросе companySymbol и companySymbolCode (реквизиты)
|
||||||
|
*/
|
||||||
|
public class ValuesOfMapNonNullRule implements IValidationRule<ImdgValidationContext<Map<String, ? >>> {
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<Map<String, ? >> context) {
|
||||||
|
Map<String, ? > map = context.getValidatedObject();
|
||||||
|
for (Map.Entry<String, ?> entry : map.entrySet()) {
|
||||||
|
String key = entry.getKey();
|
||||||
|
Object value = entry.getValue();
|
||||||
|
if (value == null) {
|
||||||
|
return of(RegistryError.ValidationOfFieldValuesMapError, key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue