Исправил ListingBuilder.

This commit is contained in:
psemenkov 2023-04-18 17:03:53 +03:00
parent f71ae406a2
commit 1c32803b60
8 changed files with 124 additions and 88 deletions

View file

@ -10,78 +10,75 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSe
import ru.spcex.platform.enumeration.Market;
import ru.spcex.platform.enumeration.Status;
import java.math.BigDecimal;
import java.time.Instant;
public class ListingBuilder {
private Instant created;
private Long securityId;
private BigDecimal lotSize;
private final String market = Market.mkrs.getKey();
private String symbolCode;
private String symbolName;
private String tradingCurrency;
private final String workflowStatus = Status.Active.getKey();
public Listing byNewMms(MoneyMarketSecurity mms, MoneyMarketSecurityNewRequest mmsReq) {
public static ListingBuilder builder() {
return new ListingBuilder();
}
private ListingBuilder(){}
public ListingBuilder append(MoneyMarketSecurity mms){
this.created = mms.getCreated();
this.securityId = mms.getId();
this.symbolCode = mms.getSecuritySymbol();
this.symbolName = mms.getFullName();
this.tradingCurrency = mms.getNominalCurrency();
return this;
}
public ListingBuilder append(MoneyMarketSecurityNewRequest mmsReq){
this.lotSize = mmsReq.getLotSize();
return this;
}
public ListingBuilder append(EquitySecurity equitySecurity){
this.created = equitySecurity.getCreated();
this.securityId = equitySecurity.getId();
this.symbolCode = equitySecurity.getSecuritySymbol();
this.symbolName = equitySecurity.getFullName();
return this;
}
public ListingBuilder append(EquitySecurityNewRequest request){
this.lotSize = request.getLotSize();
return this;
}
public ListingBuilder append(FixedIncomeSecurity fixedIncomeSecurity){
this.created = fixedIncomeSecurity.getCreated();
this.securityId = fixedIncomeSecurity.getId();
this.symbolCode = fixedIncomeSecurity.getSecuritySymbol();
this.symbolName = fixedIncomeSecurity.getFullName();
this.tradingCurrency = fixedIncomeSecurity.getNominalCurrency();
return this;
}
public ListingBuilder append(FixedIncomeSecurityNewRequest request){
this.lotSize = request.getLotSize();
return this;
}
public Listing build(){
Listing listing = new Listing();
listing.setCreated(mms.getCreated());
listing.setSecurityId(mms.getId());
listing.setLotSize(mmsReq.getLotSize());
listing.setMarket(market);
listing.setSymbolCode(mms.getSecuritySymbol());
listing.setSymbolName(mms.getFullName());
listing.setTradingCurrency(mms.getNominalCurrency());
listing.setWorkflowStatus(Status.Active.getKey());
return listing;
}
public Listing byUpdateMms(MoneyMarketSecurity mms, Listing listing) {
listing.setSecurityId(mms.getId());
listing.setSymbolCode(mms.getSecuritySymbol());
listing.setSymbolName(mms.getFullName());
listing.setTradingCurrency(mms.getNominalCurrency());
listing.setWorkflowStatus(mms.getWorkflowStatus());
listing.setLotSize(mms.getLotSize());
listing.setUpdated(mms.getUpdated());
return listing;
}
public Listing byNewEquity(EquitySecurity equitySecurity, EquitySecurityNewRequest request) {
Listing listing = new Listing();
listing.setCreated(equitySecurity.getCreated());
listing.setSecurityId(equitySecurity.getId());
listing.setLotSize(request.getLotSize());
listing.setMarket(market);
listing.setSymbolCode(equitySecurity.getSecuritySymbol());
listing.setSymbolName(equitySecurity.getFullName());
// listing.setTradingCurrency(equitySecurity.getNominalCurrency());
listing.setWorkflowStatus(Status.Active.getKey());
return listing;
}
public Listing byUpdateEquity(EquitySecurity equitySecurity, Listing listing) {
listing.setSecurityId(equitySecurity.getId());
listing.setSymbolCode(equitySecurity.getSecuritySymbol());
listing.setSymbolName(equitySecurity.getFullName());
listing.setWorkflowStatus(equitySecurity.getWorkflowStatus());
listing.setMarket(market);
listing.setLotSize(equitySecurity.getLotSize());
listing.setUpdated(equitySecurity.getUpdated());
return listing;
}
public Listing byNewFixedIncome(FixedIncomeSecurity instant, FixedIncomeSecurityNewRequest request) {
Listing listing = new Listing();
listing.setCreated(instant.getCreated());
listing.setSecurityId(instant.getId());
listing.setLotSize(request.getLotSize());
listing.setMarket(market);
listing.setSymbolCode(instant.getSecuritySymbol());
listing.setSymbolName(instant.getFullName());
listing.setTradingCurrency(instant.getNominalCurrency());
listing.setWorkflowStatus(Status.Active.getKey());
return listing;
}
public Listing byFixedIncomeEquity(FixedIncomeSecurity fixedIncomeSecurity, Listing listing) {
listing.setSecurityId(fixedIncomeSecurity.getId());
listing.setSymbolCode(fixedIncomeSecurity.getSecuritySymbol());
listing.setSymbolName(fixedIncomeSecurity.getFullName());
listing.setTradingCurrency(fixedIncomeSecurity.getNominalCurrency());
listing.setWorkflowStatus(fixedIncomeSecurity.getWorkflowStatus());
listing.setLotSize(fixedIncomeSecurity.getLotSize());
listing.setUpdated(fixedIncomeSecurity.getUpdated());
listing.setCreated(this.created);
listing.setSecurityId(this.securityId);
listing.setLotSize(this.lotSize);
listing.setMarket(this.market);
listing.setSymbolCode(this.symbolCode);
listing.setSymbolName(this.symbolName);
listing.setTradingCurrency(this.tradingCurrency);
listing.setWorkflowStatus(this.workflowStatus);
return listing;
}
}

View file

@ -21,6 +21,7 @@ import ru.spcex.clearing.securities.component.ListingBuilder;
import ru.spcex.clearing.securities.validation.ValidationProvider;
import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.Market;
import ru.spcex.platform.enumeration.UserRole;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId;
@ -40,7 +41,6 @@ public class EquitySecurityService extends QueueConsumer implements Initializing
private final ValidationProvider validation;
private final UserRoleVerification userRoleVerification;
private final ValidationHelper validationHelper;
private final ListingBuilder listingBuilder = new ListingBuilder();
@Autowired
public EquitySecurityService(Consumer<String, Object> kafkaQueue,
@ -103,7 +103,8 @@ public class EquitySecurityService extends QueueConsumer implements Initializing
Imdg<Listing> listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
//одним скопом выполняем реквест
equityImdg.insert(equity);
Listing listing = listingBuilder.byNewEquity(equity, req);
Listing listing = ListingBuilder.builder()
.append(equity).append(req).build();
listingMap.insert(listing);
//и сохраняем обновленный
// reqInfoMap.insert(reqInfo);
@ -148,7 +149,7 @@ public class EquitySecurityService extends QueueConsumer implements Initializing
log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), equity.getId());
return null;
}
listing = listingBuilder.byUpdateEquity(equity, listing);
listing = updateListingByEquity(equity, listing);
listingImdg.update(listing);
return null;
}
@ -179,4 +180,15 @@ public class EquitySecurityService extends QueueConsumer implements Initializing
listingImdg.update(listing);
return null;
}
public Listing updateListingByEquity(EquitySecurity equitySecurity, Listing listing) {
listing.setSecurityId(equitySecurity.getId());
listing.setSymbolCode(equitySecurity.getSecuritySymbol());
listing.setSymbolName(equitySecurity.getFullName());
listing.setWorkflowStatus(equitySecurity.getWorkflowStatus());
listing.setMarket(Market.mkrs.getKey());
listing.setLotSize(equitySecurity.getLotSize());
listing.setUpdated(equitySecurity.getUpdated());
return listing;
}
}

View file

@ -40,7 +40,6 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
private final ValidationProvider validation;
private final UserRoleVerification userRoleVerification;
private final ValidationHelper validationHelper;
private final ListingBuilder listingBuilder = new ListingBuilder();
@Autowired
public FixedIncomeSecurityService(Consumer<String, Object> kafkaQueue,
@ -108,7 +107,8 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
Imdg<Listing> listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
//одним скопом выполняем реквест
fixedIncomeImdg.insert(fixedIncome);
Listing listing = listingBuilder.byNewFixedIncome(fixedIncome, req);
Listing listing = ListingBuilder.builder()
.append(fixedIncome).append(req).build();
listingMap.insert(listing);
//и сохраняем обновленный
// reqInfoMap.insert(reqInfo);
@ -159,7 +159,7 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
log.error("updateFixedIncome id {} couldn't find listing with securityId {}", req.getId(), fixedIncome.getId());
return null;
}
listing = listingBuilder.byFixedIncomeEquity(fixedIncome, listing);
listing = updateListingByFixedIncome(fixedIncome, listing);
listingImdg.update(listing);
return null;
}
@ -190,4 +190,15 @@ public class FixedIncomeSecurityService extends QueueConsumer implements Initial
listingImdg.update(listing);
return null;
}
public Listing updateListingByFixedIncome(FixedIncomeSecurity fixedIncomeSecurity, Listing listing) {
listing.setSecurityId(fixedIncomeSecurity.getId());
listing.setSymbolCode(fixedIncomeSecurity.getSecuritySymbol());
listing.setSymbolName(fixedIncomeSecurity.getFullName());
listing.setTradingCurrency(fixedIncomeSecurity.getNominalCurrency());
listing.setWorkflowStatus(fixedIncomeSecurity.getWorkflowStatus());
listing.setLotSize(fixedIncomeSecurity.getLotSize());
listing.setUpdated(fixedIncomeSecurity.getUpdated());
return listing;
}
}

View file

@ -48,7 +48,6 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
private final UserRoleVerification userRoleVerification;
private final ValidationHelper validationHelper;
private final IMessageResolver messageResolver;
private final ListingBuilder listingBuilder = new ListingBuilder();
@Autowired
public MoneyMarketSecurityService(Consumer<String, Object> kafkaQueue,
@ -133,7 +132,8 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
Imdg<Listing> listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
//одним скопом выполняем реквест
moneyMarketSecurityMap.insert(mms);
Listing listing = listingBuilder.byNewMms(mms, req);
Listing listing = ListingBuilder.builder()
.append(mms).append(req).build();
listingMap.insert(listing);
//и сохраняем обновленный
// reqInfoMap.insert(reqInfo);
@ -191,7 +191,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId());
return null;
}
listing = listingBuilder.byUpdateMms(mms, listing);
listing = updateListingByMms(mms, listing);
listingImdg.update(listing);
return null;
}
@ -229,4 +229,15 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
listingImdg.update(listing);
return null;
}
public Listing updateListingByMms(MoneyMarketSecurity mms, Listing listing) {
listing.setSecurityId(mms.getId());
listing.setSymbolCode(mms.getSecuritySymbol());
listing.setSymbolName(mms.getFullName());
listing.setTradingCurrency(mms.getNominalCurrency());
listing.setWorkflowStatus(mms.getWorkflowStatus());
listing.setLotSize(mms.getLotSize());
listing.setUpdated(mms.getUpdated());
return listing;
}
}

View file

@ -19,7 +19,6 @@ import ru.clearing.classes.statics.data.misc.Listing;
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
import ru.clearing.platform.dictionary.*;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.securities.component.ListingBuilder;
import ru.spcex.clearing.securities.config.ErrorResolverConfig;
import ru.spcex.clearing.securities.config.ValidationConfig;
import ru.spcex.clearing.securities.service.cud.*;
@ -74,7 +73,7 @@ public abstract class AbstractServiceTest {
public static Long issuerId = 13243L;
public static String termType = "TermType";
public static String currencyCode = "RUB";
protected final ListingBuilder listingBuilder = new ListingBuilder();
@Captor
protected ArgumentCaptor<ProducerRecord> producerRecord;
@MockBean

View file

@ -10,6 +10,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityUpdateRequest;
import ru.spcex.clearing.securities.component.ListingBuilder;
import ru.spcex.clearing.securities.service.cud.EquitySecurityService;
import ru.spcex.clearing.test.MatcherFactory;
@ -44,7 +45,8 @@ public class EquitySecurityServiceTest extends AbstractServiceTest {
final EquitySecurity equityPrediction = getEquitySecurity();
final EquitySecurityNewRequest request = getEquitySecurityNewRequest(equityPrediction);
Listing listingPrediction = listingBuilder.byNewEquity(equityPrediction, request);
Listing listingPrediction = ListingBuilder.builder()
.append(equityPrediction).append(request).build();
//ACT
String jsonString = getJsonStringForNew(request, ID);
@ -83,7 +85,7 @@ public class EquitySecurityServiceTest extends AbstractServiceTest {
equityPrediction.setLotSize(BigDecimal.valueOf(updateLotSize));
final EquitySecurityUpdateRequest request = getEquitySecurityUpdateRequest(equityPrediction);
Listing listingPrediction = new Listing();
listingPrediction = listingBuilder.byUpdateEquity(equityPrediction, listingPrediction);
listingPrediction = equitySecurityService.updateListingByEquity(equityPrediction, listingPrediction);
listingImdg.insert(listingPrediction);
//ACT
@ -121,7 +123,7 @@ public class EquitySecurityServiceTest extends AbstractServiceTest {
equityPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
Listing listingPrediction = new Listing();
listingPrediction = listingBuilder.byUpdateEquity(equityPrediction, listingPrediction);
listingPrediction = equitySecurityService.updateListingByEquity(equityPrediction, listingPrediction);
listingImdg.insert(listingPrediction);
listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());

View file

@ -10,6 +10,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.FixedIncomeSecurityUpdateRequest;
import ru.spcex.clearing.securities.component.ListingBuilder;
import ru.spcex.clearing.securities.service.cud.FixedIncomeSecurityService;
import ru.spcex.clearing.test.MatcherFactory;
@ -45,7 +46,8 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest {
final FixedIncomeSecurity fixedIncomePrediction = getFixedIncomeSecurity();
final FixedIncomeSecurityNewRequest request = getFixedIncomeSecurityNewRequest(fixedIncomePrediction);
Listing listingPrediction = listingBuilder.byNewFixedIncome(fixedIncomePrediction, request);
Listing listingPrediction = ListingBuilder.builder()
.append(fixedIncomePrediction).append(request).build();
//ACT
String jsonString = getJsonStringForNew(request, ID);
@ -85,7 +87,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest {
fixedIncomePrediction.setLotSize(BigDecimal.valueOf(updateLotSize));
final FixedIncomeSecurityUpdateRequest request = getFixedIncomeSecurityUpdateRequest(fixedIncomePrediction);
Listing listingPrediction = new Listing();
listingPrediction = listingBuilder.byFixedIncomeEquity(fixedIncomePrediction, listingPrediction);
listingPrediction = fixedIncomeSecurityService.updateListingByFixedIncome(fixedIncomePrediction, listingPrediction);
listingImdg.insert(listingPrediction);
//ACT
@ -123,7 +125,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest {
fixedIncomePrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
Listing listingPrediction = new Listing();
listingPrediction = listingBuilder.byFixedIncomeEquity(fixedIncomePrediction, listingPrediction);
listingPrediction = fixedIncomeSecurityService.updateListingByFixedIncome(fixedIncomePrediction, listingPrediction);
listingImdg.insert(listingPrediction);
listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());

View file

@ -13,6 +13,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSe
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest;
import ru.spcex.clearing.platform.messaging.service.RequestInfo;
import ru.spcex.clearing.platform.messaging.service.Status;
import ru.spcex.clearing.securities.component.ListingBuilder;
import ru.spcex.clearing.securities.service.cud.MoneyMarketSecurityService;
import ru.spcex.clearing.test.MatcherFactory;
import ru.spcex.platform.imdg.api.Imdg;
@ -64,7 +65,8 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest{
.getMoneyMarketSecurity();
final MoneyMarketSecurityNewRequest keyRequest = moneyMarketSecurityFactory
.getMoneyMarketSecurityNewRequest();
Listing listingPrediction = listingBuilder.byNewMms(moneyMarketSecurityPrediction, keyRequest);
Listing listingPrediction = ListingBuilder.builder()
.append(moneyMarketSecurityPrediction).append(keyRequest).build();
//ACT
String jsonString = getJsonStringForNew(keyRequest, ID);
@ -102,7 +104,7 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest{
moneyMarketSecurityPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
Listing listingPrediction = new Listing();
listingPrediction = listingBuilder.byUpdateMms(moneyMarketSecurityPrediction, listingPrediction);
listingPrediction = moneyMarketSecurityService.updateListingByMms(moneyMarketSecurityPrediction, listingPrediction);
listingImdg.insert(listingPrediction);
listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey());
@ -154,7 +156,7 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest{
keyRequest.setTermType(termType);
keyRequest.setLotSize(updateLotSize);
Listing listingPrediction = new Listing();
listingPrediction = listingBuilder.byUpdateMms(moneyMarketSecurityPrediction, listingPrediction);
listingPrediction = moneyMarketSecurityService.updateListingByMms(moneyMarketSecurityPrediction, listingPrediction);
listingImdg.insert(listingPrediction);
listingPrediction.setLotSize(updateLotSize);