diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java index af71e5f2c..2f5106078 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/PipelineConfiguration.java @@ -3,7 +3,7 @@ package ru.spcex.clearing.gatewayapi.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; 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.platform.imdg.api.ImdgProvider; @@ -14,8 +14,8 @@ import java.util.List; public class PipelineConfiguration { @Bean - public List> listingsRequestPipeline(ImdgProvider imdgProvider, KafkaSender kafkaSender) { - List> pipeline = new ArrayList<>(); + public List> listingsRequestPipeline(ImdgProvider imdgProvider, KafkaSender kafkaSender) { + List> pipeline = new ArrayList<>(); pipeline.add(new PrepareSecurities()); pipeline.add(new PrepareIssuerCompanies()); pipeline.add(new ValidateIncomeSecurities()); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java index 82372f57e..38b8809e3 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; 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; @Controller @@ -26,13 +26,13 @@ public class GatewayController { @ApiResponse(code = 400, message = "Ошибка валидации", response = CommonResponse.class) }) @RequestMapping( - path = "/listings", + path = "/listing_fond", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE ) @ResponseBody - public CommonResponse listings(@RequestBody ListingsRequest request) { + public CommonResponse listings(@RequestBody FondListingsRequest request) { // todo pack it to abstract class CommonResponse commonResponse = new CommonResponse(); commonResponse.setId(request.getId()); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CompaniesRequestParam.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CompaniesRequestParam.java index 25cb4428d..b56f8eec1 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CompaniesRequestParam.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/CompaniesRequestParam.java @@ -8,7 +8,7 @@ import java.util.List; public class CompaniesRequestParam { private final CompaniesRequest companiesRequest; - private final List memberCompanyList = new ArrayList<>(); + private List memberCompanyList = new ArrayList<>(); public CompaniesRequestParam(CompaniesRequest companiesRequest) { this.companiesRequest = companiesRequest; @@ -21,4 +21,8 @@ public class CompaniesRequestParam { public List getMemberCompanyList() { return memberCompanyList; } + + public void setMemberCompanyList(List memberCompanyList) { + this.memberCompanyList = memberCompanyList; + } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java index c558698c3..058bbef7c 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/PrepareMemberCompanies.java @@ -11,6 +11,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; public class PrepareMemberCompanies extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -105,6 +106,14 @@ public class PrepareMemberCompanies extends Stage { memberCompany.getClientList().add(client); } + List filteredIssuerCompany = companyList.stream() + .filter(memberCompany -> !memberCompany.isInvalidData()) + .collect(Collectors.toList()); + + // todo check list is empty + + param.setMemberCompanyList(filteredIssuerCompany); + return null; } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/ValidateMemberCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/ValidateMemberCompanies.java new file mode 100644 index 000000000..d6dc290c3 --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/companies/ValidateMemberCompanies.java @@ -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 { + private final Logger log = LoggerFactory.getLogger(getClass()); + + @Override + public ProcessResult process(CompaniesRequestParam param) { + List 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; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ListingsRequestParam.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ListingsRequestParam.java deleted file mode 100644 index 5c72d738f..000000000 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ListingsRequestParam.java +++ /dev/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 securities = new ArrayList<>(); - private List issuerCompanyList = new ArrayList<>(); - - public ListingsRequestParam(ListingsRequest listingsRequest) { - this.listingsRequest = listingsRequest; - } - - - public ListingsRequest getListingsRequest() { - return listingsRequest; - } - - public List getSecurities() { - return securities; - } - - public List getIssuerCompanyList() { - return issuerCompanyList; - } - - public void setListingsRequest(ListingsRequest listingsRequest) { - this.listingsRequest = listingsRequest; - } - - public void setSecurities(List securities) { - this.securities = securities; - } - - public void setIssuerCompanyList(List issuerCompanyList) { - this.issuerCompanyList = issuerCompanyList; - } -} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckCompanyExist.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckCompanyExist.java similarity index 98% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckCompanyExist.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckCompanyExist.java index dced018b1..5513863ef 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckCompanyExist.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckCompanyExist.java @@ -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.LoggerFactory; @@ -21,7 +21,7 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; -public class CheckCompanyExist extends Stage { +public class CheckCompanyExist extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg companyImdg; @@ -35,7 +35,7 @@ public class CheckCompanyExist extends Stage { } @Override - public ProcessResult process(ListingsRequestParam param) { + public ProcessResult process(FondListingsRequestParam param) { List companyList = param.getIssuerCompanyList(); for (IssuerCompany company : companyList) { diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckSecurityExist.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckSecurityExist.java similarity index 80% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckSecurityExist.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckSecurityExist.java index e97af6923..dd2f086b4 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/CheckSecurityExist.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/CheckSecurityExist.java @@ -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.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.Stage; 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.IncomeSecurity; import ru.spcex.clearing.gatewayapi.request.objects.Nominal; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.platform.enumeration.InstrumentType; @@ -22,7 +22,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; -public class CheckSecurityExist extends Stage { +public class CheckSecurityExist extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); private final Imdg equitySecurityImdg; @@ -40,12 +40,12 @@ public class CheckSecurityExist extends Stage { } @Override - public ProcessResult process(ListingsRequestParam param) { - List securities = param.getSecurities(); + public ProcessResult process(FondListingsRequestParam param) { + List securities = param.getSecurities(); - for (IncomeSecurity incomeSecurity : securities) { - String instrumentType = incomeSecurity.getInstrumentType(); - String securitySymbol = incomeSecurity.getSecuritySymbol(); + for (FondSecurity fondSecurity : securities) { + String instrumentType = fondSecurity.getInstrumentType(); + String securitySymbol = fondSecurity.getSecuritySymbol(); if (InstrumentType.BOND.equalsByKey(instrumentType)) { Collection fixedIncomeSecurities = fixedIncomeSecurityImdg.getCollectionObjectsByFieldValues( Map.of("securitySymbol", securitySymbol) @@ -57,10 +57,10 @@ public class CheckSecurityExist extends Stage { securitySymbol, fixedIncomeSecurity.getId()); } - incomeSecurity.setAlreadyExist(true); - incomeSecurity.setMapId(fixedIncomeSecurity.getId()); + fondSecurity.setAlreadyExist(true); + fondSecurity.setMapId(fixedIncomeSecurity.getId()); } else { - incomeSecurity.setAlreadyExist(false); + fondSecurity.setAlreadyExist(false); } } else if (InstrumentType.EQTY.equalsByKey(instrumentType)) { Collection equitySecurities = equitySecurityImdg.getCollectionObjectsByFieldValues( @@ -73,23 +73,23 @@ public class CheckSecurityExist extends Stage { securitySymbol, equitySecurity.getId()); } - incomeSecurity.setAlreadyExist(true); - incomeSecurity.setMapId(equitySecurity.getId()); + fondSecurity.setAlreadyExist(true); + fondSecurity.setMapId(equitySecurity.getId()); } else { - incomeSecurity.setAlreadyExist(false); + fondSecurity.setAlreadyExist(false); } } - for (IncomeListing listing : incomeSecurity.getListingList()) { + for (IncomeListing listing : fondSecurity.getListingList()) { if (listing.isInvalidData()) continue; - if (!incomeSecurity.isAlreadyExist()) { + if (!fondSecurity.isAlreadyExist()) { listing.setAlreadyExist(false); continue; } Collection listingsFromImdg = listingImdg.getCollectionObjectsByFieldValues( Map.of( - "securityId", incomeSecurity.getMapId(), + "securityId", fondSecurity.getMapId(), "market", listing.getCode() ) ); @@ -99,7 +99,7 @@ public class CheckSecurityExist extends Stage { Listing listingFromImdg = listingsFromImdg.iterator().next(); if (listingsFromImdg.size() > 1) { log.warn("For security_id {} and market {} found > 1 listing, update first (id = {})", - incomeSecurity.getMapId(), + fondSecurity.getMapId(), listing.getCode(), listingFromImdg.getId()); @@ -109,16 +109,16 @@ public class CheckSecurityExist extends Stage { } } - for (CouponSchedule couponSchedules : incomeSecurity.getCouponScheduleList()) { + for (CouponSchedule couponSchedules : fondSecurity.getCouponScheduleList()) { if (couponSchedules.isInvalidData()) continue; - if (!incomeSecurity.isAlreadyExist()) { + if (!fondSecurity.isAlreadyExist()) { couponSchedules.setAlreadyExist(false); continue; } Collection couponPeriodListFromImdg = couponPeriodImdg.getCollectionObjectsByFieldValues( Map.of( - "securityId", incomeSecurity.getMapId(), + "securityId", fondSecurity.getMapId(), "periodStartDate", couponSchedules.getPeriodStartDate(), "periodEndDate", couponSchedules.getPeriodEndDate() ) @@ -130,7 +130,7 @@ public class CheckSecurityExist extends Stage { if (couponPeriodListFromImdg.size() > 1) { log.warn("For securityId {}, periodStartDate {}, periodEndDate {} found > 1 couponPeriod, " + "update first (id = {})", - incomeSecurity.getMapId(), + fondSecurity.getMapId(), couponSchedules.getPeriodStartDate(), couponSchedules.getPeriodEndDate(), couponPeriod.getId()); @@ -140,13 +140,13 @@ public class CheckSecurityExist extends Stage { } } - for (Nominal nominal : incomeSecurity.getNominalList()) { + for (Nominal nominal : fondSecurity.getNominalList()) { if (nominal.isInvalidData()) continue; - if (incomeSecurity.isAlreadyExist()) { + if (fondSecurity.isAlreadyExist()) { Collection fixedIncomeCashFlowListFromImdg = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues( Map.of( - "securityId", incomeSecurity.getMapId(), + "securityId", fondSecurity.getMapId(), "valueDate", nominal.getDate() ) ); @@ -156,7 +156,7 @@ public class CheckSecurityExist extends Stage { FixedIncomeCashFlow fixedIncomeCashFlow = fixedIncomeCashFlowListFromImdg.iterator().next(); if (fixedIncomeCashFlowListFromImdg.size() > 1) { log.warn("For securityId {}, valueDate {} found > 1 fixedIncomeCashFlow, update first (id = {})", - incomeSecurity.getMapId(), + fondSecurity.getMapId(), nominal.getDate(), fixedIncomeCashFlow.getId()); } @@ -167,7 +167,7 @@ public class CheckSecurityExist extends Stage { nominal.setAlreadyExist(false); } - for (CouponSchedule couponSchedule : incomeSecurity.getCouponScheduleList()) { + for (CouponSchedule couponSchedule : fondSecurity.getCouponScheduleList()) { if (couponSchedule.isInvalidData()) continue; if (nominal.getDate().isBefore(couponSchedule.getPeriodStartDate()) || nominal.getDate().isAfter(couponSchedule.getPeriodEndDate())) continue; @@ -175,7 +175,7 @@ public class CheckSecurityExist extends Stage { nominal.setCouponNumber(couponSchedule.getCouponNumber()); } 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); } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/FondListingsRequestParam.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/FondListingsRequestParam.java new file mode 100644 index 000000000..d73fa8e1d --- /dev/null +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/FondListingsRequestParam.java @@ -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 securities = new ArrayList<>(); + private List issuerCompanyList = new ArrayList<>(); + + public FondListingsRequestParam(FondListingsRequest fondListingsRequest) { + this.fondListingsRequest = fondListingsRequest; + } + + + public FondListingsRequest getRequest() { + return fondListingsRequest; + } + + public List getSecurities() { + return securities; + } + + public List getIssuerCompanyList() { + return issuerCompanyList; + } + + public void setListingsRequest(FondListingsRequest fondListingsRequest) { + this.fondListingsRequest = fondListingsRequest; + } + + public void setSecurities(List securities) { + this.securities = securities; + } + + public void setIssuerCompanyList(List issuerCompanyList) { + this.issuerCompanyList = issuerCompanyList; + } +} diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareIssuerCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIssuerCompanies.java similarity index 84% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareIssuerCompanies.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIssuerCompanies.java index 471d21745..762140d3d 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareIssuerCompanies.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareIssuerCompanies.java @@ -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.LoggerFactory; @@ -12,12 +12,12 @@ import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; -public class PrepareIssuerCompanies extends Stage { +public class PrepareIssuerCompanies extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @Override - public ProcessResult process(ListingsRequestParam param) { - List issuerCompanyList = param.getListingsRequest().getIssuerCompanyList(); + public ProcessResult process(FondListingsRequestParam param) { + List issuerCompanyList = param.getRequest().getIssuerCompanyList(); Map issuerCompanyMap = new HashMap<>(); for (IssuerCompany issuerCompany : issuerCompanyList) { @@ -34,9 +34,9 @@ public class PrepareIssuerCompanies extends Stage { UUID issuerCompanyId = issuerCompany.getId(); boolean securityFoundForCompany = false; - for (IncomeSecurity incomeSecurity : param.getSecurities()) { - if (incomeSecurity.getIssuerId().equals(issuerCompanyId)) { - incomeSecurity.setIssuerCompany(issuerCompany); + for (FondSecurity fondSecurity : param.getSecurities()) { + if (fondSecurity.getIssuerId().equals(issuerCompanyId)) { + fondSecurity.setIssuerCompany(issuerCompany); securityFoundForCompany = true; break; } @@ -46,7 +46,7 @@ public class PrepareIssuerCompanies extends Stage { } } - List issuerCompanyInfoList = param.getListingsRequest().getIssuerCompanyInfoList(); + List issuerCompanyInfoList = param.getRequest().getIssuerCompanyInfoList(); for (IssuerCompanyInfo issuerCompanyInfo : issuerCompanyInfoList) { UUID issuerCompanyInfoUUID = issuerCompanyInfo.getCompanyId(); IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanyInfoUUID); @@ -61,7 +61,7 @@ public class PrepareIssuerCompanies extends Stage { issuerCompany.setIssuerCompanyInfo(issuerCompanyInfo); } - List issuerCompanySymbolsList = param.getListingsRequest().getIssuerCompanySymbolsList(); + List issuerCompanySymbolsList = param.getRequest().getIssuerCompanySymbolsList(); for (IssuerCompanySymbols issuerCompanySymbols : issuerCompanySymbolsList) { UUID issuerCompanySymbolsUUID = issuerCompanySymbols.getCompanyId(); IssuerCompany issuerCompany = issuerCompanyMap.get(issuerCompanySymbolsUUID); @@ -75,7 +75,7 @@ public class PrepareIssuerCompanies extends Stage { issuerCompany.getIssuerCompanySymbolsList().add(issuerCompanySymbols); } - List issuerContactList = param.getListingsRequest().getIssuerContactList(); + List issuerContactList = param.getRequest().getIssuerContactList(); for (IssuerContact issuerContact : issuerContactList) { UUID issuerContactUUID = issuerContact.getCompanyId(); IssuerCompany issuerCompany = issuerCompanyMap.get(issuerContactUUID); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareSecurities.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareSecurities.java similarity index 52% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareSecurities.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareSecurities.java index 6f6942ec5..a50f82c70 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/PrepareSecurities.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/PrepareSecurities.java @@ -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.LoggerFactory; @@ -12,63 +12,63 @@ import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; -public class PrepareSecurities extends Stage { +public class PrepareSecurities extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @Override - public ProcessResult process(ListingsRequestParam param) { - List securities = param.getListingsRequest().getSecurities(); + public ProcessResult process(FondListingsRequestParam param) { + List securities = param.getRequest().getSecurities(); - Map securityMap = new HashMap<>(); - for (IncomeSecurity incomeSecurity : securities) { - if (securityMap.containsKey(incomeSecurity.getId())) { - log.warn("For security.UUID {} found > 1 element from request, use first", incomeSecurity.getId()); - incomeSecurity.setInvalidData(true); + Map securityMap = new HashMap<>(); + for (FondSecurity fondSecurity : securities) { + if (securityMap.containsKey(fondSecurity.getId())) { + log.warn("For security.UUID {} found > 1 element from request, use first", fondSecurity.getId()); + fondSecurity.setInvalidData(true); continue; } - securityMap.put(incomeSecurity.getId(), incomeSecurity); + securityMap.put(fondSecurity.getId(), fondSecurity); } - List couponSchedules = param.getListingsRequest().getCouponSchedules(); + List couponSchedules = param.getRequest().getCouponSchedules(); for (CouponSchedule couponSchedule : couponSchedules) { UUID couponScheduleUUID = couponSchedule.getSecurityId(); - IncomeSecurity incomeSecurity = securityMap.get(couponScheduleUUID); - if (incomeSecurity == null) { + FondSecurity fondSecurity = securityMap.get(couponScheduleUUID); + if (fondSecurity == null) { log.warn("For couponSchedule.securityId {} not found security, skipped", couponScheduleUUID); continue; } - incomeSecurity.getCouponScheduleList().add(couponSchedule); + fondSecurity.getCouponScheduleList().add(couponSchedule); } - List currencyList = param.getListingsRequest().getCurrencies(); + List currencyList = param.getRequest().getCurrencies(); for (Currency currency : currencyList) { UUID currencyUUID = currency.getId(); // todo сделать после выяснения } - List listingList = param.getListingsRequest().getListingList(); + List listingList = param.getRequest().getListingList(); for (IncomeListing listing : listingList) { UUID listingUUID = listing.getSecurityId(); - IncomeSecurity incomeSecurity = securityMap.get(listingUUID); - if (incomeSecurity == null) { + FondSecurity fondSecurity = securityMap.get(listingUUID); + if (fondSecurity == null) { log.warn("For listing.securityId {} not found security, skipped", listingUUID); continue; } - incomeSecurity.getListingList().add(listing); + fondSecurity.getListingList().add(listing); } - List nominalList = param.getListingsRequest().getNominalList(); + List nominalList = param.getRequest().getNominalList(); for (Nominal nominal : nominalList) { UUID nominalUUID = nominal.getSecurityId(); - IncomeSecurity incomeSecurity = securityMap.get(nominalUUID); - if (incomeSecurity == null) { + FondSecurity fondSecurity = securityMap.get(nominalUUID); + if (fondSecurity == null) { log.warn("For nominal.securityId {} not found security, skipped", nominalUUID); continue; } - incomeSecurity.getNominalList().add(nominal); + fondSecurity.getNominalList().add(nominal); } - List filteredIncomeSecurities = securities.stream() + List filteredIncomeSecurities = securities.stream() .filter(incomeSecurity -> !incomeSecurity.isInvalidData()) .collect(Collectors.toList()); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/SendMessageToCompanyService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToCompanyService.java similarity index 96% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/SendMessageToCompanyService.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToCompanyService.java index 21bdbb229..67a46c392 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/SendMessageToCompanyService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToCompanyService.java @@ -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.LoggerFactory; @@ -20,7 +20,7 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import java.util.List; import java.util.Map; -public class SendMessageToCompanyService extends Stage { +public class SendMessageToCompanyService extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); private final KafkaSender kafkaSender; @@ -33,7 +33,7 @@ public class SendMessageToCompanyService extends Stage { } @Override - public ProcessResult process(ListingsRequestParam param) { + public ProcessResult process(FondListingsRequestParam param) { List companyList = param.getIssuerCompanyList(); for (IssuerCompany company : companyList) { if (company.isInvalidData()) continue; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/SendMessageToSecurityService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityService.java similarity index 97% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/SendMessageToSecurityService.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityService.java index fdfde2c46..59a3bd156 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/SendMessageToSecurityService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/SendMessageToSecurityService.java @@ -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.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.Stage; 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.IncomeSecurity; import ru.spcex.clearing.gatewayapi.request.objects.Nominal; import ru.spcex.clearing.imdg.IMDGDistributedNames; 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.Map; -public class SendMessageToSecurityService extends Stage { +public class SendMessageToSecurityService extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); private final KafkaSender kafkaSender; @@ -36,9 +36,9 @@ public class SendMessageToSecurityService extends Stage { } @Override - public ProcessResult process(ListingsRequestParam param) { - List securityList = param.getSecurities(); - for (IncomeSecurity security : securityList) { + public ProcessResult process(FondListingsRequestParam param) { + List securityList = param.getSecurities(); + for (FondSecurity security : securityList) { if (security.isInvalidData()) continue; if (security.getIssuerCompany() == null || security.getIssuerCompany().getMapId() == null) { log.warn("Can't insert security.UUID {}, company not found for parameter issuerId", security.getId()); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIncomeSecurities.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ValidateIncomeSecurities.java similarity index 67% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIncomeSecurities.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ValidateIncomeSecurities.java index 3d8de36cf..62bb77260 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIncomeSecurities.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ValidateIncomeSecurities.java @@ -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.slf4j.Logger; @@ -6,8 +6,8 @@ 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.CouponSchedule; +import ru.spcex.clearing.gatewayapi.request.objects.FondSecurity; 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.platform.enumeration.BondType; import ru.spcex.platform.enumeration.InstrumentType; @@ -18,102 +18,102 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; import java.util.List; import java.util.stream.Collectors; -public class ValidateIncomeSecurities extends Stage { +public class ValidateIncomeSecurities extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); @Override - public ProcessResult process(ListingsRequestParam param) { - List securities = param.getSecurities(); + public ProcessResult process(FondListingsRequestParam param) { + List securities = param.getSecurities(); - for (IncomeSecurity incomeSecurity : securities) { - if (incomeSecurity.isInvalidData()) continue; + for (FondSecurity fondSecurity : securities) { + if (fondSecurity.isInvalidData()) continue; - if (incomeSecurity.getIssuerCompany() == null) { - log.warn("For security.UUID {} not found company, skipped", incomeSecurity.getId()); - incomeSecurity.setInvalidData(true); + if (fondSecurity.getIssuerCompany() == null) { + log.warn("For security.UUID {} not found company, skipped", fondSecurity.getId()); + fondSecurity.setInvalidData(true); continue; } - String instrumentTypeStr = incomeSecurity.getInstrumentType(); + String instrumentTypeStr = fondSecurity.getInstrumentType(); InstrumentType instrumentType = IEnumKey.getEnumByKey(InstrumentType.class, instrumentTypeStr); if (instrumentType != InstrumentType.BOND && instrumentType != InstrumentType.EQTY) { - log.warn("Invalid instrumentType {} for security.UUID {}, skipped", instrumentTypeStr, incomeSecurity.getId()); - incomeSecurity.setInvalidData(true); + log.warn("Invalid instrumentType {} for security.UUID {}, skipped", instrumentTypeStr, fondSecurity.getId()); + fondSecurity.setInvalidData(true); continue; } - String workflowStatusStr = incomeSecurity.getWorkflowStatus(); + String workflowStatusStr = fondSecurity.getWorkflowStatus(); WorkflowStatus workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, workflowStatusStr); if (workflowStatus == null) { - log.warn("Invalid workflowStatus {} for security.UUID {}, skipped", workflowStatusStr, incomeSecurity.getId()); - incomeSecurity.setInvalidData(true); + log.warn("Invalid workflowStatus {} for security.UUID {}, skipped", workflowStatusStr, fondSecurity.getId()); + fondSecurity.setInvalidData(true); continue; } - String shareTypeStr = incomeSecurity.getShareType(); + String shareTypeStr = fondSecurity.getShareType(); ShareType shareType = IEnumKey.getEnumByKey(ShareType.class, shareTypeStr); if (instrumentType == InstrumentType.EQTY && shareType == null) { - log.warn("Invalid shareType {} for security.UUID {}, skipped", shareTypeStr, incomeSecurity.getId()); - incomeSecurity.setInvalidData(true); + log.warn("Invalid shareType {} for security.UUID {}, skipped", shareTypeStr, fondSecurity.getId()); + fondSecurity.setInvalidData(true); continue; } - String bondTypeStr = incomeSecurity.getBondType(); + String bondTypeStr = fondSecurity.getBondType(); BondType bondType = IEnumKey.getEnumByKey(BondType.class, bondTypeStr); if (bondType == null) { - log.warn("Invalid bondType {} for security.UUID {}, skipped", bondTypeStr, incomeSecurity.getId()); - incomeSecurity.setInvalidData(true); + log.warn("Invalid bondType {} for security.UUID {}, skipped", bondTypeStr, fondSecurity.getId()); + fondSecurity.setInvalidData(true); continue; } - if (StringUtils.isEmpty(incomeSecurity.getSecuritySymbol())) { - log.warn("Empty or null securitySymbol for security.UUID {}, skipped", incomeSecurity.getId()); - incomeSecurity.setInvalidData(true); + if (StringUtils.isEmpty(fondSecurity.getSecuritySymbol())) { + log.warn("Empty or null securitySymbol for security.UUID {}, skipped", fondSecurity.getId()); + fondSecurity.setInvalidData(true); continue; } - if (StringUtils.isEmpty(incomeSecurity.getShortName())) { - log.warn("Empty or null shortName for security.UUID {}, skipped", incomeSecurity.getShortName()); - incomeSecurity.setInvalidData(true); + if (StringUtils.isEmpty(fondSecurity.getShortName())) { + log.warn("Empty or null shortName for security.UUID {}, skipped", fondSecurity.getShortName()); + fondSecurity.setInvalidData(true); continue; } - List listingList = incomeSecurity.getListingList(); + List listingList = fondSecurity.getListingList(); for (IncomeListing listing : listingList) { 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); } 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); } 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); } workflowStatusStr = listing.getWorkflowStatus(); workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, workflowStatusStr); 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); } } - incomeSecurity.setListingList( + fondSecurity.setListingList( listingList.stream() .filter(incomeListing -> !incomeListing.isInvalidData()) .collect(Collectors.toList()) ); - for (CouponSchedule couponSchedule : incomeSecurity.getCouponScheduleList()) { + for (CouponSchedule couponSchedule : fondSecurity.getCouponScheduleList()) { if ( couponSchedule.getPeriodStartDate() == null || couponSchedule.getPeriodEndDate() == null || @@ -122,41 +122,41 @@ public class ValidateIncomeSecurities extends Stage { log.warn("Invalid periodStartDate {} or periodEndDate {} for couponSchedule, security.UUID {}, skipped", couponSchedule.getPeriodStartDate(), couponSchedule.getPeriodEndDate(), - incomeSecurity.getId()); + fondSecurity.getId()); couponSchedule.setInvalidData(true); } 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); } 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); } 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); } } - for (Nominal nominal : incomeSecurity.getNominalList()) { + for (Nominal nominal : fondSecurity.getNominalList()) { 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); } 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); } } } - List filteredIncomeSecurities = securities.stream() + List filteredIncomeSecurities = securities.stream() .filter(incomeSecurity -> !incomeSecurity.isInvalidData()) .collect(Collectors.toList()); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIssuerCompanies.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ValidateIssuerCompanies.java similarity index 95% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIssuerCompanies.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ValidateIssuerCompanies.java index a987e0916..a02fa0cc4 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings/ValidateIssuerCompanies.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/logic/listings_fond/ValidateIssuerCompanies.java @@ -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.slf4j.Logger; @@ -16,7 +16,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; import java.util.Arrays; import java.util.List; -public class ValidateIssuerCompanies extends Stage { +public class ValidateIssuerCompanies extends Stage { private final Logger log = LoggerFactory.getLogger(getClass()); private final List validCompanySymbols = Arrays.asList( @@ -39,7 +39,7 @@ public class ValidateIssuerCompanies extends Stage { ); @Override - public ProcessResult process(ListingsRequestParam param) { + public ProcessResult process(FondListingsRequestParam param) { List companyList = param.getIssuerCompanyList(); for (IssuerCompany issuerCompany : companyList) { diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/FondListingsRequest.java similarity index 94% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/FondListingsRequest.java index 8adb693c3..6cbfcb593 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/ListingsRequest.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/FondListingsRequest.java @@ -6,10 +6,10 @@ import ru.spcex.clearing.gatewayapi.request.objects.*; import java.util.List; -public class ListingsRequest extends BaseRequest { +public class FondListingsRequest extends BaseRequest { @JsonProperty("security") @ApiModelProperty(value = "Список security") - private List securities; + private List securities; @JsonProperty("coupon_schedule") @ApiModelProperty(value = "Список coupon_schedule") @@ -43,11 +43,11 @@ public class ListingsRequest extends BaseRequest { @ApiModelProperty(value = "Список контактов компаний эмитентов") private List issuerContactList; - public List getSecurities() { + public List getSecurities() { return securities; } - public void setSecurities(List securities) { + public void setSecurities(List securities) { this.securities = securities; } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IncomeSecurity.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/FondSecurity.java similarity index 99% rename from clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IncomeSecurity.java rename to clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/FondSecurity.java index 8381148eb..4dbf934b5 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/IncomeSecurity.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/request/objects/FondSecurity.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; -public class IncomeSecurity extends WithMapId { +public class FondSecurity extends WithMapId { @JsonProperty("id") @ApiModelProperty( value = "id (uuid)",