rename and new stages for companies request
This commit is contained in:
parent
d0409a243e
commit
53fab62830
17 changed files with 222 additions and 175 deletions
|
|
@ -3,7 +3,7 @@ package ru.spcex.clearing.gatewayapi.config;
|
||||||
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 ru.spcex.clearing.gatewayapi.logic.Stage;
|
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||||
import ru.spcex.clearing.gatewayapi.logic.listings.*;
|
import ru.spcex.clearing.gatewayapi.logic.listings_fond.*;
|
||||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
|
@ -14,8 +14,8 @@ import java.util.List;
|
||||||
public class PipelineConfiguration {
|
public class PipelineConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public List<Stage<ListingsRequestParam>> listingsRequestPipeline(ImdgProvider imdgProvider, KafkaSender kafkaSender) {
|
public List<Stage<FondListingsRequestParam>> listingsRequestPipeline(ImdgProvider imdgProvider, KafkaSender kafkaSender) {
|
||||||
List<Stage<ListingsRequestParam>> pipeline = new ArrayList<>();
|
List<Stage<FondListingsRequestParam>> pipeline = new ArrayList<>();
|
||||||
pipeline.add(new PrepareSecurities());
|
pipeline.add(new PrepareSecurities());
|
||||||
pipeline.add(new PrepareIssuerCompanies());
|
pipeline.add(new PrepareIssuerCompanies());
|
||||||
pipeline.add(new ValidateIncomeSecurities());
|
pipeline.add(new ValidateIncomeSecurities());
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import ru.spcex.clearing.gatewayapi.request.CompaniesRequest;
|
import ru.spcex.clearing.gatewayapi.request.CompaniesRequest;
|
||||||
import ru.spcex.clearing.gatewayapi.request.ListingsRequest;
|
import ru.spcex.clearing.gatewayapi.request.FondListingsRequest;
|
||||||
import ru.spcex.clearing.gatewayapi.response.CommonResponse;
|
import ru.spcex.clearing.gatewayapi.response.CommonResponse;
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
|
@ -26,13 +26,13 @@ public class GatewayController {
|
||||||
@ApiResponse(code = 400, message = "Ошибка валидации", response = CommonResponse.class)
|
@ApiResponse(code = 400, message = "Ошибка валидации", response = CommonResponse.class)
|
||||||
})
|
})
|
||||||
@RequestMapping(
|
@RequestMapping(
|
||||||
path = "/listings",
|
path = "/listing_fond",
|
||||||
method = RequestMethod.POST,
|
method = RequestMethod.POST,
|
||||||
consumes = MediaType.APPLICATION_JSON_VALUE,
|
consumes = MediaType.APPLICATION_JSON_VALUE,
|
||||||
produces = MediaType.APPLICATION_JSON_VALUE
|
produces = MediaType.APPLICATION_JSON_VALUE
|
||||||
)
|
)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public CommonResponse listings(@RequestBody ListingsRequest request) {
|
public CommonResponse listings(@RequestBody FondListingsRequest request) {
|
||||||
// todo pack it to abstract class
|
// todo pack it to abstract class
|
||||||
CommonResponse commonResponse = new CommonResponse();
|
CommonResponse commonResponse = new CommonResponse();
|
||||||
commonResponse.setId(request.getId());
|
commonResponse.setId(request.getId());
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import java.util.List;
|
||||||
|
|
||||||
public class CompaniesRequestParam {
|
public class CompaniesRequestParam {
|
||||||
private final CompaniesRequest companiesRequest;
|
private final CompaniesRequest companiesRequest;
|
||||||
private final List<MemberCompany> memberCompanyList = new ArrayList<>();
|
private List<MemberCompany> memberCompanyList = new ArrayList<>();
|
||||||
|
|
||||||
public CompaniesRequestParam(CompaniesRequest companiesRequest) {
|
public CompaniesRequestParam(CompaniesRequest companiesRequest) {
|
||||||
this.companiesRequest = companiesRequest;
|
this.companiesRequest = companiesRequest;
|
||||||
|
|
@ -21,4 +21,8 @@ public class CompaniesRequestParam {
|
||||||
public List<MemberCompany> getMemberCompanyList() {
|
public List<MemberCompany> getMemberCompanyList() {
|
||||||
return memberCompanyList;
|
return memberCompanyList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMemberCompanyList(List<MemberCompany> memberCompanyList) {
|
||||||
|
this.memberCompanyList = memberCompanyList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
|
public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
@ -105,6 +106,14 @@ public class PrepareMemberCompanies extends Stage<CompaniesRequestParam> {
|
||||||
memberCompany.getClientList().add(client);
|
memberCompany.getClientList().add(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<MemberCompany> filteredIssuerCompany = companyList.stream()
|
||||||
|
.filter(memberCompany -> !memberCompany.isInvalidData())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
// todo check list is empty
|
||||||
|
|
||||||
|
param.setMemberCompanyList(filteredIssuerCompany);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
package ru.spcex.clearing.gatewayapi.logic.companies;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
||||||
|
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||||
|
import ru.spcex.clearing.gatewayapi.request.objects.MemberCompany;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ValidateMemberCompanies extends Stage<CompaniesRequestParam> {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ProcessResult process(CompaniesRequestParam param) {
|
||||||
|
List<MemberCompany> memberCompanyList = param.getMemberCompanyList();
|
||||||
|
|
||||||
|
for (MemberCompany company : memberCompanyList) {
|
||||||
|
if (company.isInvalidData()) continue;
|
||||||
|
|
||||||
|
if (StringUtils.isEmpty(company.getShortName())) {
|
||||||
|
log.warn("Empty or null shortName for company (UUID = {}), skipped", company.getId());
|
||||||
|
company.setInvalidData(true);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// todo in progress...
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
|
||||||
|
|
||||||
import ru.spcex.clearing.gatewayapi.request.ListingsRequest;
|
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity;
|
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IssuerCompany;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class ListingsRequestParam {
|
|
||||||
private ListingsRequest listingsRequest;
|
|
||||||
private List<IncomeSecurity> securities = new ArrayList<>();
|
|
||||||
private List<IssuerCompany> issuerCompanyList = new ArrayList<>();
|
|
||||||
|
|
||||||
public ListingsRequestParam(ListingsRequest listingsRequest) {
|
|
||||||
this.listingsRequest = listingsRequest;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public ListingsRequest getListingsRequest() {
|
|
||||||
return listingsRequest;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<IncomeSecurity> getSecurities() {
|
|
||||||
return securities;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<IssuerCompany> getIssuerCompanyList() {
|
|
||||||
return issuerCompanyList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setListingsRequest(ListingsRequest listingsRequest) {
|
|
||||||
this.listingsRequest = listingsRequest;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSecurities(List<IncomeSecurity> securities) {
|
|
||||||
this.securities = securities;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIssuerCompanyList(List<IssuerCompany> issuerCompanyList) {
|
|
||||||
this.issuerCompanyList = issuerCompanyList;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -21,7 +21,7 @@ import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class CheckCompanyExist extends Stage<ListingsRequestParam> {
|
public class CheckCompanyExist extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
@ -35,7 +35,7 @@ public class CheckCompanyExist extends Stage<ListingsRequestParam> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IssuerCompany> companyList = param.getIssuerCompanyList();
|
List<IssuerCompany> companyList = param.getIssuerCompanyList();
|
||||||
|
|
||||||
for (IssuerCompany company : companyList) {
|
for (IssuerCompany company : companyList) {
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -10,8 +10,8 @@ import ru.clearing.classes.statics.data.misc.Listing;
|
||||||
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
||||||
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.CouponSchedule;
|
import ru.spcex.clearing.gatewayapi.request.objects.CouponSchedule;
|
||||||
|
import ru.spcex.clearing.gatewayapi.request.objects.FondSecurity;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeListing;
|
import ru.spcex.clearing.gatewayapi.request.objects.IncomeListing;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity;
|
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.Nominal;
|
import ru.spcex.clearing.gatewayapi.request.objects.Nominal;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.platform.enumeration.InstrumentType;
|
import ru.spcex.platform.enumeration.InstrumentType;
|
||||||
|
|
@ -22,7 +22,7 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
public class CheckSecurityExist extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final Imdg<EquitySecurity> equitySecurityImdg;
|
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||||
|
|
@ -40,12 +40,12 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IncomeSecurity> securities = param.getSecurities();
|
List<FondSecurity> securities = param.getSecurities();
|
||||||
|
|
||||||
for (IncomeSecurity incomeSecurity : securities) {
|
for (FondSecurity fondSecurity : securities) {
|
||||||
String instrumentType = incomeSecurity.getInstrumentType();
|
String instrumentType = fondSecurity.getInstrumentType();
|
||||||
String securitySymbol = incomeSecurity.getSecuritySymbol();
|
String securitySymbol = fondSecurity.getSecuritySymbol();
|
||||||
if (InstrumentType.BOND.equalsByKey(instrumentType)) {
|
if (InstrumentType.BOND.equalsByKey(instrumentType)) {
|
||||||
Collection<FixedIncomeSecurity> fixedIncomeSecurities = fixedIncomeSecurityImdg.getCollectionObjectsByFieldValues(
|
Collection<FixedIncomeSecurity> fixedIncomeSecurities = fixedIncomeSecurityImdg.getCollectionObjectsByFieldValues(
|
||||||
Map.of("securitySymbol", securitySymbol)
|
Map.of("securitySymbol", securitySymbol)
|
||||||
|
|
@ -57,10 +57,10 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
securitySymbol,
|
securitySymbol,
|
||||||
fixedIncomeSecurity.getId());
|
fixedIncomeSecurity.getId());
|
||||||
}
|
}
|
||||||
incomeSecurity.setAlreadyExist(true);
|
fondSecurity.setAlreadyExist(true);
|
||||||
incomeSecurity.setMapId(fixedIncomeSecurity.getId());
|
fondSecurity.setMapId(fixedIncomeSecurity.getId());
|
||||||
} else {
|
} else {
|
||||||
incomeSecurity.setAlreadyExist(false);
|
fondSecurity.setAlreadyExist(false);
|
||||||
}
|
}
|
||||||
} else if (InstrumentType.EQTY.equalsByKey(instrumentType)) {
|
} else if (InstrumentType.EQTY.equalsByKey(instrumentType)) {
|
||||||
Collection<EquitySecurity> equitySecurities = equitySecurityImdg.getCollectionObjectsByFieldValues(
|
Collection<EquitySecurity> equitySecurities = equitySecurityImdg.getCollectionObjectsByFieldValues(
|
||||||
|
|
@ -73,23 +73,23 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
securitySymbol,
|
securitySymbol,
|
||||||
equitySecurity.getId());
|
equitySecurity.getId());
|
||||||
}
|
}
|
||||||
incomeSecurity.setAlreadyExist(true);
|
fondSecurity.setAlreadyExist(true);
|
||||||
incomeSecurity.setMapId(equitySecurity.getId());
|
fondSecurity.setMapId(equitySecurity.getId());
|
||||||
} else {
|
} else {
|
||||||
incomeSecurity.setAlreadyExist(false);
|
fondSecurity.setAlreadyExist(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IncomeListing listing : incomeSecurity.getListingList()) {
|
for (IncomeListing listing : fondSecurity.getListingList()) {
|
||||||
if (listing.isInvalidData()) continue;
|
if (listing.isInvalidData()) continue;
|
||||||
|
|
||||||
if (!incomeSecurity.isAlreadyExist()) {
|
if (!fondSecurity.isAlreadyExist()) {
|
||||||
listing.setAlreadyExist(false);
|
listing.setAlreadyExist(false);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Collection<Listing> listingsFromImdg = listingImdg.getCollectionObjectsByFieldValues(
|
Collection<Listing> listingsFromImdg = listingImdg.getCollectionObjectsByFieldValues(
|
||||||
Map.of(
|
Map.of(
|
||||||
"securityId", incomeSecurity.getMapId(),
|
"securityId", fondSecurity.getMapId(),
|
||||||
"market", listing.getCode()
|
"market", listing.getCode()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -99,7 +99,7 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
Listing listingFromImdg = listingsFromImdg.iterator().next();
|
Listing listingFromImdg = listingsFromImdg.iterator().next();
|
||||||
if (listingsFromImdg.size() > 1) {
|
if (listingsFromImdg.size() > 1) {
|
||||||
log.warn("For security_id {} and market {} found > 1 listing, update first (id = {})",
|
log.warn("For security_id {} and market {} found > 1 listing, update first (id = {})",
|
||||||
incomeSecurity.getMapId(),
|
fondSecurity.getMapId(),
|
||||||
listing.getCode(),
|
listing.getCode(),
|
||||||
listingFromImdg.getId());
|
listingFromImdg.getId());
|
||||||
|
|
||||||
|
|
@ -109,16 +109,16 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (CouponSchedule couponSchedules : incomeSecurity.getCouponScheduleList()) {
|
for (CouponSchedule couponSchedules : fondSecurity.getCouponScheduleList()) {
|
||||||
if (couponSchedules.isInvalidData()) continue;
|
if (couponSchedules.isInvalidData()) continue;
|
||||||
|
|
||||||
if (!incomeSecurity.isAlreadyExist()) {
|
if (!fondSecurity.isAlreadyExist()) {
|
||||||
couponSchedules.setAlreadyExist(false);
|
couponSchedules.setAlreadyExist(false);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Collection<CouponPeriod> couponPeriodListFromImdg = couponPeriodImdg.getCollectionObjectsByFieldValues(
|
Collection<CouponPeriod> couponPeriodListFromImdg = couponPeriodImdg.getCollectionObjectsByFieldValues(
|
||||||
Map.of(
|
Map.of(
|
||||||
"securityId", incomeSecurity.getMapId(),
|
"securityId", fondSecurity.getMapId(),
|
||||||
"periodStartDate", couponSchedules.getPeriodStartDate(),
|
"periodStartDate", couponSchedules.getPeriodStartDate(),
|
||||||
"periodEndDate", couponSchedules.getPeriodEndDate()
|
"periodEndDate", couponSchedules.getPeriodEndDate()
|
||||||
)
|
)
|
||||||
|
|
@ -130,7 +130,7 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
if (couponPeriodListFromImdg.size() > 1) {
|
if (couponPeriodListFromImdg.size() > 1) {
|
||||||
log.warn("For securityId {}, periodStartDate {}, periodEndDate {} found > 1 couponPeriod, " +
|
log.warn("For securityId {}, periodStartDate {}, periodEndDate {} found > 1 couponPeriod, " +
|
||||||
"update first (id = {})",
|
"update first (id = {})",
|
||||||
incomeSecurity.getMapId(),
|
fondSecurity.getMapId(),
|
||||||
couponSchedules.getPeriodStartDate(),
|
couponSchedules.getPeriodStartDate(),
|
||||||
couponSchedules.getPeriodEndDate(),
|
couponSchedules.getPeriodEndDate(),
|
||||||
couponPeriod.getId());
|
couponPeriod.getId());
|
||||||
|
|
@ -140,13 +140,13 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Nominal nominal : incomeSecurity.getNominalList()) {
|
for (Nominal nominal : fondSecurity.getNominalList()) {
|
||||||
if (nominal.isInvalidData()) continue;
|
if (nominal.isInvalidData()) continue;
|
||||||
|
|
||||||
if (incomeSecurity.isAlreadyExist()) {
|
if (fondSecurity.isAlreadyExist()) {
|
||||||
Collection<FixedIncomeCashFlow> fixedIncomeCashFlowListFromImdg = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(
|
Collection<FixedIncomeCashFlow> fixedIncomeCashFlowListFromImdg = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(
|
||||||
Map.of(
|
Map.of(
|
||||||
"securityId", incomeSecurity.getMapId(),
|
"securityId", fondSecurity.getMapId(),
|
||||||
"valueDate", nominal.getDate()
|
"valueDate", nominal.getDate()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
@ -156,7 +156,7 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
FixedIncomeCashFlow fixedIncomeCashFlow = fixedIncomeCashFlowListFromImdg.iterator().next();
|
FixedIncomeCashFlow fixedIncomeCashFlow = fixedIncomeCashFlowListFromImdg.iterator().next();
|
||||||
if (fixedIncomeCashFlowListFromImdg.size() > 1) {
|
if (fixedIncomeCashFlowListFromImdg.size() > 1) {
|
||||||
log.warn("For securityId {}, valueDate {} found > 1 fixedIncomeCashFlow, update first (id = {})",
|
log.warn("For securityId {}, valueDate {} found > 1 fixedIncomeCashFlow, update first (id = {})",
|
||||||
incomeSecurity.getMapId(),
|
fondSecurity.getMapId(),
|
||||||
nominal.getDate(),
|
nominal.getDate(),
|
||||||
fixedIncomeCashFlow.getId());
|
fixedIncomeCashFlow.getId());
|
||||||
}
|
}
|
||||||
|
|
@ -167,7 +167,7 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
nominal.setAlreadyExist(false);
|
nominal.setAlreadyExist(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (CouponSchedule couponSchedule : incomeSecurity.getCouponScheduleList()) {
|
for (CouponSchedule couponSchedule : fondSecurity.getCouponScheduleList()) {
|
||||||
if (couponSchedule.isInvalidData()) continue;
|
if (couponSchedule.isInvalidData()) continue;
|
||||||
if (nominal.getDate().isBefore(couponSchedule.getPeriodStartDate()) || nominal.getDate().isAfter(couponSchedule.getPeriodEndDate()))
|
if (nominal.getDate().isBefore(couponSchedule.getPeriodStartDate()) || nominal.getDate().isAfter(couponSchedule.getPeriodEndDate()))
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -175,7 +175,7 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||||
nominal.setCouponNumber(couponSchedule.getCouponNumber());
|
nominal.setCouponNumber(couponSchedule.getCouponNumber());
|
||||||
}
|
}
|
||||||
if (nominal.getAccruedCoupon() == null || nominal.getCouponNumber() == null) {
|
if (nominal.getAccruedCoupon() == null || nominal.getCouponNumber() == null) {
|
||||||
log.warn("Can't find accrued_coupon OR coupon_number for nominal, security.UUID {}", incomeSecurity.getId());
|
log.warn("Can't find accrued_coupon OR coupon_number for nominal, security.UUID {}", fondSecurity.getId());
|
||||||
nominal.setInvalidData(true);
|
nominal.setInvalidData(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
|
import ru.spcex.clearing.gatewayapi.request.FondListingsRequest;
|
||||||
|
import ru.spcex.clearing.gatewayapi.request.objects.FondSecurity;
|
||||||
|
import ru.spcex.clearing.gatewayapi.request.objects.IssuerCompany;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class FondListingsRequestParam {
|
||||||
|
private FondListingsRequest fondListingsRequest;
|
||||||
|
private List<FondSecurity> securities = new ArrayList<>();
|
||||||
|
private List<IssuerCompany> issuerCompanyList = new ArrayList<>();
|
||||||
|
|
||||||
|
public FondListingsRequestParam(FondListingsRequest fondListingsRequest) {
|
||||||
|
this.fondListingsRequest = fondListingsRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public FondListingsRequest getRequest() {
|
||||||
|
return fondListingsRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FondSecurity> getSecurities() {
|
||||||
|
return securities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<IssuerCompany> getIssuerCompanyList() {
|
||||||
|
return issuerCompanyList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setListingsRequest(FondListingsRequest fondListingsRequest) {
|
||||||
|
this.fondListingsRequest = fondListingsRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecurities(List<FondSecurity> securities) {
|
||||||
|
this.securities = securities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIssuerCompanyList(List<IssuerCompany> issuerCompanyList) {
|
||||||
|
this.issuerCompanyList = issuerCompanyList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -12,12 +12,12 @@ import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class PrepareIssuerCompanies extends Stage<ListingsRequestParam> {
|
public class PrepareIssuerCompanies extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IssuerCompany> issuerCompanyList = param.getListingsRequest().getIssuerCompanyList();
|
List<IssuerCompany> issuerCompanyList = param.getRequest().getIssuerCompanyList();
|
||||||
|
|
||||||
Map<UUID, IssuerCompany> issuerCompanyMap = new HashMap<>();
|
Map<UUID, IssuerCompany> issuerCompanyMap = new HashMap<>();
|
||||||
for (IssuerCompany issuerCompany : issuerCompanyList) {
|
for (IssuerCompany issuerCompany : issuerCompanyList) {
|
||||||
|
|
@ -34,9 +34,9 @@ public class PrepareIssuerCompanies extends Stage<ListingsRequestParam> {
|
||||||
|
|
||||||
UUID issuerCompanyId = issuerCompany.getId();
|
UUID issuerCompanyId = issuerCompany.getId();
|
||||||
boolean securityFoundForCompany = false;
|
boolean securityFoundForCompany = false;
|
||||||
for (IncomeSecurity incomeSecurity : param.getSecurities()) {
|
for (FondSecurity fondSecurity : param.getSecurities()) {
|
||||||
if (incomeSecurity.getIssuerId().equals(issuerCompanyId)) {
|
if (fondSecurity.getIssuerId().equals(issuerCompanyId)) {
|
||||||
incomeSecurity.setIssuerCompany(issuerCompany);
|
fondSecurity.setIssuerCompany(issuerCompany);
|
||||||
securityFoundForCompany = true;
|
securityFoundForCompany = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -46,7 +46,7 @@ public class PrepareIssuerCompanies extends Stage<ListingsRequestParam> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IssuerCompanyInfo> issuerCompanyInfoList = param.getListingsRequest().getIssuerCompanyInfoList();
|
List<IssuerCompanyInfo> issuerCompanyInfoList = param.getRequest().getIssuerCompanyInfoList();
|
||||||
for (IssuerCompanyInfo issuerCompanyInfo : issuerCompanyInfoList) {
|
for (IssuerCompanyInfo issuerCompanyInfo : issuerCompanyInfoList) {
|
||||||
UUID issuerCompanyInfoUUID = issuerCompanyInfo.getCompanyId();
|
UUID issuerCompanyInfoUUID = issuerCompanyInfo.getCompanyId();
|
||||||
IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanyInfoUUID);
|
IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanyInfoUUID);
|
||||||
|
|
@ -61,7 +61,7 @@ public class PrepareIssuerCompanies extends Stage<ListingsRequestParam> {
|
||||||
issuerCompany.setIssuerCompanyInfo(issuerCompanyInfo);
|
issuerCompany.setIssuerCompanyInfo(issuerCompanyInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IssuerCompanySymbols> issuerCompanySymbolsList = param.getListingsRequest().getIssuerCompanySymbolsList();
|
List<IssuerCompanySymbols> issuerCompanySymbolsList = param.getRequest().getIssuerCompanySymbolsList();
|
||||||
for (IssuerCompanySymbols issuerCompanySymbols : issuerCompanySymbolsList) {
|
for (IssuerCompanySymbols issuerCompanySymbols : issuerCompanySymbolsList) {
|
||||||
UUID issuerCompanySymbolsUUID = issuerCompanySymbols.getCompanyId();
|
UUID issuerCompanySymbolsUUID = issuerCompanySymbols.getCompanyId();
|
||||||
IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanySymbolsUUID);
|
IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanySymbolsUUID);
|
||||||
|
|
@ -75,7 +75,7 @@ public class PrepareIssuerCompanies extends Stage<ListingsRequestParam> {
|
||||||
issuerCompany.getIssuerCompanySymbolsList().add(issuerCompanySymbols);
|
issuerCompany.getIssuerCompanySymbolsList().add(issuerCompanySymbols);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IssuerContact> issuerContactList = param.getListingsRequest().getIssuerContactList();
|
List<IssuerContact> issuerContactList = param.getRequest().getIssuerContactList();
|
||||||
for (IssuerContact issuerContact : issuerContactList) {
|
for (IssuerContact issuerContact : issuerContactList) {
|
||||||
UUID issuerContactUUID = issuerContact.getCompanyId();
|
UUID issuerContactUUID = issuerContact.getCompanyId();
|
||||||
IssuerCompany issuerCompany = issuerCompanyMap.get(issuerContactUUID);
|
IssuerCompany issuerCompany = issuerCompanyMap.get(issuerContactUUID);
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -12,63 +12,63 @@ import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class PrepareSecurities extends Stage<ListingsRequestParam> {
|
public class PrepareSecurities extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IncomeSecurity> securities = param.getListingsRequest().getSecurities();
|
List<FondSecurity> securities = param.getRequest().getSecurities();
|
||||||
|
|
||||||
Map<UUID, IncomeSecurity> securityMap = new HashMap<>();
|
Map<UUID, FondSecurity> securityMap = new HashMap<>();
|
||||||
for (IncomeSecurity incomeSecurity : securities) {
|
for (FondSecurity fondSecurity : securities) {
|
||||||
if (securityMap.containsKey(incomeSecurity.getId())) {
|
if (securityMap.containsKey(fondSecurity.getId())) {
|
||||||
log.warn("For security.UUID {} found > 1 element from request, use first", incomeSecurity.getId());
|
log.warn("For security.UUID {} found > 1 element from request, use first", fondSecurity.getId());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
securityMap.put(incomeSecurity.getId(), incomeSecurity);
|
securityMap.put(fondSecurity.getId(), fondSecurity);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<CouponSchedule> couponSchedules = param.getListingsRequest().getCouponSchedules();
|
List<CouponSchedule> couponSchedules = param.getRequest().getCouponSchedules();
|
||||||
for (CouponSchedule couponSchedule : couponSchedules) {
|
for (CouponSchedule couponSchedule : couponSchedules) {
|
||||||
UUID couponScheduleUUID = couponSchedule.getSecurityId();
|
UUID couponScheduleUUID = couponSchedule.getSecurityId();
|
||||||
IncomeSecurity incomeSecurity = securityMap.get(couponScheduleUUID);
|
FondSecurity fondSecurity = securityMap.get(couponScheduleUUID);
|
||||||
if (incomeSecurity == null) {
|
if (fondSecurity == null) {
|
||||||
log.warn("For couponSchedule.securityId {} not found security, skipped", couponScheduleUUID);
|
log.warn("For couponSchedule.securityId {} not found security, skipped", couponScheduleUUID);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
incomeSecurity.getCouponScheduleList().add(couponSchedule);
|
fondSecurity.getCouponScheduleList().add(couponSchedule);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Currency> currencyList = param.getListingsRequest().getCurrencies();
|
List<Currency> currencyList = param.getRequest().getCurrencies();
|
||||||
for (Currency currency : currencyList) {
|
for (Currency currency : currencyList) {
|
||||||
UUID currencyUUID = currency.getId();
|
UUID currencyUUID = currency.getId();
|
||||||
// todo сделать после выяснения
|
// todo сделать после выяснения
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IncomeListing> listingList = param.getListingsRequest().getListingList();
|
List<IncomeListing> listingList = param.getRequest().getListingList();
|
||||||
for (IncomeListing listing : listingList) {
|
for (IncomeListing listing : listingList) {
|
||||||
UUID listingUUID = listing.getSecurityId();
|
UUID listingUUID = listing.getSecurityId();
|
||||||
IncomeSecurity incomeSecurity = securityMap.get(listingUUID);
|
FondSecurity fondSecurity = securityMap.get(listingUUID);
|
||||||
if (incomeSecurity == null) {
|
if (fondSecurity == null) {
|
||||||
log.warn("For listing.securityId {} not found security, skipped", listingUUID);
|
log.warn("For listing.securityId {} not found security, skipped", listingUUID);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
incomeSecurity.getListingList().add(listing);
|
fondSecurity.getListingList().add(listing);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Nominal> nominalList = param.getListingsRequest().getNominalList();
|
List<Nominal> nominalList = param.getRequest().getNominalList();
|
||||||
for (Nominal nominal : nominalList) {
|
for (Nominal nominal : nominalList) {
|
||||||
UUID nominalUUID = nominal.getSecurityId();
|
UUID nominalUUID = nominal.getSecurityId();
|
||||||
IncomeSecurity incomeSecurity = securityMap.get(nominalUUID);
|
FondSecurity fondSecurity = securityMap.get(nominalUUID);
|
||||||
if (incomeSecurity == null) {
|
if (fondSecurity == null) {
|
||||||
log.warn("For nominal.securityId {} not found security, skipped", nominalUUID);
|
log.warn("For nominal.securityId {} not found security, skipped", nominalUUID);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
incomeSecurity.getNominalList().add(nominal);
|
fondSecurity.getNominalList().add(nominal);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IncomeSecurity> filteredIncomeSecurities = securities.stream()
|
List<FondSecurity> filteredIncomeSecurities = securities.stream()
|
||||||
.filter(incomeSecurity -> !incomeSecurity.isInvalidData())
|
.filter(incomeSecurity -> !incomeSecurity.isInvalidData())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -20,7 +20,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class SendMessageToCompanyService extends Stage<ListingsRequestParam> {
|
public class SendMessageToCompanyService extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final KafkaSender kafkaSender;
|
private final KafkaSender kafkaSender;
|
||||||
|
|
@ -33,7 +33,7 @@ public class SendMessageToCompanyService extends Stage<ListingsRequestParam> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IssuerCompany> companyList = param.getIssuerCompanyList();
|
List<IssuerCompany> companyList = param.getIssuerCompanyList();
|
||||||
for (IssuerCompany company : companyList) {
|
for (IssuerCompany company : companyList) {
|
||||||
if (company.isInvalidData()) continue;
|
if (company.isInvalidData()) continue;
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
@ -7,8 +7,8 @@ import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||||
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
||||||
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.CouponSchedule;
|
import ru.spcex.clearing.gatewayapi.request.objects.CouponSchedule;
|
||||||
|
import ru.spcex.clearing.gatewayapi.request.objects.FondSecurity;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeListing;
|
import ru.spcex.clearing.gatewayapi.request.objects.IncomeListing;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity;
|
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.Nominal;
|
import ru.spcex.clearing.gatewayapi.request.objects.Nominal;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
|
|
@ -21,7 +21,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class SendMessageToSecurityService extends Stage<ListingsRequestParam> {
|
public class SendMessageToSecurityService extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final KafkaSender kafkaSender;
|
private final KafkaSender kafkaSender;
|
||||||
|
|
@ -36,9 +36,9 @@ public class SendMessageToSecurityService extends Stage<ListingsRequestParam> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IncomeSecurity> securityList = param.getSecurities();
|
List<FondSecurity> securityList = param.getSecurities();
|
||||||
for (IncomeSecurity security : securityList) {
|
for (FondSecurity security : securityList) {
|
||||||
if (security.isInvalidData()) continue;
|
if (security.isInvalidData()) continue;
|
||||||
if (security.getIssuerCompany() == null || security.getIssuerCompany().getMapId() == null) {
|
if (security.getIssuerCompany() == null || security.getIssuerCompany().getMapId() == null) {
|
||||||
log.warn("Can't insert security.UUID {}, company not found for parameter issuerId", security.getId());
|
log.warn("Can't insert security.UUID {}, company not found for parameter issuerId", security.getId());
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -6,8 +6,8 @@ import org.slf4j.LoggerFactory;
|
||||||
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
||||||
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.CouponSchedule;
|
import ru.spcex.clearing.gatewayapi.request.objects.CouponSchedule;
|
||||||
|
import ru.spcex.clearing.gatewayapi.request.objects.FondSecurity;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeListing;
|
import ru.spcex.clearing.gatewayapi.request.objects.IncomeListing;
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity;
|
|
||||||
import ru.spcex.clearing.gatewayapi.request.objects.Nominal;
|
import ru.spcex.clearing.gatewayapi.request.objects.Nominal;
|
||||||
import ru.spcex.platform.enumeration.BondType;
|
import ru.spcex.platform.enumeration.BondType;
|
||||||
import ru.spcex.platform.enumeration.InstrumentType;
|
import ru.spcex.platform.enumeration.InstrumentType;
|
||||||
|
|
@ -18,102 +18,102 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class ValidateIncomeSecurities extends Stage<ListingsRequestParam> {
|
public class ValidateIncomeSecurities extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IncomeSecurity> securities = param.getSecurities();
|
List<FondSecurity> securities = param.getSecurities();
|
||||||
|
|
||||||
for (IncomeSecurity incomeSecurity : securities) {
|
for (FondSecurity fondSecurity : securities) {
|
||||||
if (incomeSecurity.isInvalidData()) continue;
|
if (fondSecurity.isInvalidData()) continue;
|
||||||
|
|
||||||
if (incomeSecurity.getIssuerCompany() == null) {
|
if (fondSecurity.getIssuerCompany() == null) {
|
||||||
log.warn("For security.UUID {} not found company, skipped", incomeSecurity.getId());
|
log.warn("For security.UUID {} not found company, skipped", fondSecurity.getId());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String instrumentTypeStr = incomeSecurity.getInstrumentType();
|
String instrumentTypeStr = fondSecurity.getInstrumentType();
|
||||||
InstrumentType instrumentType = IEnumKey.getEnumByKey(InstrumentType.class, instrumentTypeStr);
|
InstrumentType instrumentType = IEnumKey.getEnumByKey(InstrumentType.class, instrumentTypeStr);
|
||||||
if (instrumentType != InstrumentType.BOND && instrumentType != InstrumentType.EQTY) {
|
if (instrumentType != InstrumentType.BOND && instrumentType != InstrumentType.EQTY) {
|
||||||
log.warn("Invalid instrumentType {} for security.UUID {}, skipped", instrumentTypeStr, incomeSecurity.getId());
|
log.warn("Invalid instrumentType {} for security.UUID {}, skipped", instrumentTypeStr, fondSecurity.getId());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String workflowStatusStr = incomeSecurity.getWorkflowStatus();
|
String workflowStatusStr = fondSecurity.getWorkflowStatus();
|
||||||
WorkflowStatus workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, workflowStatusStr);
|
WorkflowStatus workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, workflowStatusStr);
|
||||||
if (workflowStatus == null) {
|
if (workflowStatus == null) {
|
||||||
log.warn("Invalid workflowStatus {} for security.UUID {}, skipped", workflowStatusStr, incomeSecurity.getId());
|
log.warn("Invalid workflowStatus {} for security.UUID {}, skipped", workflowStatusStr, fondSecurity.getId());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String shareTypeStr = incomeSecurity.getShareType();
|
String shareTypeStr = fondSecurity.getShareType();
|
||||||
ShareType shareType = IEnumKey.getEnumByKey(ShareType.class, shareTypeStr);
|
ShareType shareType = IEnumKey.getEnumByKey(ShareType.class, shareTypeStr);
|
||||||
if (instrumentType == InstrumentType.EQTY && shareType == null) {
|
if (instrumentType == InstrumentType.EQTY && shareType == null) {
|
||||||
log.warn("Invalid shareType {} for security.UUID {}, skipped", shareTypeStr, incomeSecurity.getId());
|
log.warn("Invalid shareType {} for security.UUID {}, skipped", shareTypeStr, fondSecurity.getId());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
String bondTypeStr = incomeSecurity.getBondType();
|
String bondTypeStr = fondSecurity.getBondType();
|
||||||
BondType bondType = IEnumKey.getEnumByKey(BondType.class, bondTypeStr);
|
BondType bondType = IEnumKey.getEnumByKey(BondType.class, bondTypeStr);
|
||||||
if (bondType == null) {
|
if (bondType == null) {
|
||||||
log.warn("Invalid bondType {} for security.UUID {}, skipped", bondTypeStr, incomeSecurity.getId());
|
log.warn("Invalid bondType {} for security.UUID {}, skipped", bondTypeStr, fondSecurity.getId());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isEmpty(incomeSecurity.getSecuritySymbol())) {
|
if (StringUtils.isEmpty(fondSecurity.getSecuritySymbol())) {
|
||||||
log.warn("Empty or null securitySymbol for security.UUID {}, skipped", incomeSecurity.getId());
|
log.warn("Empty or null securitySymbol for security.UUID {}, skipped", fondSecurity.getId());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isEmpty(incomeSecurity.getShortName())) {
|
if (StringUtils.isEmpty(fondSecurity.getShortName())) {
|
||||||
log.warn("Empty or null shortName for security.UUID {}, skipped", incomeSecurity.getShortName());
|
log.warn("Empty or null shortName for security.UUID {}, skipped", fondSecurity.getShortName());
|
||||||
incomeSecurity.setInvalidData(true);
|
fondSecurity.setInvalidData(true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IncomeListing> listingList = incomeSecurity.getListingList();
|
List<IncomeListing> listingList = fondSecurity.getListingList();
|
||||||
|
|
||||||
for (IncomeListing listing : listingList) {
|
for (IncomeListing listing : listingList) {
|
||||||
|
|
||||||
if (StringUtils.isEmpty(listing.getCode())) {
|
if (StringUtils.isEmpty(listing.getCode())) {
|
||||||
log.warn("Empty or null code (market) for listing from security.UUID {}", incomeSecurity.getId());
|
log.warn("Empty or null code (market) for listing from security.UUID {}", fondSecurity.getId());
|
||||||
listing.setInvalidData(true);
|
listing.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (listing.getLotSize() == null) {
|
if (listing.getLotSize() == null) {
|
||||||
log.warn("lotSize is null for listing from security.UUID {}", incomeSecurity.getId());
|
log.warn("lotSize is null for listing from security.UUID {}", fondSecurity.getId());
|
||||||
listing.setInvalidData(true);
|
listing.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtils.isEmpty(listing.getTradingCurrency())) {
|
if (StringUtils.isEmpty(listing.getTradingCurrency())) {
|
||||||
log.warn("Empty or null tradingCurrency for listing from security.UUID {}", incomeSecurity.getId());
|
log.warn("Empty or null tradingCurrency for listing from security.UUID {}", fondSecurity.getId());
|
||||||
listing.setInvalidData(true);
|
listing.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
workflowStatusStr = listing.getWorkflowStatus();
|
workflowStatusStr = listing.getWorkflowStatus();
|
||||||
workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, workflowStatusStr);
|
workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, workflowStatusStr);
|
||||||
if (workflowStatus == null) {
|
if (workflowStatus == null) {
|
||||||
log.warn("Invalid workflowStatus {} for listing from security.UUID {}", workflowStatusStr, incomeSecurity.getId());
|
log.warn("Invalid workflowStatus {} for listing from security.UUID {}", workflowStatusStr, fondSecurity.getId());
|
||||||
listing.setInvalidData(true);
|
listing.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
incomeSecurity.setListingList(
|
fondSecurity.setListingList(
|
||||||
listingList.stream()
|
listingList.stream()
|
||||||
.filter(incomeListing -> !incomeListing.isInvalidData())
|
.filter(incomeListing -> !incomeListing.isInvalidData())
|
||||||
.collect(Collectors.toList())
|
.collect(Collectors.toList())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
for (CouponSchedule couponSchedule : incomeSecurity.getCouponScheduleList()) {
|
for (CouponSchedule couponSchedule : fondSecurity.getCouponScheduleList()) {
|
||||||
if (
|
if (
|
||||||
couponSchedule.getPeriodStartDate() == null ||
|
couponSchedule.getPeriodStartDate() == null ||
|
||||||
couponSchedule.getPeriodEndDate() == null ||
|
couponSchedule.getPeriodEndDate() == null ||
|
||||||
|
|
@ -122,41 +122,41 @@ public class ValidateIncomeSecurities extends Stage<ListingsRequestParam> {
|
||||||
log.warn("Invalid periodStartDate {} or periodEndDate {} for couponSchedule, security.UUID {}, skipped",
|
log.warn("Invalid periodStartDate {} or periodEndDate {} for couponSchedule, security.UUID {}, skipped",
|
||||||
couponSchedule.getPeriodStartDate(),
|
couponSchedule.getPeriodStartDate(),
|
||||||
couponSchedule.getPeriodEndDate(),
|
couponSchedule.getPeriodEndDate(),
|
||||||
incomeSecurity.getId());
|
fondSecurity.getId());
|
||||||
couponSchedule.setInvalidData(true);
|
couponSchedule.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (couponSchedule.getCouponNumber() == null) {
|
if (couponSchedule.getCouponNumber() == null) {
|
||||||
log.warn("couponNumber is null for couponSchedule, security.UUID {}, skipped", incomeSecurity.getId());
|
log.warn("couponNumber is null for couponSchedule, security.UUID {}, skipped", fondSecurity.getId());
|
||||||
couponSchedule.setInvalidData(true);
|
couponSchedule.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (couponSchedule.getCouponRate() == null) {
|
if (couponSchedule.getCouponRate() == null) {
|
||||||
log.warn("couponRate is null for couponSchedule, security.UUID {}, skipped", incomeSecurity.getId());
|
log.warn("couponRate is null for couponSchedule, security.UUID {}, skipped", fondSecurity.getId());
|
||||||
couponSchedule.setInvalidData(true);
|
couponSchedule.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (couponSchedule.getAccruedCoupon() == null) {
|
if (couponSchedule.getAccruedCoupon() == null) {
|
||||||
log.warn("accruedCoupon is null for couponSchedule, security.UUID {}, skipped", incomeSecurity.getId());
|
log.warn("accruedCoupon is null for couponSchedule, security.UUID {}, skipped", fondSecurity.getId());
|
||||||
couponSchedule.setInvalidData(true);
|
couponSchedule.setInvalidData(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Nominal nominal : incomeSecurity.getNominalList()) {
|
for (Nominal nominal : fondSecurity.getNominalList()) {
|
||||||
if (nominal.getNominal() == null) {
|
if (nominal.getNominal() == null) {
|
||||||
log.warn("nominal (value) is null for nominal, security.UUID {}, skipped", incomeSecurity.getId());
|
log.warn("nominal (value) is null for nominal, security.UUID {}, skipped", fondSecurity.getId());
|
||||||
nominal.setInvalidData(true);
|
nominal.setInvalidData(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nominal.getDate() == null) {
|
if (nominal.getDate() == null) {
|
||||||
log.warn("date is null for nominal, security.UUID {}, skipped", incomeSecurity.getId());
|
log.warn("date is null for nominal, security.UUID {}, skipped", fondSecurity.getId());
|
||||||
nominal.setInvalidData(true);
|
nominal.setInvalidData(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IncomeSecurity> filteredIncomeSecurities = securities.stream()
|
List<FondSecurity> filteredIncomeSecurities = securities.stream()
|
||||||
.filter(incomeSecurity -> !incomeSecurity.isInvalidData())
|
.filter(incomeSecurity -> !incomeSecurity.isInvalidData())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
package ru.spcex.clearing.gatewayapi.logic.listings_fond;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -16,7 +16,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ValidateIssuerCompanies extends Stage<ListingsRequestParam> {
|
public class ValidateIssuerCompanies extends Stage<FondListingsRequestParam> {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final List<CompanySymbol> validCompanySymbols = Arrays.asList(
|
private final List<CompanySymbol> validCompanySymbols = Arrays.asList(
|
||||||
|
|
@ -39,7 +39,7 @@ public class ValidateIssuerCompanies extends Stage<ListingsRequestParam> {
|
||||||
);
|
);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ProcessResult process(ListingsRequestParam param) {
|
public ProcessResult process(FondListingsRequestParam param) {
|
||||||
List<IssuerCompany> companyList = param.getIssuerCompanyList();
|
List<IssuerCompany> companyList = param.getIssuerCompanyList();
|
||||||
|
|
||||||
for (IssuerCompany issuerCompany : companyList) {
|
for (IssuerCompany issuerCompany : companyList) {
|
||||||
|
|
@ -6,10 +6,10 @@ import ru.spcex.clearing.gatewayapi.request.objects.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ListingsRequest extends BaseRequest {
|
public class FondListingsRequest extends BaseRequest {
|
||||||
@JsonProperty("security")
|
@JsonProperty("security")
|
||||||
@ApiModelProperty(value = "Список security")
|
@ApiModelProperty(value = "Список security")
|
||||||
private List<IncomeSecurity> securities;
|
private List<FondSecurity> securities;
|
||||||
|
|
||||||
@JsonProperty("coupon_schedule")
|
@JsonProperty("coupon_schedule")
|
||||||
@ApiModelProperty(value = "Список coupon_schedule")
|
@ApiModelProperty(value = "Список coupon_schedule")
|
||||||
|
|
@ -43,11 +43,11 @@ public class ListingsRequest extends BaseRequest {
|
||||||
@ApiModelProperty(value = "Список контактов компаний эмитентов")
|
@ApiModelProperty(value = "Список контактов компаний эмитентов")
|
||||||
private List<IssuerContact> issuerContactList;
|
private List<IssuerContact> issuerContactList;
|
||||||
|
|
||||||
public List<IncomeSecurity> getSecurities() {
|
public List<FondSecurity> getSecurities() {
|
||||||
return securities;
|
return securities;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSecurities(List<IncomeSecurity> securities) {
|
public void setSecurities(List<FondSecurity> securities) {
|
||||||
this.securities = securities;
|
this.securities = securities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -12,7 +12,7 @@ import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class IncomeSecurity extends WithMapId {
|
public class FondSecurity extends WithMapId {
|
||||||
@JsonProperty("id")
|
@JsonProperty("id")
|
||||||
@ApiModelProperty(
|
@ApiModelProperty(
|
||||||
value = "id (uuid)",
|
value = "id (uuid)",
|
||||||
Loading…
Add table
Reference in a new issue