fix CheckSecurityExist stage
This commit is contained in:
parent
4749ae9592
commit
9410af7c15
9 changed files with 147 additions and 39 deletions
|
|
@ -1,10 +1,16 @@
|
|||
package ru.spcex.clearing.gatewayapi.logic.listings;
|
||||
|
||||
import ru.clearing.classes.statics.data.instrument.issue.CouponPeriod;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeCashFlow;
|
||||
import ru.clearing.classes.statics.data.instrument.issue.FixedIncomeSecurity;
|
||||
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.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;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
|
@ -17,10 +23,16 @@ import java.util.Map;
|
|||
public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
||||
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||
private final Imdg<FixedIncomeSecurity> fixedIncomeSecurityImdg;
|
||||
private final Imdg<Listing> listingImdg;
|
||||
private final Imdg<CouponPeriod> couponPeriodImdg;
|
||||
private final Imdg<FixedIncomeCashFlow> fixedIncomeCashFlowImdg;
|
||||
|
||||
public CheckSecurityExist(ImdgProvider imdgProvider) {
|
||||
equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||
fixedIncomeSecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class);
|
||||
listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||
couponPeriodImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CouponPeriod, CouponPeriod.class);
|
||||
fixedIncomeCashFlowImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -34,6 +46,7 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
|||
Map.of("securitySymbol", securitySymbol)
|
||||
);
|
||||
if (!fixedIncomeSecurity.isEmpty()) {
|
||||
// todo log for multiply elements
|
||||
incomeSecurity.setAlreadyExist(true);
|
||||
incomeSecurity.setMapId(fixedIncomeSecurity.iterator().next().getId());
|
||||
} else {
|
||||
|
|
@ -44,6 +57,7 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
|||
Map.of("securitySymbol", securitySymbol)
|
||||
);
|
||||
if (!equitySecurity.isEmpty()) {
|
||||
// todo log for multiply elements
|
||||
incomeSecurity.setAlreadyExist(true);
|
||||
incomeSecurity.setMapId(equitySecurity.iterator().next().getId());
|
||||
} else {
|
||||
|
|
@ -51,8 +65,72 @@ public class CheckSecurityExist extends Stage<ListingsRequestParam> {
|
|||
}
|
||||
}
|
||||
|
||||
if (incomeSecurity.isAlreadyExist()) {
|
||||
// todo after answer
|
||||
for (IncomeListing listing : incomeSecurity.getListingList()) {
|
||||
if (!incomeSecurity.isAlreadyExist()) {
|
||||
listing.setAlreadyExist(false);
|
||||
continue;
|
||||
}
|
||||
Collection<Listing> listingFromImdg = listingImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"securityId", incomeSecurity.getMapId(),
|
||||
"market", listing.getCode()
|
||||
)
|
||||
);
|
||||
if (listingFromImdg.isEmpty()) {
|
||||
listing.setAlreadyExist(false);
|
||||
} else {
|
||||
// todo log for multiply elements
|
||||
listing.setAlreadyExist(true);
|
||||
listing.setMapId(listingFromImdg.iterator().next().getId());
|
||||
}
|
||||
}
|
||||
|
||||
for (CouponSchedule couponSchedule : incomeSecurity.getCouponScheduleList()) {
|
||||
if (!incomeSecurity.isAlreadyExist()) {
|
||||
couponSchedule.setAlreadyExist(false);
|
||||
continue;
|
||||
}
|
||||
Collection<CouponPeriod> couponPeriodFromImdg = couponPeriodImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"securityId", incomeSecurity.getMapId(),
|
||||
"periodStartDate", couponSchedule.getPeriodStartDate(),
|
||||
"periodEndDate", couponSchedule.getPeriodEndDate()
|
||||
)
|
||||
);
|
||||
if (couponPeriodFromImdg.isEmpty()) {
|
||||
couponSchedule.setAlreadyExist(false);
|
||||
} else {
|
||||
// todo log for multiply elements
|
||||
couponSchedule.setAlreadyExist(true);
|
||||
couponSchedule.setMapId(couponPeriodFromImdg.iterator().next().getId());
|
||||
}
|
||||
}
|
||||
|
||||
for (Nominal nominal : incomeSecurity.getNominalList()) {
|
||||
if (incomeSecurity.isAlreadyExist()) {
|
||||
Collection<FixedIncomeCashFlow> fixedIncomeCashFlowFromImdg = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"securityId", incomeSecurity.getMapId(),
|
||||
"valueDate", nominal.getDate()
|
||||
)
|
||||
);
|
||||
if (fixedIncomeCashFlowFromImdg.isEmpty()) {
|
||||
nominal.setAlreadyExist(false);
|
||||
} else {
|
||||
// todo log for multiply elements
|
||||
nominal.setAlreadyExist(true);
|
||||
nominal.setMapId(fixedIncomeCashFlowFromImdg.iterator().next().getId());
|
||||
}
|
||||
} else {
|
||||
nominal.setAlreadyExist(false);
|
||||
}
|
||||
|
||||
for (CouponSchedule couponSchedule : incomeSecurity.getCouponScheduleList()) {
|
||||
if (nominal.getDate().isBefore(couponSchedule.getPeriodStartDate()) || nominal.getDate().isAfter(couponSchedule.getPeriodEndDate()))
|
||||
continue;
|
||||
nominal.setAccruedCoupon(couponSchedule.getAccruedCoupon());
|
||||
nominal.setCouponNumber(couponSchedule.getCouponNumber());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@ public class GroupingSecurityParts extends Stage<ListingsRequestParam> {
|
|||
// todo сделать после выяснения
|
||||
}
|
||||
|
||||
List<Listing> listingList = param.getListingsRequest().getListingList();
|
||||
for (Listing listing : listingList) {
|
||||
List<IncomeListing> listingList = param.getListingsRequest().getListingList();
|
||||
for (IncomeListing listing : listingList) {
|
||||
UUID listingUUID = listing.getSecurityId();
|
||||
IncomeSecurity incomeSecurity = securityMap.get(listingUUID);
|
||||
if (incomeSecurity == null) {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ package ru.spcex.clearing.gatewayapi.logic.listings;
|
|||
|
||||
import ru.spcex.clearing.gatewayapi.logic.ProcessResult;
|
||||
import ru.spcex.clearing.gatewayapi.logic.Stage;
|
||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeListing;
|
||||
import ru.spcex.clearing.gatewayapi.request.objects.IncomeSecurity;
|
||||
import ru.spcex.clearing.gatewayapi.request.objects.Listing;
|
||||
import ru.spcex.platform.enumeration.BondType;
|
||||
import ru.spcex.platform.enumeration.InstrumentType;
|
||||
import ru.spcex.platform.enumeration.WorkflowStatus;
|
||||
|
|
@ -43,9 +43,9 @@ public class ValidateIncomeSecurities extends Stage<ListingsRequestParam> {
|
|||
continue;
|
||||
}
|
||||
|
||||
List<Listing> listingList = incomeSecurity.getListingList();
|
||||
List<IncomeListing> listingList = incomeSecurity.getListingList();
|
||||
|
||||
for (Listing listing : listingList) {
|
||||
for (IncomeListing listing : listingList) {
|
||||
workflowStatusStr = listing.getWorkflowStatus();
|
||||
workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, workflowStatusStr);
|
||||
if (workflowStatus == null) {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ public class ListingsRequest extends BaseRequest {
|
|||
|
||||
@JsonProperty("listing")
|
||||
@ApiModelProperty(value = "Список режимов торгов")
|
||||
private List<Listing> listingList;
|
||||
private List<IncomeListing> listingList;
|
||||
|
||||
@JsonProperty("nominal")
|
||||
@ApiModelProperty(value = "Список nominal")
|
||||
|
|
@ -67,11 +67,11 @@ public class ListingsRequest extends BaseRequest {
|
|||
this.currencies = currencies;
|
||||
}
|
||||
|
||||
public List<Listing> getListingList() {
|
||||
public List<IncomeListing> getListingList() {
|
||||
return listingList;
|
||||
}
|
||||
|
||||
public void setListingList(List<Listing> listingList) {
|
||||
public void setListingList(List<IncomeListing> listingList) {
|
||||
this.listingList = listingList;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import java.math.BigDecimal;
|
|||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CouponSchedule {
|
||||
public class CouponSchedule extends WithMapId {
|
||||
@JsonProperty("security_id")
|
||||
@ApiModelProperty(
|
||||
value = "Ссылка на security",
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import java.math.BigDecimal;
|
|||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
|
||||
public class Listing {
|
||||
public class IncomeListing extends WithMapId {
|
||||
@JsonProperty("security_id")
|
||||
@ApiModelProperty(
|
||||
value = "Ссылка на security",
|
||||
|
|
@ -120,7 +120,6 @@ public class Listing {
|
|||
)
|
||||
private LocalDate endDate;
|
||||
|
||||
|
||||
public UUID getSecurityId() {
|
||||
return securityId;
|
||||
}
|
||||
|
|
@ -240,4 +239,5 @@ public class Listing {
|
|||
public void setEndDate(LocalDate endDate) {
|
||||
this.endDate = endDate;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class IncomeSecurity {
|
||||
public class IncomeSecurity extends WithMapId {
|
||||
@JsonProperty("id")
|
||||
@ApiModelProperty(
|
||||
value = "id (uuid)",
|
||||
|
|
@ -174,7 +174,7 @@ public class IncomeSecurity {
|
|||
|
||||
|
||||
@JsonIgnore
|
||||
private List<Listing> listingList = new ArrayList<>();
|
||||
private List<IncomeListing> listingList = new ArrayList<>();
|
||||
|
||||
@JsonIgnore
|
||||
private List<CouponSchedule> couponScheduleList = new ArrayList<>();
|
||||
|
|
@ -185,12 +185,6 @@ public class IncomeSecurity {
|
|||
@JsonIgnore
|
||||
private List<IssuerCompany> issuerCompanyList = new ArrayList<>();
|
||||
|
||||
@JsonIgnore
|
||||
private boolean alreadyExist = false;
|
||||
|
||||
@JsonIgnore
|
||||
private Long mapId;
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
|
@ -335,11 +329,11 @@ public class IncomeSecurity {
|
|||
this.couponFrequency = couponFrequency;
|
||||
}
|
||||
|
||||
public List<Listing> getListingList() {
|
||||
public List<IncomeListing> getListingList() {
|
||||
return listingList;
|
||||
}
|
||||
|
||||
public void setListingList(List<Listing> listingList) {
|
||||
public void setListingList(List<IncomeListing> listingList) {
|
||||
this.listingList = listingList;
|
||||
}
|
||||
|
||||
|
|
@ -367,19 +361,4 @@ public class IncomeSecurity {
|
|||
this.issuerCompanyList = issuerCompanyList;
|
||||
}
|
||||
|
||||
public boolean isAlreadyExist() {
|
||||
return alreadyExist;
|
||||
}
|
||||
|
||||
public void setAlreadyExist(boolean alreadyExist) {
|
||||
this.alreadyExist = alreadyExist;
|
||||
}
|
||||
|
||||
public Long getMapId() {
|
||||
return mapId;
|
||||
}
|
||||
|
||||
public void setMapId(Long mapId) {
|
||||
this.mapId = mapId;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.gatewayapi.request.objects;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
|
@ -9,7 +10,7 @@ import java.math.BigDecimal;
|
|||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
|
||||
public class Nominal {
|
||||
public class Nominal extends WithMapId {
|
||||
@JsonProperty("security_id")
|
||||
@ApiModelProperty(
|
||||
value = "Ссылка на security",
|
||||
|
|
@ -42,6 +43,13 @@ public class Nominal {
|
|||
)
|
||||
private Boolean isDeleted;
|
||||
|
||||
@JsonIgnore
|
||||
private Long couponNumber;
|
||||
|
||||
@JsonIgnore
|
||||
private BigDecimal accruedCoupon;
|
||||
|
||||
|
||||
public UUID getSecurityId() {
|
||||
return securityId;
|
||||
}
|
||||
|
|
@ -73,4 +81,20 @@ public class Nominal {
|
|||
public void setDeleted(Boolean deleted) {
|
||||
isDeleted = deleted;
|
||||
}
|
||||
|
||||
public Long getCouponNumber() {
|
||||
return couponNumber;
|
||||
}
|
||||
|
||||
public void setCouponNumber(Long couponNumber) {
|
||||
this.couponNumber = couponNumber;
|
||||
}
|
||||
|
||||
public BigDecimal getAccruedCoupon() {
|
||||
return accruedCoupon;
|
||||
}
|
||||
|
||||
public void setAccruedCoupon(BigDecimal accruedCoupon) {
|
||||
this.accruedCoupon = accruedCoupon;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
package ru.spcex.clearing.gatewayapi.request.objects;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
public abstract class WithMapId {
|
||||
@JsonIgnore
|
||||
protected Long mapId;
|
||||
|
||||
@JsonIgnore
|
||||
protected boolean alreadyExist = false;
|
||||
|
||||
public Long getMapId() {
|
||||
return mapId;
|
||||
}
|
||||
|
||||
public void setMapId(Long mapId) {
|
||||
this.mapId = mapId;
|
||||
}
|
||||
|
||||
public boolean isAlreadyExist() {
|
||||
return alreadyExist;
|
||||
}
|
||||
|
||||
public void setAlreadyExist(boolean alreadyExist) {
|
||||
this.alreadyExist = alreadyExist;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue