etreschenkov 2026-04-17 12:38:07 +03:00
parent 496e92bfd6
commit 2f27d41972
3 changed files with 18 additions and 2 deletions

View file

@ -51,6 +51,7 @@ public class RatesFacade implements IClearingFacade {
ratesForUpdate.setValue(request.getValue()); ratesForUpdate.setValue(request.getValue());
ratesForUpdate.setWorkflowStatus(request.getStatus()); ratesForUpdate.setWorkflowStatus(request.getStatus());
ratesForUpdate.setUpdated(Instant.now());
ratesImdg.update(ratesForUpdate); ratesImdg.update(ratesForUpdate);
log.debug("successfully processed, updated rates id {}", ratesForUpdate.getId()); log.debug("successfully processed, updated rates id {}", ratesForUpdate.getId());

View file

@ -30,7 +30,7 @@ public class SCrossRateFacade {
sCrossRate.setCreated(Instant.now()); sCrossRate.setCreated(Instant.now());
sCrossRate.setDate(req.getDate()); sCrossRate.setDate(req.getDate());
sCrossRate.setCurrency(req.getCurrency()); sCrossRate.setCurrency(req.getCurrency());
sCrossRate.setUnitRate(req.getRate()); sCrossRate.setUnitRate(req.getUnitRate());
sCrossRate.setFaceValue(req.getFaceValue()); sCrossRate.setFaceValue(req.getFaceValue());
sCrossRate.setRate(req.getRate()); sCrossRate.setRate(req.getRate());
sCrossRateImdg.insert(sCrossRate); sCrossRateImdg.insert(sCrossRate);
@ -38,7 +38,7 @@ public class SCrossRateFacade {
public void update(SCrossRateUpdateRequest req) { public void update(SCrossRateUpdateRequest req) {
SCrossRate sCrossRate = sCrossRateImdg.getSingleObjectByID(req.getId()); SCrossRate sCrossRate = sCrossRateImdg.getSingleObjectByID(req.getId());
sCrossRate.setUnitRate(req.getRate()); sCrossRate.setUnitRate(req.getUnitRate());
sCrossRate.setFaceValue(req.getFaceValue()); sCrossRate.setFaceValue(req.getFaceValue());
sCrossRate.setRate(req.getRate()); sCrossRate.setRate(req.getRate());
sCrossRate.setUpdated(Instant.now()); sCrossRate.setUpdated(Instant.now());

View file

@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.misc.SCrossRate; import ru.clearing.classes.statics.data.misc.SCrossRate;
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
@ -31,6 +32,7 @@ public class SCrossRatesMessageListener extends QueueConsumer implements Initial
private final UserRoleVerification userRoleVerification; private final UserRoleVerification userRoleVerification;
private final IMessageResolver messageResolver; private final IMessageResolver messageResolver;
private final Imdg<SCrossRate> sCrossRateImdg; private final Imdg<SCrossRate> sCrossRateImdg;
private final Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
private final SCrossRateFacade sCrossRateFacade; private final SCrossRateFacade sCrossRateFacade;
public SCrossRatesMessageListener(Consumer<String, Object> kafkaQueue, public SCrossRatesMessageListener(Consumer<String, Object> kafkaQueue,
@ -45,6 +47,7 @@ public class SCrossRatesMessageListener extends QueueConsumer implements Initial
this.messageResolver = messageResolver; this.messageResolver = messageResolver;
this.sCrossRateImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SCrossRate, SCrossRate.class); this.sCrossRateImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SCrossRate, SCrossRate.class);
this.sCrossRateFacade = sCrossRateFacade; this.sCrossRateFacade = sCrossRateFacade;
this.currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
} }
@Override @Override
@ -61,6 +64,11 @@ public class SCrossRatesMessageListener extends QueueConsumer implements Initial
SCrossRateGatewayRequest payload = sCrossRatesReq.getRequestPayload(); SCrossRateGatewayRequest payload = sCrossRatesReq.getRequestPayload();
for (CurrencyRateGatewayElem elem : payload.getCrossRateElems()) { for (CurrencyRateGatewayElem elem : payload.getCrossRateElems()) {
CurrencyCodeDictionary codeDictionary = currencyByCode(elem.getBaseCurrencyLetterCode());
if (codeDictionary == null) {
log.debug("Skip creating sCrossRate gateway element with code {}", elem.getBaseCurrencyLetterCode());
continue;
}
ImdgPredicateBuilder predicateBuilder = sCrossRateImdg.predicateBuilder(); ImdgPredicateBuilder predicateBuilder = sCrossRateImdg.predicateBuilder();
Collection<Long> sCrossRateIds = sCrossRateImdg.getCollectionIdsByPredicate( Collection<Long> sCrossRateIds = sCrossRateImdg.getCollectionIdsByPredicate(
predicateBuilder.and( predicateBuilder.and(
@ -95,4 +103,11 @@ public class SCrossRatesMessageListener extends QueueConsumer implements Initial
updateRequest.setRate(sCrossRateElem.getPrice()); updateRequest.setRate(sCrossRateElem.getPrice());
return updateRequest; return updateRequest;
} }
private CurrencyCodeDictionary currencyByCode(String code) {
ImdgPredicateBuilder predicateBuilder = currencyCodeDictionaryImdg.predicateBuilder();
return currencyCodeDictionaryImdg.getFirstObjectByPredicate(
predicateBuilder.equals("code", code)
);
}
} }