Поправил MoneyMarketSecurityService и валидацию в соответствии с ТЗ. Исправил MoneyMarketSecurityMapStore.
This commit is contained in:
parent
9e4b4fd7df
commit
0b062fc97c
20 changed files with 820 additions and 31 deletions
|
|
@ -7,9 +7,12 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.imdg.base.TemplateMapStore;
|
import ru.spcex.clearing.imdg.base.TemplateMapStore;
|
||||||
import ru.spcex.platform.utils.time.TimeUtil;
|
import ru.spcex.platform.utils.time.TimeUtil;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class EquitySecurityMapStore extends TemplateMapStore<EquitySecurity> {
|
public class EquitySecurityMapStore extends TemplateMapStore<EquitySecurity> {
|
||||||
|
|
@ -31,7 +34,7 @@ public class EquitySecurityMapStore extends TemplateMapStore<EquitySecurity> {
|
||||||
@Override
|
@Override
|
||||||
public String[] getFields() {
|
public String[] getFields() {
|
||||||
return new String[]{
|
return new String[]{
|
||||||
"ID", "SECURITY_ID", "SHARE_TYPE"
|
"ID", "SECURITY_ID", "SHARE_TYPE", "LOT_SIZE"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -55,6 +58,7 @@ public class EquitySecurityMapStore extends TemplateMapStore<EquitySecurity> {
|
||||||
object.setId(resultSet.getObject("ID", Long.class));
|
object.setId(resultSet.getObject("ID", Long.class));
|
||||||
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
|
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
|
||||||
object.setShareType(resultSet.getObject("SHARE_TYPE", String.class));
|
object.setShareType(resultSet.getObject("SHARE_TYPE", String.class));
|
||||||
|
object.setLotSize(resultSet.getObject("LOT_SIZE", BigDecimal.class));
|
||||||
fillBySecurity(object, object.getSecurityId());
|
fillBySecurity(object, object.getSecurityId());
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
|
||||||
object.setNominalValue(resultSet.getObject("NOMINAL_VALUE", BigDecimal.class));
|
object.setNominalValue(resultSet.getObject("NOMINAL_VALUE", BigDecimal.class));
|
||||||
object.setNominalCurrency(resultSet.getObject("NOMINAL_CURRENCY", String.class));
|
object.setNominalCurrency(resultSet.getObject("NOMINAL_CURRENCY", String.class));
|
||||||
object.setTermType(resultSet.getObject("TERM_TYPE", String.class));
|
object.setTermType(resultSet.getObject("TERM_TYPE", String.class));
|
||||||
object.setTermType(resultSet.getObject("LOT_SIZE", String.class));
|
object.setLotSize(resultSet.getObject("LOT_SIZE", BigDecimal.class));
|
||||||
fillBySecurity(object, object.getSecurityId());
|
fillBySecurity(object, object.getSecurityId());
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
package ru.spcex.clearing.securities.component;
|
package ru.spcex.clearing.securities.component;
|
||||||
|
|
||||||
|
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||||
import ru.clearing.classes.statics.data.misc.Listing;
|
import ru.clearing.classes.statics.data.misc.Listing;
|
||||||
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
|
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
||||||
import ru.spcex.platform.enumeration.Market;
|
import ru.spcex.platform.enumeration.Market;
|
||||||
import ru.spcex.platform.enumeration.Status;
|
import ru.spcex.platform.enumeration.Status;
|
||||||
|
|
@ -21,4 +23,16 @@ public class ListingBuilder {
|
||||||
listing.setWorkflowStatus(Status.Active.getKey());
|
listing.setWorkflowStatus(Status.Active.getKey());
|
||||||
return listing;
|
return listing;
|
||||||
}
|
}
|
||||||
|
public Listing byNewEquity(EquitySecurity equitySecurity, EquitySecurityNewRequest request) {
|
||||||
|
Listing listing = new Listing();
|
||||||
|
listing.setCreated(equitySecurity.getCreated());
|
||||||
|
listing.setSecurityId(equitySecurity.getId());
|
||||||
|
listing.setLotSize(BigDecimal.valueOf(request.getLotSize()));
|
||||||
|
listing.setMarket(Market.mkrs.getKey());
|
||||||
|
listing.setSymbolCode(equitySecurity.getSecuritySymbol());
|
||||||
|
listing.setSymbolName(equitySecurity.getFullName());
|
||||||
|
// listing.setTradingCurrency(equitySecurity.getNominalCurrency());
|
||||||
|
listing.setWorkflowStatus(Status.Active.getKey());
|
||||||
|
return listing;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.securities.errors;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumId;
|
import ru.spcex.platform.utils.enumeration.IEnumId;
|
||||||
|
|
||||||
public enum SecuritiesError implements IEnumId {
|
public enum SecuritiesError implements IEnumId {
|
||||||
|
RequiredFieldIsEmpty(1002L),
|
||||||
WrongFieldValue(1004L),
|
WrongFieldValue(1004L),
|
||||||
InstrumentAlreadyExists(1010L),
|
InstrumentAlreadyExists(1010L),
|
||||||
InstrumentNotActive(1012L),
|
InstrumentNotActive(1012L),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,131 @@
|
||||||
|
package ru.spcex.clearing.securities.service.cud;
|
||||||
|
|
||||||
|
import org.apache.kafka.clients.consumer.Consumer;
|
||||||
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.instrument.issue.EquitySecurity;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Listing;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityUpdateRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.Status;
|
||||||
|
import ru.spcex.clearing.securities.component.ListingBuilder;
|
||||||
|
import ru.spcex.clearing.securities.validation.ValidationProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgId;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgTransaction;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class EquitySecurityService extends QueueConsumer implements InitializingBean {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
private final Imdg<EquitySecurity> equitySecurityImdg;
|
||||||
|
private final Imdg<Listing> listingImdg;
|
||||||
|
private final ImdgProvider imdgProvider;
|
||||||
|
private final ImdgId idGenerator;
|
||||||
|
private final ValidationProvider validation;
|
||||||
|
private final IMessageResolver messageResolver;
|
||||||
|
private final ListingBuilder listingBuilder = new ListingBuilder();
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public EquitySecurityService(Consumer<String, Object> kafkaQueue,
|
||||||
|
Producer<String, Object> kafkaProducer,
|
||||||
|
ImdgProvider imdgProvider,
|
||||||
|
ValidationProvider validation,
|
||||||
|
IMessageResolver messageResolver) {
|
||||||
|
super(kafkaQueue, kafkaProducer);
|
||||||
|
this.validation = validation;
|
||||||
|
this.equitySecurityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||||
|
this.listingImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||||
|
this.imdgProvider = imdgProvider;
|
||||||
|
this.idGenerator = imdgProvider.getImdgIdGenerator();
|
||||||
|
this.messageResolver = messageResolver;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterPropertiesSet() {
|
||||||
|
callback(EquitySecurityNewRequest.class)
|
||||||
|
.setFunction(this::newEquity)
|
||||||
|
.forDestination(Consts.DESTINATION_MONEY_MARKET_SECURITY_NEW, callbacks::put);
|
||||||
|
callback(EquitySecurityUpdateRequest.class)
|
||||||
|
.setFunction(this::updateEquity)
|
||||||
|
.forDestination(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, callbacks::put);
|
||||||
|
callback(CommonDeleteRequest.class)
|
||||||
|
.setFunction(this::deleteEquity)
|
||||||
|
.forDestination(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, callbacks::put);
|
||||||
|
imdgProvider.waitAvailable();
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
private RequestInfoUpdate newEquity(BaseRequest<EquitySecurityNewRequest> userRequest){
|
||||||
|
ImdgTransaction transaction = imdgProvider.newTransaction();
|
||||||
|
EquitySecurityNewRequest req = userRequest.getRequestPayload();
|
||||||
|
Optional<EnumMessage> validationError = validation.equityNewValidator()
|
||||||
|
.apply(req)
|
||||||
|
.tillFirstError();
|
||||||
|
if (validationError.isPresent()) {
|
||||||
|
String errorMsg = messageResolver.resolve(validationError.get());
|
||||||
|
log.error("cannot process EquitySecurityNewRequest id={}: {}", userRequest.getId(), errorMsg);
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(userRequest.getId())
|
||||||
|
.setStatus(Status.Error)
|
||||||
|
.setMessage(errorMsg);
|
||||||
|
}
|
||||||
|
log.debug("EquitySecurityNewRequest received");
|
||||||
|
EquitySecurity equity = new EquitySecurity();
|
||||||
|
equity.setId(idGenerator.nextId());
|
||||||
|
equity.setSecuritySymbol(req.getSecuritySymbol());
|
||||||
|
equity.setShortName(req.getShortName());
|
||||||
|
equity.setFullName(req.getFullName());
|
||||||
|
equity.setIsin(req.getIsin());
|
||||||
|
equity.setShareType(req.getShareType());
|
||||||
|
equity.setLotSize(req.getLotSize() != null ? BigDecimal.valueOf(req.getLotSize()) : null);
|
||||||
|
equity.setIssuerId(req.getIssuerId());
|
||||||
|
equity.setFullNameEng(req.getFullNameEng());
|
||||||
|
equity.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Active.getKey());
|
||||||
|
equity.setInstrumentType(req.getInstrumentType());
|
||||||
|
equity.setSecurityId(equity.getId());
|
||||||
|
equity.setCreated(Instant.now());
|
||||||
|
try {
|
||||||
|
transaction.beginTransaction();
|
||||||
|
Imdg<EquitySecurity> equityImdg = transaction.getImdg(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class);
|
||||||
|
Imdg<Listing> listingMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class);
|
||||||
|
//одним скопом выполняем реквест
|
||||||
|
equityImdg.insert(equity);
|
||||||
|
Listing listing = listingBuilder.byNewEquity(equity, req);
|
||||||
|
listingMap.insert(listing);
|
||||||
|
//и сохраняем обновленный
|
||||||
|
// reqInfoMap.insert(reqInfo);
|
||||||
|
transaction.commitTransaction();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
transaction.rollbackTransaction();
|
||||||
|
// RequestInfo.update(reqInfo, Status.Error, ExceptionUtils.getStackTrace(e));
|
||||||
|
// requestInfoImdg.insert(reqInfo);
|
||||||
|
}
|
||||||
|
log.debug("successfully processed, request id {}, new object id {}", userRequest.getId(), equity.getId());
|
||||||
|
return null; // default success
|
||||||
|
}
|
||||||
|
|
||||||
|
private RequestInfoUpdate updateEquity(BaseRequest<EquitySecurityUpdateRequest> userRequest){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private RequestInfoUpdate deleteEquity(BaseRequest<CommonDeleteRequest> userRequest) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -111,11 +111,18 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
|
||||||
mms.setStartDate(req.getStartDate());
|
mms.setStartDate(req.getStartDate());
|
||||||
mms.setEndDate(req.getEndDate());
|
mms.setEndDate(req.getEndDate());
|
||||||
mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null);
|
mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null);
|
||||||
|
mms.setLotSize(req.getLotSize() != null ? BigDecimal.valueOf(req.getLotSize()) : null);
|
||||||
mms.setNominalCurrency(req.getNominalCurrency());
|
mms.setNominalCurrency(req.getNominalCurrency());
|
||||||
mms.setInstrumentType(req.getInstrumentType());
|
mms.setInstrumentType(req.getInstrumentType());
|
||||||
mms.setFullName(req.getFullName());
|
mms.setFullName(req.getFullName());
|
||||||
|
mms.setShortName(req.getShortName());
|
||||||
|
mms.setFullNameEng(req.getFullNameEng());
|
||||||
|
mms.setShortNameEng(req.getShortNameEng());
|
||||||
mms.setSecuritySymbol(req.getSecuritySymbol());
|
mms.setSecuritySymbol(req.getSecuritySymbol());
|
||||||
|
mms.setTermType(req.getTermType());
|
||||||
|
mms.setIsin(req.getIsin());
|
||||||
mms.setSecurityId(mms.getId());
|
mms.setSecurityId(mms.getId());
|
||||||
|
mms.setDescription(mms.getDescription());
|
||||||
mms.setCreated(Instant.now());
|
mms.setCreated(Instant.now());
|
||||||
mms.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Active.getKey());
|
mms.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Active.getKey());
|
||||||
try {
|
try {
|
||||||
|
|
@ -157,16 +164,27 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
|
||||||
mms.setStartDate(req.getStartDate());
|
mms.setStartDate(req.getStartDate());
|
||||||
mms.setEndDate(req.getEndDate());
|
mms.setEndDate(req.getEndDate());
|
||||||
mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null);
|
mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null);
|
||||||
|
mms.setLotSize(req.getLotSize() != null ? BigDecimal.valueOf(req.getLotSize()) : null);
|
||||||
mms.setNominalCurrency(req.getNominalCurrency());
|
mms.setNominalCurrency(req.getNominalCurrency());
|
||||||
mms.setInstrumentType(req.getInstrumentType());
|
mms.setInstrumentType(req.getInstrumentType());
|
||||||
mms.setFullName(req.getFullName());
|
mms.setFullName(req.getFullName());
|
||||||
|
mms.setShortName(req.getShortName());
|
||||||
|
mms.setFullNameEng(req.getFullNameEng());
|
||||||
|
mms.setShortNameEng(req.getShortNameEng());
|
||||||
|
mms.setSecuritySymbol(req.getSecuritySymbol());
|
||||||
|
mms.setTermType(req.getTermType());
|
||||||
|
mms.setIsin(req.getIsin());
|
||||||
|
mms.setSecurityId(mms.getId());
|
||||||
|
mms.setDescription(mms.getDescription());
|
||||||
|
mms.setCreated(Instant.now());
|
||||||
|
|
||||||
moneyMarketSecurityMap.update(mms);
|
moneyMarketSecurityMap.update(mms);
|
||||||
Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", mms.getId()));
|
Listing listing = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", mms.getId()));
|
||||||
if (listing == null) {
|
if (listing == null) {
|
||||||
log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId());
|
log.error("MoneyMarketSecurityUpdateRequest id {} couldn't find listing with securityId {}", req.getId(), mms.getId());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
listing.setLotSize(BigDecimal.valueOf(req.getLotSize()));
|
listing.setLotSize(mms.getLotSize());
|
||||||
listing.setUpdated(updateTime);
|
listing.setUpdated(updateTime);
|
||||||
listingImdg.update(listing);
|
listingImdg.update(listing);
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,12 @@ package ru.spcex.clearing.securities.validation;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityUpdateRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityUpdateRequest;
|
||||||
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
import ru.spcex.clearing.securities.validation.rule.EndDtAfterStartDt;
|
import ru.spcex.clearing.securities.validation.rule.*;
|
||||||
import ru.spcex.clearing.securities.validation.rule.MmsDeleteValidationRule;
|
|
||||||
import ru.spcex.clearing.securities.validation.rule.MmsNewValidationRule;
|
|
||||||
import ru.spcex.clearing.securities.validation.rule.MmsUpdateValidationRule;
|
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -23,10 +22,12 @@ import java.util.function.Function;
|
||||||
@Component
|
@Component
|
||||||
public class ValidationProvider {
|
public class ValidationProvider {
|
||||||
private final Imdg<SpcexObjectBase> mmsMap;
|
private final Imdg<SpcexObjectBase> mmsMap;
|
||||||
|
private final Imdg<SpcexObjectBase> equityMap;
|
||||||
|
|
||||||
|
|
||||||
public ValidationProvider(ImdgProvider imdgProvider) {
|
public ValidationProvider(ImdgProvider imdgProvider) {
|
||||||
this.mmsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, SpcexObjectBase.class);
|
this.mmsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, SpcexObjectBase.class);
|
||||||
|
this.equityMap = imdgProvider.getImdg(IMDGDistributedNames.Map_EquitySecurity, SpcexObjectBase.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Function<MoneyMarketSecurityNewRequest, IValidator> mmsNewValidator() {
|
public Function<MoneyMarketSecurityNewRequest, IValidator> mmsNewValidator() {
|
||||||
|
|
@ -36,7 +37,9 @@ public class ValidationProvider {
|
||||||
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap);
|
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
EndDtAfterStartDt.instance(MoneyMarketSecurityNewRequest.class),
|
EndDtAfterStartDt.instance(MoneyMarketSecurityNewRequest.class),
|
||||||
MmsNewValidationRule.SecuritySymbolUniq
|
new NotPresentBySecuritySymbolAndWorkflowStatusActv(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentAlreadyExists, MoneyMarketSecurityNewRequest.class),
|
||||||
|
new IsValidInstrumentType(SecuritiesError.RequiredFieldIsEmpty, "RATE"),
|
||||||
|
MmsNewValidationRule.RequiredFieldIsNotEmpty
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -48,8 +51,9 @@ public class ValidationProvider {
|
||||||
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap);
|
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
EndDtAfterStartDt.instance(MoneyMarketSecurityUpdateRequest.class),
|
EndDtAfterStartDt.instance(MoneyMarketSecurityUpdateRequest.class),
|
||||||
|
new IsValidInstrumentType(SecuritiesError.InstrumentNotFound, "RATE"),
|
||||||
new PresentById(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentNotFound, true),
|
new PresentById(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentNotFound, true),
|
||||||
MmsUpdateValidationRule.StatusIsActive
|
new WorkflowStatusActv()
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -60,8 +64,48 @@ public class ValidationProvider {
|
||||||
context.setValidatedObject(mmsRequest);
|
context.setValidatedObject(mmsRequest);
|
||||||
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap);
|
context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, mmsMap);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
|
new IsValidInstrumentType(SecuritiesError.InstrumentNotFound, "RATE"),
|
||||||
new PresentById(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentNotFound, true),
|
new PresentById(IMDGDistributedNames.Map_MoneyMarketSecurity, SecuritiesError.InstrumentNotFound, true),
|
||||||
MmsDeleteValidationRule.StatusIsActive
|
new WorkflowStatusActv()
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Function<EquitySecurityNewRequest, IValidator> equityNewValidator() {
|
||||||
|
return equityRequest -> {
|
||||||
|
ImdgValidationContext<EquitySecurityNewRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(equityRequest);
|
||||||
|
context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equityMap);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
new NotPresentBySecuritySymbolAndWorkflowStatusActv(IMDGDistributedNames.Map_EquitySecurity, SecuritiesError.InstrumentAlreadyExists, EquitySecurityNewRequest.class),
|
||||||
|
new IsValidInstrumentType(SecuritiesError.RequiredFieldIsEmpty, "EQTY"),
|
||||||
|
EquityNewValidationRule.RequiredFieldIsNotEmpty
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Function<EquitySecurityUpdateRequest, IValidator> equityUpdateValidator() {
|
||||||
|
return equityRequest -> {
|
||||||
|
ImdgValidationContext<EquitySecurityUpdateRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(equityRequest);
|
||||||
|
context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equityMap);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
new IsValidInstrumentType(SecuritiesError.InstrumentNotFound, "EQTY"),
|
||||||
|
new PresentById(IMDGDistributedNames.Map_EquitySecurity, SecuritiesError.InstrumentNotFound, true),
|
||||||
|
new WorkflowStatusActv()
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public Function<CommonDeleteRequest, IValidator> equityDeleteValidator() {
|
||||||
|
return equityRequest -> {
|
||||||
|
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
|
||||||
|
context.setValidatedObject(equityRequest);
|
||||||
|
context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equityMap);
|
||||||
|
return new ValidatorImpl<>(context,
|
||||||
|
new IsValidInstrumentType(SecuritiesError.InstrumentNotFound, "EQTY"),
|
||||||
|
new PresentById(IMDGDistributedNames.Map_EquitySecurity, SecuritiesError.InstrumentNotFound, true),
|
||||||
|
new WorkflowStatusActv()
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,13 @@ public class EndDtAfterStartDt<T extends WithStartDt & WithEndDt> implements IVa
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<T> context) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<T> context) {
|
||||||
T validatedObject = context.getValidatedObject();
|
T validatedObject = context.getValidatedObject();
|
||||||
|
if(validatedObject.getEndDate() == null && validatedObject.getStartDate() == null) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "endDate", "startDate");
|
||||||
|
}
|
||||||
|
if(validatedObject.getEndDate() == null || validatedObject.getStartDate() == null){
|
||||||
|
if(validatedObject.getStartDate() == null) return of(SecuritiesError.RequiredFieldIsEmpty, "startDate");
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "endDate");
|
||||||
|
}
|
||||||
if (validatedObject.getEndDate().isBefore(validatedObject.getStartDate())) {
|
if (validatedObject.getEndDate().isBefore(validatedObject.getStartDate())) {
|
||||||
return of(SecuritiesError.WrongFieldValue, "endDate");
|
return of(SecuritiesError.WrongFieldValue, "endDate");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package ru.spcex.clearing.securities.validation.rule;
|
||||||
|
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.EquitySecurityNewRequest;
|
||||||
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public enum EquityNewValidationRule implements IValidationRule<ImdgValidationContext<EquitySecurityNewRequest>> {
|
||||||
|
RequiredFieldIsNotEmpty() {
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<EquitySecurityNewRequest> context) {
|
||||||
|
EquitySecurityNewRequest action = context.getValidatedObject();
|
||||||
|
if (StringUtils.hasText(action.getShortName())){
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "shortName");
|
||||||
|
}
|
||||||
|
if (action.getLotSize() == null) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "lotSize");
|
||||||
|
}
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String ruleName() {
|
||||||
|
return "MmsNewValidationRule." + name();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
package ru.spcex.clearing.securities.validation.rule;
|
||||||
|
|
||||||
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithInstrumentType;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumId;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class IsValidInstrumentType implements IValidationRule<ImdgValidationContext<WithInstrumentType>> {
|
||||||
|
private final IEnumId errorEnum;
|
||||||
|
private final String predictableInstrumentType;
|
||||||
|
|
||||||
|
public IsValidInstrumentType(IEnumId errorEnum, String predictableInstrumentType) {
|
||||||
|
this.errorEnum = errorEnum;
|
||||||
|
this.predictableInstrumentType = predictableInstrumentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<WithInstrumentType> context) {
|
||||||
|
WithInstrumentType action = context.getValidatedObject();
|
||||||
|
if (action.getInstrumentType() == null) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty);
|
||||||
|
} else if (!predictableInstrumentType.equalsIgnoreCase(action.getInstrumentType())){
|
||||||
|
return of(errorEnum);
|
||||||
|
}else {
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,32 +1,35 @@
|
||||||
package ru.spcex.clearing.securities.validation.rule;
|
package ru.spcex.clearing.securities.validation.rule;
|
||||||
|
|
||||||
import ru.clearing.classes.statics.data.misc.MoneyMarketSecurity;
|
import org.springframework.util.StringUtils;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest;
|
||||||
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
import ru.spcex.platform.enumeration.Status;
|
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
|
||||||
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
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.Map;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public enum MmsNewValidationRule implements IValidationRule<ImdgValidationContext<MoneyMarketSecurityNewRequest>> {
|
public enum MmsNewValidationRule implements IValidationRule<ImdgValidationContext<MoneyMarketSecurityNewRequest>> {
|
||||||
SecuritySymbolUniq() {
|
RequiredFieldIsNotEmpty() {
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<MoneyMarketSecurityNewRequest> context) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<MoneyMarketSecurityNewRequest> context) {
|
||||||
MoneyMarketSecurityNewRequest action = context.getValidatedObject();
|
MoneyMarketSecurityNewRequest action = context.getValidatedObject();
|
||||||
Imdg<MoneyMarketSecurity> mmsImdg = context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class);
|
if (StringUtils.hasText(action.getShortName())){
|
||||||
MoneyMarketSecurity mms = mmsImdg.getSingleObjectByFieldValues(Map.of(
|
return of(SecuritiesError.RequiredFieldIsEmpty, "shortName");
|
||||||
"securitySymbol", action.getSecuritySymbol(),
|
|
||||||
"workflowStatus", Status.Active.getKey()));
|
|
||||||
if (mms != null) {
|
|
||||||
return of(SecuritiesError.InstrumentAlreadyExists);
|
|
||||||
} else {
|
|
||||||
return empty();
|
|
||||||
}
|
}
|
||||||
|
if (action.getLotSize() == null) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "lotSize");
|
||||||
|
}
|
||||||
|
if (action.getNominalValue() == null) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "nominalValue");
|
||||||
|
}
|
||||||
|
if (StringUtils.hasText(action.getNominalCurrency())) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "nominalCurrency");
|
||||||
|
}
|
||||||
|
if (StringUtils.hasText(action.getTermType())) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "termType");
|
||||||
|
}
|
||||||
|
return empty();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ public enum MmsUpdateValidationRule implements IValidationRule<ImdgValidationCon
|
||||||
MoneyMarketSecurity mms = context.getStoredObject(Stored.PresentById);
|
MoneyMarketSecurity mms = context.getStoredObject(Stored.PresentById);
|
||||||
//проверка только если PresentById найдет объект и сохранит его
|
//проверка только если PresentById найдет объект и сохранит его
|
||||||
if (mms != null && !Status.Active.getKey().equals(mms.getWorkflowStatus())) {
|
if (mms != null && !Status.Active.getKey().equals(mms.getWorkflowStatus())) {
|
||||||
return of(SecuritiesError.InstrumentNotActive);
|
return of(SecuritiesError.InstrumentNotActive, mms.getClass().getSimpleName());
|
||||||
} else {
|
} else {
|
||||||
return empty();
|
return empty();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
package ru.spcex.clearing.securities.validation.rule;
|
||||||
|
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
|
||||||
|
import ru.spcex.platform.enumeration.Status;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumId;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class NotPresentBySecuritySymbolAndWorkflowStatusActv<T extends SpcexObjectBase & WithSecuritySymbol> implements IValidationRule<ImdgValidationContext<WithSecuritySymbol>> {
|
||||||
|
private final String mapName;
|
||||||
|
private final IEnumId errorEnum;
|
||||||
|
private final Class<T> clazz;
|
||||||
|
|
||||||
|
public NotPresentBySecuritySymbolAndWorkflowStatusActv(String mapName, IEnumId errorEnum, Class<T> clazz) {
|
||||||
|
this.mapName = mapName;
|
||||||
|
this.errorEnum = errorEnum;
|
||||||
|
this.clazz = clazz;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<WithSecuritySymbol> context) {
|
||||||
|
WithSecuritySymbol action = context.getValidatedObject();
|
||||||
|
Imdg<T> imdg = context.obtainMap(mapName, clazz);
|
||||||
|
if(StringUtils.hasText(action.getSecuritySymbol())) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "securitySymbole");
|
||||||
|
}
|
||||||
|
T object = imdg.getSingleObjectByFieldValues(Map.of(
|
||||||
|
"securitySymbol", action.getSecuritySymbol(),
|
||||||
|
"workflowStatus", Status.Active.getKey()));
|
||||||
|
if (object != null) {
|
||||||
|
return of(errorEnum);
|
||||||
|
} else {
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package ru.spcex.clearing.securities.validation.rule;
|
||||||
|
|
||||||
|
import ru.spcex.clearing.securities.errors.SecuritiesError;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithWorkflowStatus;
|
||||||
|
import ru.spcex.platform.enumeration.Status;
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.imdg.validation.Stored;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class WorkflowStatusActv implements IValidationRule<ImdgValidationContext<WithWorkflowStatus>> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<WithWorkflowStatus> context) {
|
||||||
|
WithWorkflowStatus object = context.getStoredObject(Stored.PresentById);
|
||||||
|
//проверка только если PresentById найдет объект и сохранит его
|
||||||
|
if (object != null && object.getWorkflowStatus() == null) {
|
||||||
|
return of(SecuritiesError.RequiredFieldIsEmpty, "workflowStatus");
|
||||||
|
}else if (object != null && !Status.Active.getKey().equals(object.getWorkflowStatus())) {
|
||||||
|
return of(SecuritiesError.InstrumentNotActive, object.getClass().getSimpleName());
|
||||||
|
} else {
|
||||||
|
return empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package ru.spcex.platform.classes.base.interfaces;
|
||||||
|
|
||||||
|
public interface WithInstrumentType {
|
||||||
|
String getInstrumentType();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package ru.spcex.platform.classes.base.interfaces;
|
||||||
|
|
||||||
|
public interface WithWorkflowStatus {
|
||||||
|
String getWorkflowStatus();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,120 @@
|
||||||
|
package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithInstrumentType;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
|
||||||
|
|
||||||
|
public class EquitySecurityNewRequest implements WithSecuritySymbol, WithInstrumentType {
|
||||||
|
@JsonProperty
|
||||||
|
public String securitySymbol;
|
||||||
|
@JsonProperty
|
||||||
|
public String shortName;
|
||||||
|
@JsonProperty
|
||||||
|
public String fullName;
|
||||||
|
@JsonProperty
|
||||||
|
public String isin;
|
||||||
|
@JsonProperty
|
||||||
|
public String shareType;
|
||||||
|
@JsonProperty
|
||||||
|
public Double lotSize;
|
||||||
|
@JsonProperty
|
||||||
|
public Long issuerId;
|
||||||
|
@JsonProperty
|
||||||
|
public String shortNameEng;
|
||||||
|
@JsonProperty
|
||||||
|
public String fullNameEng;
|
||||||
|
@JsonProperty
|
||||||
|
public String workflowStatus;
|
||||||
|
@JsonProperty
|
||||||
|
public String instrumentType;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSecuritySymbol() {
|
||||||
|
return securitySymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecuritySymbol(String securitySymbol) {
|
||||||
|
this.securitySymbol = securitySymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortName(String shortName) {
|
||||||
|
this.shortName = shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullName(String fullName) {
|
||||||
|
this.fullName = fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIsin() {
|
||||||
|
return isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsin(String isin) {
|
||||||
|
this.isin = isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShareType() {
|
||||||
|
return shareType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShareType(String shareType) {
|
||||||
|
this.shareType = shareType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getLotSize() {
|
||||||
|
return lotSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLotSize(Double lotSize) {
|
||||||
|
this.lotSize = lotSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getIssuerId() {
|
||||||
|
return issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIssuerId(Long issuerId) {
|
||||||
|
this.issuerId = issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShortNameEng() {
|
||||||
|
return shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortNameEng(String shortNameEng) {
|
||||||
|
this.shortNameEng = shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullNameEng() {
|
||||||
|
return fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullNameEng(String fullNameEng) {
|
||||||
|
this.fullNameEng = fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWorkflowStatus() {
|
||||||
|
return workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkflowStatus(String workflowStatus) {
|
||||||
|
this.workflowStatus = workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInstrumentType() {
|
||||||
|
return instrumentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstrumentType(String instrumentType) {
|
||||||
|
this.instrumentType = instrumentType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,132 @@
|
||||||
|
package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithId;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithInstrumentType;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithWorkflowStatus;
|
||||||
|
|
||||||
|
public class EquitySecurityUpdateRequest implements WithId, WithInstrumentType, WithWorkflowStatus {
|
||||||
|
@JsonProperty
|
||||||
|
public Long id;
|
||||||
|
@JsonProperty
|
||||||
|
public String securitySymbol;
|
||||||
|
@JsonProperty
|
||||||
|
public String shortName;
|
||||||
|
@JsonProperty
|
||||||
|
public String fullName;
|
||||||
|
@JsonProperty
|
||||||
|
public String isin;
|
||||||
|
@JsonProperty
|
||||||
|
public String shareType;
|
||||||
|
@JsonProperty
|
||||||
|
public Double lotSize;
|
||||||
|
@JsonProperty
|
||||||
|
public Long issuerId;
|
||||||
|
@JsonProperty
|
||||||
|
public String shortNameEng;
|
||||||
|
@JsonProperty
|
||||||
|
public String fullNameEng;
|
||||||
|
@JsonProperty
|
||||||
|
public String workflowStatus;
|
||||||
|
@JsonProperty
|
||||||
|
public String instrumentType;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSecuritySymbol() {
|
||||||
|
return securitySymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecuritySymbol(String securitySymbol) {
|
||||||
|
this.securitySymbol = securitySymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortName(String shortName) {
|
||||||
|
this.shortName = shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullName() {
|
||||||
|
return fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullName(String fullName) {
|
||||||
|
this.fullName = fullName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIsin() {
|
||||||
|
return isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsin(String isin) {
|
||||||
|
this.isin = isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShareType() {
|
||||||
|
return shareType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShareType(String shareType) {
|
||||||
|
this.shareType = shareType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getLotSize() {
|
||||||
|
return lotSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLotSize(Double lotSize) {
|
||||||
|
this.lotSize = lotSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getIssuerId() {
|
||||||
|
return issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIssuerId(Long issuerId) {
|
||||||
|
this.issuerId = issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShortNameEng() {
|
||||||
|
return shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortNameEng(String shortNameEng) {
|
||||||
|
this.shortNameEng = shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullNameEng() {
|
||||||
|
return fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullNameEng(String fullNameEng) {
|
||||||
|
this.fullNameEng = fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getWorkflowStatus() {
|
||||||
|
return workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkflowStatus(String workflowStatus) {
|
||||||
|
this.workflowStatus = workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getInstrumentType() {
|
||||||
|
return instrumentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setInstrumentType(String instrumentType) {
|
||||||
|
this.instrumentType = instrumentType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -6,11 +6,13 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithEndDt;
|
import ru.spcex.platform.classes.base.interfaces.WithEndDt;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithInstrumentType;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol;
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithStartDt;
|
import ru.spcex.platform.classes.base.interfaces.WithStartDt;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public class MoneyMarketSecurityNewRequest implements WithStartDt, WithEndDt {
|
public class MoneyMarketSecurityNewRequest implements WithStartDt, WithEndDt, WithSecuritySymbol, WithInstrumentType {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
@JsonSerialize(using = LocalDateSerializer.class)
|
@JsonSerialize(using = LocalDateSerializer.class)
|
||||||
@JsonDeserialize(using = LocalDateDeserializer.class)
|
@JsonDeserialize(using = LocalDateDeserializer.class)
|
||||||
|
|
@ -26,11 +28,27 @@ public class MoneyMarketSecurityNewRequest implements WithStartDt, WithEndDt {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public String instrumentType;
|
public String instrumentType;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
|
public String shortName;
|
||||||
|
@JsonProperty
|
||||||
public String fullName;
|
public String fullName;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
|
public String shortNameEng;
|
||||||
|
@JsonProperty
|
||||||
|
public String fullNameEng;
|
||||||
|
@JsonProperty
|
||||||
public String securitySymbol;
|
public String securitySymbol;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public Double lotSize;
|
public Double lotSize;
|
||||||
|
@JsonProperty
|
||||||
|
public String termType;
|
||||||
|
@JsonProperty
|
||||||
|
public String description;
|
||||||
|
@JsonProperty
|
||||||
|
public Long issuerId;
|
||||||
|
@JsonProperty
|
||||||
|
public String isin;
|
||||||
|
@JsonProperty
|
||||||
|
public String workflowStatus;
|
||||||
|
|
||||||
public LocalDate getStartDate() {
|
public LocalDate getStartDate() {
|
||||||
return startDate;
|
return startDate;
|
||||||
|
|
@ -80,6 +98,14 @@ public class MoneyMarketSecurityNewRequest implements WithStartDt, WithEndDt {
|
||||||
this.fullName = fullName;
|
this.fullName = fullName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortName(String shortName) {
|
||||||
|
this.shortName = shortName;
|
||||||
|
}
|
||||||
|
|
||||||
public String getSecuritySymbol() {
|
public String getSecuritySymbol() {
|
||||||
return securitySymbol;
|
return securitySymbol;
|
||||||
}
|
}
|
||||||
|
|
@ -95,4 +121,60 @@ public class MoneyMarketSecurityNewRequest implements WithStartDt, WithEndDt {
|
||||||
public void setLotSize(Double lotSize) {
|
public void setLotSize(Double lotSize) {
|
||||||
this.lotSize = lotSize;
|
this.lotSize = lotSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getTermType() {
|
||||||
|
return termType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTermType(String termType) {
|
||||||
|
this.termType = termType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getIssuerId() {
|
||||||
|
return issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIssuerId(Long issuerId) {
|
||||||
|
this.issuerId = issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getShortNameEng() {
|
||||||
|
return shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortNameEng(String shortNameEng) {
|
||||||
|
this.shortNameEng = shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullNameEng() {
|
||||||
|
return fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullNameEng(String fullNameEng) {
|
||||||
|
this.fullNameEng = fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIsin() {
|
||||||
|
return isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsin(String isin) {
|
||||||
|
this.isin = isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWorkflowStatus() {
|
||||||
|
return workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkflowStatus(String workflowStatus) {
|
||||||
|
this.workflowStatus = workflowStatus;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,11 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithEndDt;
|
import ru.spcex.platform.classes.base.interfaces.*;
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithId;
|
|
||||||
import ru.spcex.platform.classes.base.interfaces.WithStartDt;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public class MoneyMarketSecurityUpdateRequest implements WithId, WithStartDt, WithEndDt {
|
public class MoneyMarketSecurityUpdateRequest implements WithId, WithStartDt, WithEndDt, WithInstrumentType, WithWorkflowStatus {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public Long id;
|
public Long id;
|
||||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow")
|
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow")
|
||||||
|
|
@ -32,9 +30,27 @@ public class MoneyMarketSecurityUpdateRequest implements WithId, WithStartDt, Wi
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
public String instrumentType;
|
public String instrumentType;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
|
public String shortName;
|
||||||
|
@JsonProperty
|
||||||
public String fullName;
|
public String fullName;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
|
public String shortNameEng;
|
||||||
|
@JsonProperty
|
||||||
|
public String fullNameEng;
|
||||||
|
@JsonProperty
|
||||||
|
public String securitySymbol;
|
||||||
|
@JsonProperty
|
||||||
public Double lotSize;
|
public Double lotSize;
|
||||||
|
@JsonProperty
|
||||||
|
public String termType;
|
||||||
|
@JsonProperty
|
||||||
|
public String description;
|
||||||
|
@JsonProperty
|
||||||
|
public Long issuerId;
|
||||||
|
@JsonProperty
|
||||||
|
public String isin;
|
||||||
|
@JsonProperty
|
||||||
|
public String workflowStatus;
|
||||||
|
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
return id;
|
return id;
|
||||||
|
|
@ -84,6 +100,79 @@ public class MoneyMarketSecurityUpdateRequest implements WithId, WithStartDt, Wi
|
||||||
this.fullName = fullName;
|
this.fullName = fullName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortName(String shortName) {
|
||||||
|
this.shortName = shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getShortNameEng() {
|
||||||
|
return shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setShortNameEng(String shortNameEng) {
|
||||||
|
this.shortNameEng = shortNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFullNameEng() {
|
||||||
|
return fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFullNameEng(String fullNameEng) {
|
||||||
|
this.fullNameEng = fullNameEng;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSecuritySymbol() {
|
||||||
|
return securitySymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecuritySymbol(String securitySymbol) {
|
||||||
|
this.securitySymbol = securitySymbol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTermType() {
|
||||||
|
return termType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTermType(String termType) {
|
||||||
|
this.termType = termType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getIssuerId() {
|
||||||
|
return issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIssuerId(Long issuerId) {
|
||||||
|
this.issuerId = issuerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIsin() {
|
||||||
|
return isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsin(String isin) {
|
||||||
|
this.isin = isin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWorkflowStatus() {
|
||||||
|
return workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkflowStatus(String workflowStatus) {
|
||||||
|
this.workflowStatus = workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
public Double getLotSize() {
|
public Double getLotSize() {
|
||||||
return lotSize;
|
return lotSize;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue