securities-service Поправил (вернул) listing с MoneyMarketSecurityService.java
This commit is contained in:
parent
49d13fba43
commit
8991d915b3
5 changed files with 76 additions and 44 deletions
|
|
@ -1,7 +1,11 @@
|
||||||
package ru.spcex.clearing.securities.config;
|
package ru.spcex.clearing.securities.config;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
|
import ru.spcex.clearing.util.services.RequestHelper;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.clearing.util.services.IMDGMessageResolver;
|
import ru.spcex.clearing.util.services.IMDGMessageResolver;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.securities.errors;
|
||||||
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
|
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
|
||||||
|
|
||||||
public enum SecuritiesError implements IErrorEnumId {
|
public enum SecuritiesError implements IErrorEnumId {
|
||||||
|
GeneralError(1000L),
|
||||||
UserVerifyDenial(1001L), // 'Нет прав на проведение данной операции
|
UserVerifyDenial(1001L), // 'Нет прав на проведение данной операции
|
||||||
RequiredFieldIsEmpty(1002L),
|
RequiredFieldIsEmpty(1002L),
|
||||||
WrongFieldValue(1004L),
|
WrongFieldValue(1004L),
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import ru.spcex.clearing.platform.messaging.service.RequestInfo;
|
||||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
import ru.spcex.clearing.platform.messaging.service.Status;
|
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
import ru.spcex.clearing.securities.component.ListingBuilder;
|
import ru.spcex.clearing.securities.component.ListingBuilder;
|
||||||
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
import ru.spcex.clearing.securities.validation.ValidationProvider;
|
import ru.spcex.clearing.securities.validation.ValidationProvider;
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
|
|
@ -32,9 +33,11 @@ import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||||
import ru.spcex.platform.imdg.validation.Stored;
|
import ru.spcex.platform.imdg.validation.Stored;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -99,7 +102,6 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
|
||||||
}
|
}
|
||||||
|
|
||||||
private RequestInfoUpdate newMoneyMarket(BaseRequest<MoneyMarketSecurityNewRequest> userRequest) {
|
private RequestInfoUpdate newMoneyMarket(BaseRequest<MoneyMarketSecurityNewRequest> userRequest) {
|
||||||
ImdgTransaction transaction = imdgProvider.newTransaction();
|
|
||||||
MoneyMarketSecurityNewRequest req = userRequest.getRequestPayload();
|
MoneyMarketSecurityNewRequest req = userRequest.getRequestPayload();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
@ -136,20 +138,25 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
|
||||||
} else {
|
} else {
|
||||||
mms.setWorkflowStatus(req.getWorkflowStatus());
|
mms.setWorkflowStatus(req.getWorkflowStatus());
|
||||||
}
|
}
|
||||||
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
try {
|
try {
|
||||||
transaction.beginTransaction();
|
transaction.beginTransaction();
|
||||||
Imdg<MoneyMarketSecurity> moneyMarketSecurityMap = transaction.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class);
|
Imdg<MoneyMarketSecurity> moneyMarketSecurityTxMap = transaction.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class);
|
||||||
Imdg<Listing> listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
Imdg<Listing> listingTxMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||||
//одним скопом выполняем реквест
|
//одним скопом выполняем реквест
|
||||||
moneyMarketSecurityMap.insert(mms);
|
moneyMarketSecurityTxMap.insert(mms);
|
||||||
// Listing listing = ListingBuilder.builder()
|
Listing listing = ListingBuilder.builder()
|
||||||
// .append(mms).append(req).build();
|
.append(mms).append(req).build();
|
||||||
// listingMap.insert(listing);
|
listingTxMap.insert(listing);
|
||||||
transaction.commitTransaction();
|
transaction.commitTransaction();
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
log.error("Error at create security, rollback transaction. {}", ExceptionUtils.getStackTrace(e));
|
||||||
transaction.rollbackTransaction();
|
transaction.rollbackTransaction();
|
||||||
// RequestInfo.update(reqInfo, Status.Error, ExceptionUtils.getStackTrace(e));
|
String errorMsg = messageResolver.resolve(new EnumMessage(SecuritiesError.GeneralError));
|
||||||
// requestInfoImdg.insert(reqInfo);
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
}
|
}
|
||||||
log.debug("successfully processed, request id {}, new object id {}", userRequest.getId(), mms.getId());
|
log.debug("successfully processed, request id {}, new object id {}", userRequest.getId(), mms.getId());
|
||||||
return null; // default success
|
return null; // default success
|
||||||
|
|
@ -174,36 +181,52 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
|
||||||
}
|
}
|
||||||
MoneyMarketSecurity mms = validator.getStored(Stored.PresentById);
|
MoneyMarketSecurity mms = validator.getStored(Stored.PresentById);
|
||||||
if (mms == null) log.error("Validator return null stored mms object.");
|
if (mms == null) log.error("Validator return null stored mms object.");
|
||||||
Instant updateTime = Instant.now();
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
mms.setUpdated(updateTime);
|
try {
|
||||||
mms.setStartDate(req.getStartDate());
|
Instant updateTime = Instant.now();
|
||||||
mms.setEndDate(req.getEndDate());
|
mms.setUpdated(updateTime);
|
||||||
mms.setNominalValue(req.getNominalValue());
|
mms.setStartDate(req.getStartDate());
|
||||||
mms.setLotSize(req.getLotSize());
|
mms.setEndDate(req.getEndDate());
|
||||||
mms.setNominalCurrency(req.getNominalCurrency());
|
mms.setNominalValue(req.getNominalValue());
|
||||||
mms.setInstrumentType(req.getInstrumentType());
|
mms.setLotSize(req.getLotSize());
|
||||||
mms.setFullName(req.getFullName());
|
mms.setNominalCurrency(req.getNominalCurrency());
|
||||||
mms.setShortName(req.getShortName());
|
mms.setInstrumentType(req.getInstrumentType());
|
||||||
mms.setFullNameEng(req.getFullNameEng());
|
mms.setFullName(req.getFullName());
|
||||||
mms.setShortNameEng(req.getShortNameEng());
|
mms.setShortName(req.getShortName());
|
||||||
mms.setSecuritySymbol(req.getSecuritySymbol());
|
mms.setFullNameEng(req.getFullNameEng());
|
||||||
mms.setTermType(req.getTermType());
|
mms.setShortNameEng(req.getShortNameEng());
|
||||||
mms.setIsin(req.getIsin());
|
mms.setSecuritySymbol(req.getSecuritySymbol());
|
||||||
mms.setIssuerId(req.getIssuerId());
|
mms.setTermType(req.getTermType());
|
||||||
mms.setSecurityId(mms.getId());
|
mms.setIsin(req.getIsin());
|
||||||
mms.setDescription(req.getDescription());
|
mms.setIssuerId(req.getIssuerId());
|
||||||
if (req.getWorkflowStatus() != null) {
|
mms.setSecurityId(mms.getId());
|
||||||
mms.setWorkflowStatus(req.getWorkflowStatus());
|
mms.setDescription(req.getDescription());
|
||||||
}
|
if (req.getWorkflowStatus() != null) {
|
||||||
|
mms.setWorkflowStatus(req.getWorkflowStatus());
|
||||||
|
}
|
||||||
|
|
||||||
moneyMarketSecurityMap.update(mms);
|
transaction.beginTransaction();
|
||||||
// Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", mms.getId()));
|
Imdg<MoneyMarketSecurity> moneyMarketSecurityTxMap = transaction.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class);
|
||||||
// if (listing == null) {
|
Imdg<Listing> listingTxMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||||
// log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId());
|
|
||||||
// return null;
|
moneyMarketSecurityTxMap.update(mms);
|
||||||
// }
|
Listing listing = listingTxMap.getSingleObjectByFieldValues(Map.of("securityId", mms.getId()));
|
||||||
// listing = updateListingByMms(mms, listing);
|
if (listing == null) {
|
||||||
// listingImdg.update(listing);
|
log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
listing = updateListingByMms(mms, listing);
|
||||||
|
listingTxMap.update(listing);
|
||||||
|
transaction.commitTransaction();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
log.error("Error at update security {}, rollback transaction. {}", req.getId(), ExceptionUtils.getStackTrace(e));
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
String errorMsg = messageResolver.resolve(new EnumMessage(SecuritiesError.GeneralError));
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.spcex.clearing.securities.service;
|
package ru.spcex.clearing.securities.service;
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||||
|
|
@ -62,9 +63,10 @@ public class EquitySecurityServiceTest extends AbstractServiceTest {
|
||||||
EQUITY_SECURITY_MATCHER.assertMatch(equityResult, equityPrediction);
|
EQUITY_SECURITY_MATCHER.assertMatch(equityResult, equityPrediction);
|
||||||
|
|
||||||
Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", equityPrediction.getId()));
|
Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", equityPrediction.getId()));
|
||||||
listingPrediction.setId(listingResult.getId());
|
Assertions.assertNull(listingResult);
|
||||||
listingPrediction.setSecurityId(listingResult.getSecurityId());
|
// listingPrediction.setId(listingResult.getId());
|
||||||
LISTING_MATCHER.assertMatch(listingResult, listingPrediction);
|
// listingPrediction.setSecurityId(listingResult.getSecurityId());
|
||||||
|
// LISTING_MATCHER.assertMatch(listingResult, listingPrediction);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.spcex.clearing.securities.service;
|
package ru.spcex.clearing.securities.service;
|
||||||
|
|
||||||
import org.apache.kafka.clients.consumer.MockConsumer;
|
import org.apache.kafka.clients.consumer.MockConsumer;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||||
|
|
@ -63,9 +64,10 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest {
|
||||||
FIXED_INCOME_SECURITY_MATCHER.assertMatch(equityResult, fixedIncomePrediction);
|
FIXED_INCOME_SECURITY_MATCHER.assertMatch(equityResult, fixedIncomePrediction);
|
||||||
|
|
||||||
Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", fixedIncomePrediction.getId()));
|
Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", fixedIncomePrediction.getId()));
|
||||||
listingPrediction.setId(listingResult.getId());
|
Assertions.assertNull(listingResult);
|
||||||
listingPrediction.setSecurityId(listingResult.getSecurityId());
|
// listingPrediction.setId(listingResult.getId());
|
||||||
LISTING_MATCHER.assertMatch(listingResult, listingPrediction);
|
// listingPrediction.setSecurityId(listingResult.getSecurityId());
|
||||||
|
// LISTING_MATCHER.assertMatch(listingResult, listingPrediction);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue