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.schedule.LauncherCommandRequest;
|
||||
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.ImdgProvider;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Collection;
|
||||
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;
|
||||
|
||||
@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 Imdg<AdmittedLiabilitiesRegister> admittedLiabilitiesRegisterMap;
|
||||
private final Imdg<Registry> registryMap;
|
||||
private final Imdg<Company> companyMap;
|
||||
private final Imdg<Security> securityMap;
|
||||
|
||||
private final Function<Map<String, ?>, IValidator> fieldValuesValidator;
|
||||
@Autowired
|
||||
public AdmittedLiabilitiesRegisterService(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider) {
|
||||
ImdgProvider imdgProvider, Function<Map<String, ?>, IValidator> fieldValuesValidator) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.admittedLiabilitiesRegisterMap = imdgProvider.getImdg(IMDGDistributedNames.Map_AdmittedLiabilitiesRegister, AdmittedLiabilitiesRegister.class);
|
||||
this.registryMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.securityMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class);
|
||||
this.fieldValuesValidator = fieldValuesValidator;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -68,9 +74,7 @@ public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements
|
|||
return;
|
||||
}
|
||||
registries.forEach((registry -> {
|
||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
||||
Collection<AdmittedLiabilitiesRegister> admittedLiabilitiesRegistersBySessionIdAndCompanyId = admittedLiabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||
if (admittedLiabilitiesRegistersBySessionIdAndCompanyId == null || admittedLiabilitiesRegistersBySessionIdAndCompanyId.isEmpty()) {
|
||||
if (isDuplicateInMap(registry).isEmpty()) {
|
||||
insertAdmittedLiabilitiesRegister(registry);
|
||||
}
|
||||
}
|
||||
|
|
@ -118,4 +122,11 @@ public class AdmittedLiabilitiesRegisterService extends QueueConsumer implements
|
|||
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.schedule.LauncherCommandRequest;
|
||||
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.ImdgProvider;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Collection;
|
||||
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;
|
||||
|
||||
@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 Imdg<CoveredLiabilitiesRegister> coveredLiabilitiesRegisterMap;
|
||||
|
|
@ -69,9 +72,7 @@ public class CoveredLiabilitiesRegisterService extends QueueConsumer implements
|
|||
return;
|
||||
}
|
||||
registries.forEach((registry -> {
|
||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
||||
Collection<CoveredLiabilitiesRegister> coveredLiabilitiesRegisterBySessionIdAndCompanyId = coveredLiabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||
if (coveredLiabilitiesRegisterBySessionIdAndCompanyId == null || coveredLiabilitiesRegisterBySessionIdAndCompanyId.isEmpty()) {
|
||||
if (isDuplicateInMap(registry).isEmpty()) {
|
||||
insertCoveredLiabilitiesRegister(registry);
|
||||
}
|
||||
}
|
||||
|
|
@ -113,4 +114,10 @@ public class CoveredLiabilitiesRegisterService extends QueueConsumer implements
|
|||
RegistryUnit.T.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.util.Collection;
|
||||
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;
|
||||
|
||||
@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 Imdg<DepoBalanceRegister> depoBalanceRegisterMap;
|
||||
|
|
@ -53,7 +53,7 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
|||
|
||||
public void depoBalanceRegisterNew(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||
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());
|
||||
return;
|
||||
}
|
||||
|
|
@ -65,9 +65,7 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
|||
return;
|
||||
}
|
||||
registries.forEach((registry -> {
|
||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
||||
Collection<DepoBalanceRegister> depoBalanceRegisterBySessionIdAndCompanyId = depoBalanceRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||
if (depoBalanceRegisterBySessionIdAndCompanyId == null || depoBalanceRegisterBySessionIdAndCompanyId.isEmpty()) {
|
||||
if (isDuplicateInMap(registry).isEmpty()) {
|
||||
insertDepoBalanceRegister(registry);
|
||||
}
|
||||
}
|
||||
|
|
@ -99,4 +97,10 @@ public class DepoBalanceRegisterService extends QueueConsumer implements Initial
|
|||
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.util.Collection;
|
||||
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_GORR;
|
||||
|
||||
@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 Imdg<DepoPaymentInstructionRegister> depoPaymentInstructionRegisterMap;
|
||||
|
|
@ -36,6 +36,7 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
|||
private final Imdg<Session> sessionMap;
|
||||
private final Imdg<TradingClearingRegistry> tradingClearingRegistryMap;
|
||||
private final Imdg<InOutDirectionDictionary> InOutDirectionDictionaryMap;
|
||||
|
||||
@Autowired
|
||||
public DepoPaymentInstructionRegisterService(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaProducer,
|
||||
|
|
@ -65,15 +66,11 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
|||
return;
|
||||
}
|
||||
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 =
|
||||
paymentInstructionMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||
for (PaymentInstruction paymentInstruction : paymentInstructionBySessionId) {
|
||||
DepoPaymentInstructionRegister depoPaymentInstructionRegister = depoPaymentInstructionRegisterMap.getFirstObjectByFieldValues(Map.of(
|
||||
"companyId", paymentInstruction.getSenderId(),
|
||||
"sessionId", paymentInstruction.getSessionId())
|
||||
);
|
||||
if (depoPaymentInstructionRegister == null){
|
||||
if (isDuplicateInMap(paymentInstruction).isEmpty()) {
|
||||
insertDepoPaymentInstructionRegister(paymentInstruction);
|
||||
}
|
||||
}
|
||||
|
|
@ -90,7 +87,7 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
|||
depoPaymentInstructionRegister.setCreated(Instant.now());
|
||||
depoPaymentInstructionRegister.setUpdated(Instant.now());
|
||||
depoPaymentInstructionRegister.setCompanyId(paymentInstruction.getSenderId());
|
||||
depoPaymentInstructionRegister.setTradingClearingRegistryType(tradingClearingRegistry.getTradingClearingRegistryType() );
|
||||
depoPaymentInstructionRegister.setTradingClearingRegistryType(tradingClearingRegistry.getTradingClearingRegistryType());
|
||||
depoPaymentInstructionRegister.setTradingClearingRegistry(tradingClearingRegistry.getCode());
|
||||
depoPaymentInstructionRegister.setCbCode("RNCB-BE-01");
|
||||
depoPaymentInstructionRegister.setQuantity(paymentInstruction.getCreditLeg_amount());
|
||||
|
|
@ -101,4 +98,12 @@ public class DepoPaymentInstructionRegisterService extends QueueConsumer impleme
|
|||
depoPaymentInstructionRegisterMap.insert(depoPaymentInstructionRegister);
|
||||
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.util.Collection;
|
||||
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;
|
||||
|
||||
@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 Imdg<ExcludeLiabilitiesRegister> excludeLiabilitiesRegisterMap;
|
||||
|
|
@ -73,9 +73,7 @@ public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements
|
|||
return;
|
||||
}
|
||||
registries.forEach((registry -> {
|
||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
||||
Collection<ExcludeLiabilitiesRegister> excludeLiabilitiesRegisterBySessionIdAndCompanyId = excludeLiabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||
if (excludeLiabilitiesRegisterBySessionIdAndCompanyId == null || excludeLiabilitiesRegisterBySessionIdAndCompanyId.isEmpty()) {
|
||||
if (isDuplicateInMap(registry).isEmpty()) {
|
||||
insertExcludeLiabilitiesRegister(registry);
|
||||
}
|
||||
}
|
||||
|
|
@ -122,4 +120,10 @@ public class ExcludeLiabilitiesRegisterService extends QueueConsumer implements
|
|||
RegistryUnit.T.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;
|
||||
|
||||
/**
|
||||
* @param <T> - тип объекта по которому мы будем проверять наличие дубликата
|
||||
* @param <T1> - тип объекта (реестра) который мы нашли как дубликат
|
||||
* */
|
||||
public interface ICheckDuplicate<T, T1> {
|
||||
/**
|
||||
* @return возвращает optinal с дубликатом
|
||||
* @return возвращает optional с дубликатом
|
||||
* */
|
||||
Optional<T1> isDuplicateInMap(T entity);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,12 +28,12 @@ import ru.spcex.platform.utils.time.TimeUtil;
|
|||
import java.time.Instant;
|
||||
import java.util.Collection;
|
||||
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;
|
||||
|
||||
@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 Imdg<LiabilitiesRegister> liabilitiesRegisterMap;
|
||||
|
|
@ -72,9 +72,7 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial
|
|||
Collection<Registry> registries = registryMap.getCollectionObjectsBySQL(sqlConditionForRegistry);
|
||||
//checking for duplicates
|
||||
registries.forEach((registry -> {
|
||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of("companyId", registry.getCompanyId(), "sessionId", registry.getSessionId()));
|
||||
Collection<LiabilitiesRegister> liabilitiesRegisterBySessionIdAndCompanyId = liabilitiesRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||
if (liabilitiesRegisterBySessionIdAndCompanyId == null || liabilitiesRegisterBySessionIdAndCompanyId.isEmpty()) {
|
||||
if (isDuplicateInMap(registry).isEmpty()) {
|
||||
insertLiabilitiesRegister(registry);
|
||||
}
|
||||
}
|
||||
|
|
@ -142,4 +140,10 @@ public class LiabilitiesRegisterService extends QueueConsumer implements Initial
|
|||
RegistryInstrumentType.M.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.util.Collection;
|
||||
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;
|
||||
|
||||
@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 Imdg<MoneyBalanceRegister> moneyBalanceRegisterMap;
|
||||
|
|
@ -73,15 +73,7 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia
|
|||
return;
|
||||
}
|
||||
registries.forEach((registry -> {
|
||||
Map<String, ? extends Comparable<?>> fieldValues = getFieldValuesOrThrowException(Map.of(
|
||||
"companyId",
|
||||
registry.getCompanyId(),
|
||||
"sessionId",
|
||||
registry.getSessionId()
|
||||
)
|
||||
);
|
||||
Collection<MoneyBalanceRegister> moneyBalanceRegisterBySessionIdAndCompanyId = moneyBalanceRegisterMap.getCollectionObjectsByFieldValues(fieldValues);
|
||||
if (moneyBalanceRegisterBySessionIdAndCompanyId == null || moneyBalanceRegisterBySessionIdAndCompanyId.isEmpty()) {
|
||||
if (isDuplicateInMap(registry).isEmpty()) {
|
||||
insertMoneyBalanceRegister(registry);
|
||||
}
|
||||
}
|
||||
|
|
@ -170,4 +162,14 @@ public class MoneyBalanceRegisterService extends QueueConsumer implements Initia
|
|||
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.util.Collection;
|
||||
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;
|
||||
|
||||
@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 Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final Imdg<MoneyPaymentInstructionRegister> moneyPaymentInstructionRegisterMap;
|
||||
|
|
@ -52,16 +52,14 @@ public class MoneyPaymentInstructionRegisterService extends QueueConsumer implem
|
|||
|
||||
public void moneyPaymentInstructionRegisterNew(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||
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);
|
||||
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 =
|
||||
paymentInstructionMap.getCollectionObjectsByFieldValues(fieldValuesSessionId);
|
||||
for (PaymentInstruction paymentInstruction : paymentInstructionBySessionId) {
|
||||
Map<String, ? extends Comparable<?>> fieldValuesCompanyIdSessionId = getFieldValuesOrThrowException(Map.of("senderId", paymentInstruction.getSenderId(), "date", paymentInstruction.getClearingDate()));
|
||||
MoneyPaymentInstructionRegister moneyPaymentInstructionRegister = moneyPaymentInstructionRegisterMap.getFirstObjectByFieldValues(fieldValuesCompanyIdSessionId);
|
||||
if (moneyPaymentInstructionRegister == null) {
|
||||
if (isDuplicateInMap(paymentInstruction).isEmpty()) {
|
||||
insertMoneyPaymentInstructionRegister(paymentInstruction);
|
||||
}
|
||||
}
|
||||
|
|
@ -84,4 +82,10 @@ public class MoneyPaymentInstructionRegisterService extends QueueConsumer implem
|
|||
moneyPaymentInstructionRegisterMap.insert(moneyPaymentInstructionRegister);
|
||||
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;
|
||||
|
||||
public class FieldValuesValidator {
|
||||
public static List<String> validateFieldValues(Map<String, ?> map) {
|
||||
public static List<String> delete2(Map<String, ?> map) {
|
||||
List<String> errors = new ArrayList<>();
|
||||
map.forEach((key, value) -> {
|
||||
if (key == null) {
|
||||
|
|
@ -21,8 +21,8 @@ public class FieldValuesValidator {
|
|||
return errors;
|
||||
}
|
||||
|
||||
public static Map<String, ? extends Comparable<?>> getFieldValuesOrThrowException(Map<String, ? extends Comparable<?>> fieldValues) {
|
||||
List<String> errors = validateFieldValues(fieldValues);
|
||||
public static Map<String, ? extends Comparable<?>> delete(Map<String, ? extends Comparable<?>> fieldValues) {
|
||||
List<String> errors = delete2(fieldValues);
|
||||
if (!errors.isEmpty()) {
|
||||
Optional<String> error = errors.stream().findFirst();
|
||||
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