gateway-api securities-service http://jira.mfd.msk:8088/browse/CLS-516
This commit is contained in:
parent
8e73a2eced
commit
f0a090b00c
10 changed files with 68 additions and 19 deletions
|
|
@ -50,9 +50,11 @@ public class SecurityRequestAdapter {
|
||||||
ListingNewRequest listingNewRequest = new ListingNewRequest();
|
ListingNewRequest listingNewRequest = new ListingNewRequest();
|
||||||
String code = incomeListing.getCode();
|
String code = incomeListing.getCode();
|
||||||
listingNewRequest.setMarket(code);
|
listingNewRequest.setMarket(code);
|
||||||
if (!TextUtil.isEmpty(code)) {
|
// if (!TextUtil.isEmpty(code)) {
|
||||||
listingNewRequest.setSymbolCode(code.substring(0, Math.min(7, code.length())));
|
// listingNewRequest.setSymbolCode(code.substring(0, Math.min(7, code.length())));
|
||||||
}
|
// }
|
||||||
|
listingNewRequest.setSymbolCode(incomeListing.getSymbolName());
|
||||||
|
listingNewRequest.setSymbolName(incomeListing.getSymbolName());
|
||||||
listingNewRequest.setLotSize(incomeListing.getLotSize());
|
listingNewRequest.setLotSize(incomeListing.getLotSize());
|
||||||
listingNewRequest.setTradingCurrency(incomeListing.getTradingCurrency());
|
listingNewRequest.setTradingCurrency(incomeListing.getTradingCurrency());
|
||||||
listingNewRequest.setWorkflowStatus(incomeListing.getWorkflowStatus());
|
listingNewRequest.setWorkflowStatus(incomeListing.getWorkflowStatus());
|
||||||
|
|
@ -73,6 +75,7 @@ public class SecurityRequestAdapter {
|
||||||
fixedIncomeCashFlowNewRequest.setAccruedCoupon(nominal.getAccruedCoupon());
|
fixedIncomeCashFlowNewRequest.setAccruedCoupon(nominal.getAccruedCoupon());
|
||||||
fixedIncomeCashFlowNewRequest.setNominalValue(nominal.getNominal());
|
fixedIncomeCashFlowNewRequest.setNominalValue(nominal.getNominal());
|
||||||
fixedIncomeCashFlowNewRequest.setNumber(nominal.getCouponNumber());
|
fixedIncomeCashFlowNewRequest.setNumber(nominal.getCouponNumber());
|
||||||
|
fixedIncomeCashFlowNewRequest.setValueDate(nominal.getDate());
|
||||||
return fixedIncomeCashFlowNewRequest;
|
return fixedIncomeCashFlowNewRequest;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ import ru.spcex.platform.utils.validation.IValidator;
|
||||||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
@ -46,7 +47,10 @@ public class FixedIncomeCashFlowValidationConfig {
|
||||||
IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class
|
IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class
|
||||||
);
|
);
|
||||||
Long securityId = Long.valueOf(securitySymbol);
|
Long securityId = Long.valueOf(securitySymbol);
|
||||||
Collection<FixedIncomeCashFlow> fixedIncomeCashFlows = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(Map.of("securityId", securityId));
|
HashMap<String, Long> query = new HashMap<>();
|
||||||
|
query.put("securityId", securityId);
|
||||||
|
query.put("number", fixedIncomeCashFlowNewRequest.getNumber());
|
||||||
|
Collection<FixedIncomeCashFlow> fixedIncomeCashFlows = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(query);
|
||||||
if (!fixedIncomeCashFlows.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists;
|
if (!fixedIncomeCashFlows.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists;
|
||||||
return null;
|
return null;
|
||||||
}),
|
}),
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,12 @@ public class CouponPeriodService extends QueueConsumer implements InitializingBe
|
||||||
|
|
||||||
CouponPeriod couponPeriod = couponPeriodImdg.getSingleObjectByID(req.getId());
|
CouponPeriod couponPeriod = couponPeriodImdg.getSingleObjectByID(req.getId());
|
||||||
if (req.getCouponRate() != null) couponPeriod.setCouponRate(req.getCouponRate());
|
if (req.getCouponRate() != null) couponPeriod.setCouponRate(req.getCouponRate());
|
||||||
if (req.getNumber() != null) couponPeriod.setNumber(req.getNumber());
|
if (req.getNumber() != null) {
|
||||||
|
if (!req.getNumber().equals(couponPeriod.getNumber())) {
|
||||||
|
log.warn("For couponPeriod[{}].number={} change to {}", couponPeriod.getId(), couponPeriod.getNumber(), req.getNumber());
|
||||||
|
}
|
||||||
|
couponPeriod.setNumber(req.getNumber());
|
||||||
|
}
|
||||||
if (req.getPeriodEndDate() != null) couponPeriod.setPeriodEndDate(req.getPeriodEndDate());
|
if (req.getPeriodEndDate() != null) couponPeriod.setPeriodEndDate(req.getPeriodEndDate());
|
||||||
if (req.getPeriodStartDate() != null) couponPeriod.setPeriodStartDate(req.getPeriodStartDate());
|
if (req.getPeriodStartDate() != null) couponPeriod.setPeriodStartDate(req.getPeriodStartDate());
|
||||||
couponPeriodImdg.update(couponPeriod);
|
couponPeriodImdg.update(couponPeriod);
|
||||||
|
|
|
||||||
|
|
@ -358,7 +358,10 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
||||||
log.error("Not a number \"{}\": {}", byRequest.getSecuritySymbol(), nan.toString());
|
log.error("Not a number \"{}\": {}", byRequest.getSecuritySymbol(), nan.toString());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
FixedIncomeCashFlow existFixedIncomeCashFlow = fixedIncomeCashFlowImdg.getFirstObjectByFieldValues(Map.of("securityId", securityId));
|
Map<String, Long> query = new HashMap<>();
|
||||||
|
query.put("securityId", securityId);
|
||||||
|
query.put("number", byRequest.getNumber());
|
||||||
|
FixedIncomeCashFlow existFixedIncomeCashFlow = fixedIncomeCashFlowImdg.getFirstObjectByFieldValues(query);
|
||||||
if (existFixedIncomeCashFlow == null)
|
if (existFixedIncomeCashFlow == null)
|
||||||
log.trace("FixedIncomeCashFlow not found by securityId={}", securityId);
|
log.trace("FixedIncomeCashFlow not found by securityId={}", securityId);
|
||||||
else
|
else
|
||||||
|
|
@ -419,6 +422,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
||||||
updateRequest.setTradingCurrency(newRequest.getTradingCurrency());
|
updateRequest.setTradingCurrency(newRequest.getTradingCurrency());
|
||||||
updateRequest.setWorkflowStatus(newRequest.getWorkflowStatus());
|
updateRequest.setWorkflowStatus(newRequest.getWorkflowStatus());
|
||||||
updateRequest.setSymbolCode(newRequest.getSymbolCode());
|
updateRequest.setSymbolCode(newRequest.getSymbolCode());
|
||||||
|
updateRequest.setSymbolName(newRequest.getSymbolName());
|
||||||
return updateRequest;
|
return updateRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -110,9 +110,15 @@ public class ListingService extends QueueConsumer implements InitializingBean {
|
||||||
if (req.getSymbolCode() != null) {
|
if (req.getSymbolCode() != null) {
|
||||||
listing.setSymbolCode(req.getSymbolCode()); // listing.setSymbolCode(req.getSymbolCode());
|
listing.setSymbolCode(req.getSymbolCode()); // listing.setSymbolCode(req.getSymbolCode());
|
||||||
} else {
|
} else {
|
||||||
listing.setSymbolCode(security.getSecuritySymbol());
|
if (security != null)
|
||||||
|
listing.setSymbolCode(security.getSecuritySymbol());
|
||||||
|
}
|
||||||
|
if (req.getSymbolName() != null) {
|
||||||
|
listing.setSymbolName(req.getSymbolName()); // api-gateway
|
||||||
|
} else {
|
||||||
|
if (security != null)
|
||||||
|
listing.setSymbolName(security.getFullName()); // req.getSymbolName
|
||||||
}
|
}
|
||||||
listing.setSymbolName(security.getFullName()); // req.getSymbolName
|
|
||||||
listing.setTradingCurrency(req.getTradingCurrency());
|
listing.setTradingCurrency(req.getTradingCurrency());
|
||||||
if (StringUtils.isEmpty(req.getWorkflowStatus())) {
|
if (StringUtils.isEmpty(req.getWorkflowStatus())) {
|
||||||
listing.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
listing.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
|
|
@ -151,8 +157,8 @@ public class ListingService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
listing.setUpdated(Instant.now());
|
listing.setUpdated(Instant.now());
|
||||||
listing.setLotSize(req.getLotSize());
|
listing.setLotSize(req.getLotSize());
|
||||||
if (req.getSymbolCode()!=null) listing.setSymbolCode(req.getSymbolCode());
|
if (req.getSymbolCode() != null) listing.setSymbolCode(req.getSymbolCode());
|
||||||
//if (req.getSymbolName!=null) listing.setSymbolName(req.getSymbolName);
|
if (req.getSymbolName() != null) listing.setSymbolName(req.getSymbolName());
|
||||||
listing.setTradingCurrency(req.getTradingCurrency());
|
listing.setTradingCurrency(req.getTradingCurrency());
|
||||||
if (StringUtils.isNotEmpty(req.getWorkflowStatus())) {
|
if (StringUtils.isNotEmpty(req.getWorkflowStatus())) {
|
||||||
listing.setWorkflowStatus(req.getWorkflowStatus());
|
listing.setWorkflowStatus(req.getWorkflowStatus());
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
@ -21,8 +22,10 @@ public enum CouponPeriodNewValidationRule implements IValidationRule<ImdgValidat
|
||||||
return of(SecuritiesError.RequiredFieldIsEmpty, "securityId");
|
return of(SecuritiesError.RequiredFieldIsEmpty, "securityId");
|
||||||
}
|
}
|
||||||
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_CouponPeriod, SpcexObjectBase.class);
|
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_CouponPeriod, SpcexObjectBase.class);
|
||||||
SpcexObjectBase couponPeriod = imdgDictionary.getFirstObjectByFieldValues(Map.of(
|
HashMap<String, Long> fields = new HashMap<>();
|
||||||
"securityId", action.getSecurityId()));
|
fields.put("securityId", action.getSecurityId());
|
||||||
|
fields.put("number", action.getNumber()); // may be null, but never
|
||||||
|
SpcexObjectBase couponPeriod = imdgDictionary.getFirstObjectByFieldValues(fields);
|
||||||
if (couponPeriod != null) {
|
if (couponPeriod != null) {
|
||||||
return of(SecuritiesError.CouponPeriodAlreadyExists, "securityId");
|
return of(SecuritiesError.CouponPeriodAlreadyExists, "securityId");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.validation.IValidationRule;
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
@ -21,10 +22,12 @@ public enum CouponPeriodUpdateValidationRule implements IValidationRule<ImdgVali
|
||||||
return of(SecuritiesError.RequiredFieldIsEmpty, "securityId");
|
return of(SecuritiesError.RequiredFieldIsEmpty, "securityId");
|
||||||
}
|
}
|
||||||
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_CouponPeriod, SpcexObjectBase.class);
|
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_CouponPeriod, SpcexObjectBase.class);
|
||||||
SpcexObjectBase currency = imdgDictionary.getFirstObjectByFieldValues(Map.of(
|
HashMap<String, Long> query = new HashMap<>();
|
||||||
"securityId", action.getSecurityId()));
|
query.put("securityId", action.getSecurityId());
|
||||||
if (currency == null) {
|
query.put("number", action.getNumber());
|
||||||
return of(SecuritiesError.CouponPeriodNotFound, "securityId");
|
SpcexObjectBase cPeriod = imdgDictionary.getFirstObjectByFieldValues(query);
|
||||||
|
if (cPeriod == null) {
|
||||||
|
return of(SecuritiesError.CouponPeriodNotFound, "securityId=" + action.getSecurityId() + " and number=" + action.getNumber());
|
||||||
}
|
}
|
||||||
return empty();
|
return empty();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
||||||
private static final MatcherFactory.Matcher<CouponPeriod> COUPON_PERIOD_MATCHER = usingIgnoringFieldsComparator();
|
private static final MatcherFactory.Matcher<CouponPeriod> COUPON_PERIOD_MATCHER = usingIgnoringFieldsComparator();
|
||||||
private final long ID = currentId.getAndIncrement();
|
private final long ID = currentId.getAndIncrement();
|
||||||
private final long securityId = 3123L;
|
private final long securityId = 3123L;
|
||||||
|
private final long number = 30200L;
|
||||||
private final int PARTITION = 0;
|
private final int PARTITION = 0;
|
||||||
private final String countryCode = "countryCode";
|
private final String countryCode = "countryCode";
|
||||||
private final String currencyCode = "currencyCode";
|
private final String currencyCode = "currencyCode";
|
||||||
|
|
@ -82,7 +83,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
||||||
final CouponPeriod existCouponPeriod = new CouponPeriod();
|
final CouponPeriod existCouponPeriod = new CouponPeriod();
|
||||||
existCouponPeriod.setSecurityId(securityId);
|
existCouponPeriod.setSecurityId(securityId);
|
||||||
existCouponPeriod.setCouponRate(BigDecimal.ZERO);
|
existCouponPeriod.setCouponRate(BigDecimal.ZERO);
|
||||||
existCouponPeriod.setNumber(Long.MIN_VALUE);
|
existCouponPeriod.setNumber(number);
|
||||||
existCouponPeriod.setPeriodEndDate(LocalDate.ofEpochDay(0));
|
existCouponPeriod.setPeriodEndDate(LocalDate.ofEpochDay(0));
|
||||||
existCouponPeriod.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
existCouponPeriod.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
||||||
Long id = couponPeriodImdg.insert(existCouponPeriod);
|
Long id = couponPeriodImdg.insert(existCouponPeriod);
|
||||||
|
|
@ -93,7 +94,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
||||||
final CouponPeriod predictableCoupon = new CouponPeriod();
|
final CouponPeriod predictableCoupon = new CouponPeriod();
|
||||||
predictableCoupon.setSecurityId(securityId);
|
predictableCoupon.setSecurityId(securityId);
|
||||||
predictableCoupon.setCouponRate(BigDecimal.TEN);
|
predictableCoupon.setCouponRate(BigDecimal.TEN);
|
||||||
predictableCoupon.setNumber(Long.MAX_VALUE);
|
predictableCoupon.setNumber(number);
|
||||||
predictableCoupon.setPeriodEndDate(testStartDate);
|
predictableCoupon.setPeriodEndDate(testStartDate);
|
||||||
predictableCoupon.setPeriodStartDate(testEndDate);
|
predictableCoupon.setPeriodStartDate(testEndDate);
|
||||||
|
|
||||||
|
|
@ -101,7 +102,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
||||||
predictableCoupon.setPeriodEndDate(LocalDate.now());
|
predictableCoupon.setPeriodEndDate(LocalDate.now());
|
||||||
request.setId(id);
|
request.setId(id);
|
||||||
request.setCouponRate(BigDecimal.TEN);
|
request.setCouponRate(BigDecimal.TEN);
|
||||||
request.setNumber(Long.MAX_VALUE);
|
request.setNumber(number);
|
||||||
request.setSecurityId(securityId);
|
request.setSecurityId(securityId);
|
||||||
request.setPeriodEndDate(testStartDate);
|
request.setPeriodEndDate(testStartDate);
|
||||||
request.setPeriodStartDate(testEndDate);
|
request.setPeriodStartDate(testEndDate);
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@ public class ListingNewRequest {
|
||||||
private String workflowStatus;
|
private String workflowStatus;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private String symbolCode;
|
private String symbolCode;
|
||||||
|
@JsonProperty
|
||||||
|
private String symbolName;
|
||||||
|
|
||||||
public Long getSecurityId() {
|
public Long getSecurityId() {
|
||||||
return securityId;
|
return securityId;
|
||||||
|
|
@ -65,4 +67,12 @@ public class ListingNewRequest {
|
||||||
public void setSymbolCode(String symbolCode) {
|
public void setSymbolCode(String symbolCode) {
|
||||||
this.symbolCode = symbolCode;
|
this.symbolCode = symbolCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSymbolName() {
|
||||||
|
return symbolName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSymbolName(String symbolName) {
|
||||||
|
this.symbolName = symbolName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ public class ListingUpdateRequest implements WithId {
|
||||||
private String workflowStatus;
|
private String workflowStatus;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private String symbolCode;
|
private String symbolCode;
|
||||||
|
@JsonProperty
|
||||||
|
private String symbolName;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
|
|
@ -77,4 +79,12 @@ public class ListingUpdateRequest implements WithId {
|
||||||
public void setSymbolCode(String symbolCode) {
|
public void setSymbolCode(String symbolCode) {
|
||||||
this.symbolCode = symbolCode;
|
this.symbolCode = symbolCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSymbolName() {
|
||||||
|
return symbolName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSymbolName(String symbolName) {
|
||||||
|
this.symbolName = symbolName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue