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.setWorkflowStatus(request.getStatus());
ratesForUpdate.setUpdated(Instant.now());
ratesImdg.update(ratesForUpdate);
log.debug("successfully processed, updated rates id {}", ratesForUpdate.getId());

View file

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

View file

@ -9,6 +9,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.misc.SCrossRate;
import ru.clearing.platform.dictionary.CurrencyCodeDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
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 IMessageResolver messageResolver;
private final Imdg<SCrossRate> sCrossRateImdg;
private final Imdg<CurrencyCodeDictionary> currencyCodeDictionaryImdg;
private final SCrossRateFacade sCrossRateFacade;
public SCrossRatesMessageListener(Consumer<String, Object> kafkaQueue,
@ -45,6 +47,7 @@ public class SCrossRatesMessageListener extends QueueConsumer implements Initial
this.messageResolver = messageResolver;
this.sCrossRateImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SCrossRate, SCrossRate.class);
this.sCrossRateFacade = sCrossRateFacade;
this.currencyCodeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, CurrencyCodeDictionary.class);
}
@Override
@ -61,6 +64,11 @@ public class SCrossRatesMessageListener extends QueueConsumer implements Initial
SCrossRateGatewayRequest payload = sCrossRatesReq.getRequestPayload();
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();
Collection<Long> sCrossRateIds = sCrossRateImdg.getCollectionIdsByPredicate(
predicateBuilder.and(
@ -95,4 +103,11 @@ public class SCrossRatesMessageListener extends QueueConsumer implements Initial
updateRequest.setRate(sCrossRateElem.getPrice());
return updateRequest;
}
private CurrencyCodeDictionary currencyByCode(String code) {
ImdgPredicateBuilder predicateBuilder = currencyCodeDictionaryImdg.predicateBuilder();
return currencyCodeDictionaryImdg.getFirstObjectByPredicate(
predicateBuilder.equals("code", code)
);
}
}