This commit is contained in:
parent
96b00a84ab
commit
bbc8a76a7e
4 changed files with 145 additions and 1 deletions
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>ru.spcex.clearing</groupId>
|
||||
<artifactId>clearing-parent</artifactId>
|
||||
<version>SPCEX-3.22.285</version>
|
||||
<version>SPCEX-3.22.295</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>default-management</artifactId>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
package ru.spcex.clearing.dflt.management.listener;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.misc.OvernightSettings;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.dflt.management.service.OrderCurrencyService;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.misc.OvernightSettingsNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.platform.enumeration.OvernightType;
|
||||
import ru.spcex.platform.enumeration.Task;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
@Service
|
||||
public class TaskListener extends QueueConsumer implements InitializingBean {
|
||||
protected final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final OrderCurrencyService orderCurrencyService;
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<OvernightSettings> overnightSettingsImdg;
|
||||
|
||||
@Autowired
|
||||
public TaskListener(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaProducer,
|
||||
ImdgProvider imdgProvider,
|
||||
UserRoleVerification userRoleVerification,
|
||||
OrderCurrencyService orderCurrencyService) {
|
||||
super(kafkaQueue, kafkaProducer);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
|
||||
this.orderCurrencyService = orderCurrencyService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() {
|
||||
callback(OvernightSettingsNewRequest.class)
|
||||
.setConsumer(this::createOrder)
|
||||
.forDestination(Task.CROR.topic(), callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
private void createOrder(BaseRequest<OvernightSettingsNewRequest> newReq) {
|
||||
Collection<Long> registries = orderCurrencyService.getCurrencyRegistry();
|
||||
for (Long registryId : registries) {
|
||||
Registry registry = registryImdg.getSingleObjectByID(registryId);
|
||||
Optional<OvernightSettings> overnightSettings = orderCurrencyService.findOvernightSettingsByCompany(registry.getCompanyId());
|
||||
Optional<OvernightType> overnightType = overnightSettings
|
||||
.map(settings -> IEnumKey.getEnumByKey(OvernightType.class, settings.getOvernightType()));
|
||||
|
||||
if (overnightType.isPresent() && overnightType.get() == OvernightType.SPOT) {
|
||||
|
||||
} else if (overnightType.isEmpty() || overnightType.get() == OvernightType.SWAP) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
package ru.spcex.clearing.dflt.management.service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.clearing.classes.statics.data.misc.OvernightSettings;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.platform.enumeration.Market;
|
||||
import ru.spcex.platform.enumeration.RegistryStatus;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
|
||||
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
||||
|
||||
@Service
|
||||
public class OrderCurrencyService {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private ImdgProvider imdgProvider;
|
||||
private Imdg<Registry> registryImdg;
|
||||
private final Imdg<OvernightSettings> overnightSettingsImdg;
|
||||
|
||||
public OrderCurrencyService(ImdgProvider imdgProvider,
|
||||
UserRoleVerification userRoleVerification) {
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.overnightSettingsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_OvernightSettings, OvernightSettings.class);
|
||||
}
|
||||
|
||||
|
||||
public Collection<Long> getCurrencyRegistry() {
|
||||
ImdgPredicateBuilder builder = registryImdg.predicateBuilder();
|
||||
ImdgPredicate registryPredicate = builder.and(
|
||||
builder.regex("registryCode", "^PM.*T"),
|
||||
builder.not(builder.equals("registryStatus", RegistryStatus.OK.getKey()))
|
||||
);
|
||||
|
||||
return registryImdg.getCollectionIdsByPredicate(registryPredicate);
|
||||
}
|
||||
|
||||
public Optional<OvernightSettings> findOvernightSettingsByCompany(Long companyId) {
|
||||
ImdgPredicateBuilder builder = overnightSettingsImdg.predicateBuilder();
|
||||
ImdgPredicate predicate = builder.and(
|
||||
builder.equals("market", Market.curr),
|
||||
builder.equals("companyId", companyId)
|
||||
);
|
||||
OvernightSettings overnightSettings = overnightSettingsImdg.getFirstObjectByPredicate(predicate);
|
||||
return Optional.ofNullable(overnightSettings);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package ru.spcex.platform.enumeration;
|
||||
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
public enum OvernightType implements IEnumKey {
|
||||
SWAP("SWAP"),
|
||||
SPOT("SPOT")
|
||||
;
|
||||
|
||||
private final String key;
|
||||
|
||||
OvernightType(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue