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();
|
||||
String code = incomeListing.getCode();
|
||||
listingNewRequest.setMarket(code);
|
||||
if (!TextUtil.isEmpty(code)) {
|
||||
listingNewRequest.setSymbolCode(code.substring(0, Math.min(7, code.length())));
|
||||
}
|
||||
// if (!TextUtil.isEmpty(code)) {
|
||||
// listingNewRequest.setSymbolCode(code.substring(0, Math.min(7, code.length())));
|
||||
// }
|
||||
listingNewRequest.setSymbolCode(incomeListing.getSymbolName());
|
||||
listingNewRequest.setSymbolName(incomeListing.getSymbolName());
|
||||
listingNewRequest.setLotSize(incomeListing.getLotSize());
|
||||
listingNewRequest.setTradingCurrency(incomeListing.getTradingCurrency());
|
||||
listingNewRequest.setWorkflowStatus(incomeListing.getWorkflowStatus());
|
||||
|
|
@ -73,6 +75,7 @@ public class SecurityRequestAdapter {
|
|||
fixedIncomeCashFlowNewRequest.setAccruedCoupon(nominal.getAccruedCoupon());
|
||||
fixedIncomeCashFlowNewRequest.setNominalValue(nominal.getNominal());
|
||||
fixedIncomeCashFlowNewRequest.setNumber(nominal.getCouponNumber());
|
||||
fixedIncomeCashFlowNewRequest.setValueDate(nominal.getDate());
|
||||
return fixedIncomeCashFlowNewRequest;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import ru.spcex.platform.utils.validation.IValidator;
|
|||
import ru.spcex.platform.utils.validation.ValidatorImpl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
|
@ -46,7 +47,10 @@ public class FixedIncomeCashFlowValidationConfig {
|
|||
IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class
|
||||
);
|
||||
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;
|
||||
return null;
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -107,7 +107,12 @@ public class CouponPeriodService extends QueueConsumer implements InitializingBe
|
|||
|
||||
CouponPeriod couponPeriod = couponPeriodImdg.getSingleObjectByID(req.getId());
|
||||
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.getPeriodStartDate() != null) couponPeriod.setPeriodStartDate(req.getPeriodStartDate());
|
||||
couponPeriodImdg.update(couponPeriod);
|
||||
|
|
|
|||
|
|
@ -358,7 +358,10 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
log.error("Not a number \"{}\": {}", byRequest.getSecuritySymbol(), nan.toString());
|
||||
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)
|
||||
log.trace("FixedIncomeCashFlow not found by securityId={}", securityId);
|
||||
else
|
||||
|
|
@ -419,6 +422,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin
|
|||
updateRequest.setTradingCurrency(newRequest.getTradingCurrency());
|
||||
updateRequest.setWorkflowStatus(newRequest.getWorkflowStatus());
|
||||
updateRequest.setSymbolCode(newRequest.getSymbolCode());
|
||||
updateRequest.setSymbolName(newRequest.getSymbolName());
|
||||
return updateRequest;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,9 +110,15 @@ public class ListingService extends QueueConsumer implements InitializingBean {
|
|||
if (req.getSymbolCode() != null) {
|
||||
listing.setSymbolCode(req.getSymbolCode()); // listing.setSymbolCode(req.getSymbolCode());
|
||||
} 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());
|
||||
if (StringUtils.isEmpty(req.getWorkflowStatus())) {
|
||||
listing.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||
|
|
@ -151,8 +157,8 @@ public class ListingService extends QueueConsumer implements InitializingBean {
|
|||
|
||||
listing.setUpdated(Instant.now());
|
||||
listing.setLotSize(req.getLotSize());
|
||||
if (req.getSymbolCode()!=null) listing.setSymbolCode(req.getSymbolCode());
|
||||
//if (req.getSymbolName!=null) listing.setSymbolName(req.getSymbolName);
|
||||
if (req.getSymbolCode() != null) listing.setSymbolCode(req.getSymbolCode());
|
||||
if (req.getSymbolName() != null) listing.setSymbolName(req.getSymbolName());
|
||||
listing.setTradingCurrency(req.getTradingCurrency());
|
||||
if (StringUtils.isNotEmpty(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.validation.IValidationRule;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
|
|
@ -21,8 +22,10 @@ public enum CouponPeriodNewValidationRule implements IValidationRule<ImdgValidat
|
|||
return of(SecuritiesError.RequiredFieldIsEmpty, "securityId");
|
||||
}
|
||||
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_CouponPeriod, SpcexObjectBase.class);
|
||||
SpcexObjectBase couponPeriod = imdgDictionary.getFirstObjectByFieldValues(Map.of(
|
||||
"securityId", action.getSecurityId()));
|
||||
HashMap<String, Long> fields = new HashMap<>();
|
||||
fields.put("securityId", action.getSecurityId());
|
||||
fields.put("number", action.getNumber()); // may be null, but never
|
||||
SpcexObjectBase couponPeriod = imdgDictionary.getFirstObjectByFieldValues(fields);
|
||||
if (couponPeriod != null) {
|
||||
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.validation.IValidationRule;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
|
|
@ -21,10 +22,12 @@ public enum CouponPeriodUpdateValidationRule implements IValidationRule<ImdgVali
|
|||
return of(SecuritiesError.RequiredFieldIsEmpty, "securityId");
|
||||
}
|
||||
Imdg<SpcexObjectBase> imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_CouponPeriod, SpcexObjectBase.class);
|
||||
SpcexObjectBase currency = imdgDictionary.getFirstObjectByFieldValues(Map.of(
|
||||
"securityId", action.getSecurityId()));
|
||||
if (currency == null) {
|
||||
return of(SecuritiesError.CouponPeriodNotFound, "securityId");
|
||||
HashMap<String, Long> query = new HashMap<>();
|
||||
query.put("securityId", action.getSecurityId());
|
||||
query.put("number", action.getNumber());
|
||||
SpcexObjectBase cPeriod = imdgDictionary.getFirstObjectByFieldValues(query);
|
||||
if (cPeriod == null) {
|
||||
return of(SecuritiesError.CouponPeriodNotFound, "securityId=" + action.getSecurityId() + " and number=" + action.getNumber());
|
||||
}
|
||||
return empty();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
|||
private static final MatcherFactory.Matcher<CouponPeriod> COUPON_PERIOD_MATCHER = usingIgnoringFieldsComparator();
|
||||
private final long ID = currentId.getAndIncrement();
|
||||
private final long securityId = 3123L;
|
||||
private final long number = 30200L;
|
||||
private final int PARTITION = 0;
|
||||
private final String countryCode = "countryCode";
|
||||
private final String currencyCode = "currencyCode";
|
||||
|
|
@ -82,7 +83,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
|||
final CouponPeriod existCouponPeriod = new CouponPeriod();
|
||||
existCouponPeriod.setSecurityId(securityId);
|
||||
existCouponPeriod.setCouponRate(BigDecimal.ZERO);
|
||||
existCouponPeriod.setNumber(Long.MIN_VALUE);
|
||||
existCouponPeriod.setNumber(number);
|
||||
existCouponPeriod.setPeriodEndDate(LocalDate.ofEpochDay(0));
|
||||
existCouponPeriod.setPeriodStartDate(LocalDate.ofEpochDay(0));
|
||||
Long id = couponPeriodImdg.insert(existCouponPeriod);
|
||||
|
|
@ -93,7 +94,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
|||
final CouponPeriod predictableCoupon = new CouponPeriod();
|
||||
predictableCoupon.setSecurityId(securityId);
|
||||
predictableCoupon.setCouponRate(BigDecimal.TEN);
|
||||
predictableCoupon.setNumber(Long.MAX_VALUE);
|
||||
predictableCoupon.setNumber(number);
|
||||
predictableCoupon.setPeriodEndDate(testStartDate);
|
||||
predictableCoupon.setPeriodStartDate(testEndDate);
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ public class CouponPeriodServiceTest extends AbstractServiceTest {
|
|||
predictableCoupon.setPeriodEndDate(LocalDate.now());
|
||||
request.setId(id);
|
||||
request.setCouponRate(BigDecimal.TEN);
|
||||
request.setNumber(Long.MAX_VALUE);
|
||||
request.setNumber(number);
|
||||
request.setSecurityId(securityId);
|
||||
request.setPeriodEndDate(testStartDate);
|
||||
request.setPeriodStartDate(testEndDate);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ public class ListingNewRequest {
|
|||
private String workflowStatus;
|
||||
@JsonProperty
|
||||
private String symbolCode;
|
||||
@JsonProperty
|
||||
private String symbolName;
|
||||
|
||||
public Long getSecurityId() {
|
||||
return securityId;
|
||||
|
|
@ -65,4 +67,12 @@ public class ListingNewRequest {
|
|||
public void setSymbolCode(String 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;
|
||||
@JsonProperty
|
||||
private String symbolCode;
|
||||
@JsonProperty
|
||||
private String symbolName;
|
||||
|
||||
@Override
|
||||
public Long getId() {
|
||||
|
|
@ -77,4 +79,12 @@ public class ListingUpdateRequest implements WithId {
|
|||
public void setSymbolCode(String 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