Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
ialbert 2023-05-25 14:14:59 +03:00
commit a665e8e0d6
17 changed files with 317 additions and 97 deletions

View file

@ -4,9 +4,9 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
public class CompanySymbolNewAction implements IAction<CompanySymbolUpdateRequest> { public class CompanySymbolNewAction implements IAction<CompanySymbolNewRequest> {
@ApiModelProperty(value = "Идентификатор Компании", example = "1234") @ApiModelProperty(value = "Идентификатор Компании", example = "1234")
@JsonProperty @JsonProperty
private Long companyId; private Long companyId;
@ -18,8 +18,8 @@ public class CompanySymbolNewAction implements IAction<CompanySymbolUpdateReques
private String companySymbolValue; private String companySymbolValue;
@Override @Override
public CompanySymbolUpdateRequest toRequest() { public CompanySymbolNewRequest toRequest() {
CompanySymbolUpdateRequest request = new CompanySymbolUpdateRequest(); CompanySymbolNewRequest request = new CompanySymbolNewRequest();
request.setCompanyId(this.companyId); request.setCompanyId(this.companyId);
request.setCompanySymbol(this.companySymbol); request.setCompanySymbol(this.companySymbol);
request.setCompanySymbolValue(this.companySymbolValue); request.setCompanySymbolValue(this.companySymbolValue);

View file

@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.ListingNewRequest;
import java.math.BigDecimal; import java.math.BigDecimal;

View file

@ -2,10 +2,8 @@ package ru.clearing.classes.statics.data.registry;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
/** /**
@ -414,9 +412,9 @@ public class Registry extends BusinessObject implements Cloneable {
} }
@Override @Override
public Object clone() { public Registry clone() {
try { try {
return super.clone(); return (Registry) super.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
throw new RuntimeException("never", e); // it is Cloneable throw new RuntimeException("never", e); // it is Cloneable
} }

View file

@ -63,7 +63,7 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean {
.forDestination(Task.startOfClearing.topic(), callbacks::put); .forDestination(Task.startOfClearing.topic(), callbacks::put);
callback(Object.class) callback(Object.class)
.setConsumer(primaryAuctionBnSession::continueSession) .setConsumer(primaryAuctionBnSession::continueSession)
.forDestination(Consts.SDF57_PROCESS, callbacks::put); .forDestination(Consts.CONTINUE_SESSION_BN, callbacks::put);
callback(Object.class) callback(Object.class)
.setConsumer(event -> clearingService.executeSTrade()) .setConsumer(event -> clearingService.executeSTrade())

View file

@ -14,7 +14,6 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01Request; import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01Request;
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart; import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
@ -81,11 +80,8 @@ public class StatementService extends QueueConsumer implements InitializingBean
Result res = service.execute(sdfGroup, statementRequest); Result res = service.execute(sdfGroup, statementRequest);
if (res.getAccountRequests().size() != 0) { if (res.getAccountRequests().size() != 0) {
kafkaSender.sendRequestToQueue(Consts.ACCOUNT_NEW_SDF01, createAccountsRequest(statementRequest.getGroupId(), res.getAccountRequests())); kafkaSender.sendRequestToQueue(Consts.ACCOUNT_NEW_SDF01, createAccountsRequest(statementRequest.getGroupId(), res.getAccountRequests()));
} else if (service.isNeedToSendCommandToExport()) { } else if (service.isNeedToSendCommand()) {
ExportToFileRequest exportRequest = new ExportToFileRequest(); service.sendCommand(kafkaSender, res);
exportRequest.setSdfGroupId(res.getGenerationId());
exportRequest.setNameOfTable(service.exportTableName());
kafkaSender.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
} }
} }

View file

@ -0,0 +1,74 @@
package ru.spcex.clearing.service.builder;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.Map;
public class PaymentInstructionBuilder {
private Registry registry;
private ImdgProvider imdgProvider;
public static PaymentInstructionBuilder builder(ImdgProvider imdgProvider, Registry registry) {
return new PaymentInstructionBuilder(imdgProvider, registry);
}
private PaymentInstructionBuilder(ImdgProvider imdgProvider, Registry registry) {
this.imdgProvider = imdgProvider;
this.registry = registry;
}
public PaymentInstruction build() {
PaymentInstruction paymentInstruction = new PaymentInstruction();
paymentInstruction.setSenderId(registry.getCompanyId());
paymentInstruction.setAddresseeId(registry.getCounterPartyId());
Imdg<CompanySymbols> companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
CompanySymbols companySymbols = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
"companyId", registry.getCompanyId(),
"companySymbol", CompanySymbol.BIC.getKey())
);
CompanySymbols counterCompanySymbols = companySymbolsImdg.getSingleObjectByFieldValues(Map.of(
"companyId", registry.getCounterPartyId(),
"companySymbol", CompanySymbol.BIC.getKey())
);
if (companySymbols != null) {
paymentInstruction.setPayeeBic(companySymbols.getCompanySymbolValue());
}
if (counterCompanySymbols != null) {
paymentInstruction.setAdresseeBic(counterCompanySymbols.getCompanySymbolValue());
}
Imdg<Company> companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
Company company = companyImdg.getSingleObjectByFieldValues(Map.of("companyId", registry.getCompanyId()));
if (company != null) {
paymentInstruction.setPayeeBankName(company.getShortName());
paymentInstruction.setAddresseeBankName(company.getShortName());
}
paymentInstruction.setSettlementDate(registry.getSettlementDate());
paymentInstruction.setCreditLeg_amount(registry.getBalance());
paymentInstruction.setDebitLeg_amount(registry.getBalance());
paymentInstruction.setCreditLeg_accountId(registry.getAccountId());
Imdg<Account> accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
Account account = accountImdg.getSingleObjectByID(registry.getAccountId());
if (account != null) {
paymentInstruction.setCreditLeg_account(account.getAccount());
}
paymentInstruction.setDebitLeg_accountId(registry.getAccountId());
// Account account = accountImdg.getSingleObjectByID(registry.get());
// paymentInstruction.setDebitLeg_account();
return paymentInstruction;
}
}

View file

@ -1,6 +1,7 @@
package ru.spcex.clearing.service.executors; package ru.spcex.clearing.service.executors;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.model.Result; import ru.spcex.clearing.service.model.Result;
import java.util.Collection; import java.util.Collection;
@ -8,5 +9,6 @@ import java.util.Collection;
public abstract class AbstractExecutor<T> { public abstract class AbstractExecutor<T> {
public abstract Result execute(Collection<T> sdf, StatementRequest statementRequest); public abstract Result execute(Collection<T> sdf, StatementRequest statementRequest);
public abstract String exportTableName(); public abstract String exportTableName();
public abstract boolean isNeedToSendCommandToExport(); public abstract boolean isNeedToSendCommand();
public abstract void sendCommand(KafkaSender kafkaSender, Result result);
} }

View file

@ -11,8 +11,11 @@ import ru.clearing.classes.statics.data.sdf.SDf02;
import ru.clearing.classes.statics.data.statement.Statement; import ru.clearing.classes.statics.data.statement.Statement;
import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart; import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.LoggingService; import ru.spcex.clearing.service.LoggingService;
import ru.spcex.clearing.service.model.Result; import ru.spcex.clearing.service.model.Result;
import ru.spcex.clearing.service.validation.ValidationStored; import ru.spcex.clearing.service.validation.ValidationStored;
@ -65,10 +68,18 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
} }
@Override @Override
public boolean isNeedToSendCommandToExport() { public boolean isNeedToSendCommand() {
return true; return true;
} }
@Override
public void sendCommand(KafkaSender kafkaSender, Result result) {
ExportToFileRequest exportRequest = new ExportToFileRequest();
exportRequest.setSdfGroupId(result.getGenerationId());
exportRequest.setNameOfTable(exportTableName());
kafkaSender.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
}
public Result execute(Collection<SDf01> sdf, StatementRequest statementRequest) { public Result execute(Collection<SDf01> sdf, StatementRequest statementRequest) {
Result result = new Result(); Result result = new Result();
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();

View file

@ -14,7 +14,10 @@ import ru.clearing.classes.statics.data.security.Security;
import ru.clearing.classes.statics.data.statement.Statement; import ru.clearing.classes.statics.data.statement.Statement;
import ru.spcex.clearing.error.ClearingError; import ru.spcex.clearing.error.ClearingError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.ContinueSessionBnRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.LoggingService; import ru.spcex.clearing.service.LoggingService;
import ru.spcex.clearing.service.model.Result; import ru.spcex.clearing.service.model.Result;
import ru.spcex.clearing.service.validation.ValidationStored; import ru.spcex.clearing.service.validation.ValidationStored;
@ -78,9 +81,16 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
} }
@Override @Override
public boolean isNeedToSendCommandToExport() { public boolean isNeedToSendCommand() {
return false; return true;
}//no need... }
@Override
public void sendCommand(KafkaSender kafkaSender, Result result) {
ContinueSessionBnRequest continueSessionBn = new ContinueSessionBnRequest();
continueSessionBn.setGenerationId(result.getGenerationId());
kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN, continueSessionBn);
}
//V - Изменение statement по sDf57 //V - Изменение statement по sDf57
// //
@ -145,7 +155,13 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
}; };
Consumer<RegistryDesignation> create = (dsgn) -> { Consumer<RegistryDesignation> create = (dsgn) -> {
Registry registry = createRegistryByStatement(stmt, company, account, dsgn); Registry registry = createRegistryByStatement(stmt, company, account, dsgn);
Registry registryF = registry.clone();
registryF.setRegistryUnit(RegistryUnit.F.getKey());
Registry registryB = registry.clone();
registryB.setRegistryUnit(RegistryUnit.B.getKey());
registryImdg.insert(registry); registryImdg.insert(registry);
registryImdg.insert(registryF);
registryImdg.insert(registryB);
}; };
//todo понять что происходит со инициатором/контрагентом, особенно если у нас только один Statement //todo понять что происходит со инициатором/контрагентом, особенно если у нас только один Statement
@ -181,7 +197,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
Statement statement = new Statement(); Statement statement = new Statement();
statement.setAddresseeId(companyDeb.getId()); statement.setAddresseeId(companyDeb.getId());
statement.setSenderId(Sender.Prc.getId()); statement.setSenderId(Sender.Prc.getId());
statement.setStatementType(StatementType.full.getKey()); statement.setStatementType(StatementType.incr.getKey());
statement.setContract(getContractFromSpecif(sdf57.getSpecif())); statement.setContract(getContractFromSpecif(sdf57.getSpecif()));
statement.setAccountId(accountDeb.getId()); statement.setAccountId(accountDeb.getId());
statement.setAccount(accountDeb.getAccount()); statement.setAccount(accountDeb.getAccount());

View file

@ -19,6 +19,7 @@ import ru.spcex.platform.enumeration.*;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.StatementRevisePredicate; import ru.spcex.platform.imdg.api.predicate.specific.StatementRevisePredicate;
import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IEnumKey;
@ -93,32 +94,31 @@ public class BalanceRevise implements ISessionStage {
Collection<Statement> stmts = statementImdg.getCollectionObjectsBySQL(statementSQL); Collection<Statement> stmts = statementImdg.getCollectionObjectsBySQL(statementSQL);
for (Statement stmt : stmts) { for (Statement stmt : stmts) {
String unformatted = "registry_designation = '%s' " + String unformatted = "%s and account = '%s' and securityId = %d";
"and registry_instrument_type = '%s' " +
"and registry_unit = '%s' " + RegistryTradingParams registryAMT = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M,
"and account = '%s' " + null, RegistryUnit.T);
"and securityId = %d"; RegistryTradingParams registryAMF = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M,
null, RegistryUnit.F);
RegistryTradingParams registryAMB = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M,
null, RegistryUnit.B);
String registrySqlAMT = String.format(unformatted, String registrySqlAMT = String.format(unformatted,
RegistryDesignation.A.getKey(), RegistryCodeSqlBuilder.getInstance(registryAMT).build(),
RegistryInstrumentType.M.getKey(),
RegistryUnit.T.getKey(),
stmt.getAccount(), stmt.getAccount(),
stmt.getSecurityId() stmt.getSecurityId()
); );
String registrySqlAMF = String.format(unformatted, String registrySqlAMF = String.format(unformatted,
RegistryDesignation.A.getKey(), RegistryCodeSqlBuilder.getInstance(registryAMF).build(),
RegistryInstrumentType.M.getKey(),
RegistryUnit.F.getKey(),
stmt.getAccount(), stmt.getAccount(),
stmt.getSecurityId() stmt.getSecurityId()
); );
String registrySqlAMB = String.format(unformatted, String registrySqlAMB = String.format(unformatted,
RegistryDesignation.A.getKey(), RegistryCodeSqlBuilder.getInstance(registryAMB).build(),
RegistryInstrumentType.M.getKey(),
RegistryUnit.B.getKey(),
stmt.getAccount(), stmt.getAccount(),
stmt.getSecurityId() stmt.getSecurityId()
); );
Registry rgsAMT = registryImdg.getSingleObjectBySQL(registrySqlAMT); Registry rgsAMT = registryImdg.getSingleObjectBySQL(registrySqlAMT);
Registry rgsAMF = registryImdg.getSingleObjectBySQL(registrySqlAMF); Registry rgsAMF = registryImdg.getSingleObjectBySQL(registrySqlAMF);
Registry rgsAMB = registryImdg.getSingleObjectBySQL(registrySqlAMB); Registry rgsAMB = registryImdg.getSingleObjectBySQL(registrySqlAMB);
@ -152,14 +152,11 @@ public class BalanceRevise implements ISessionStage {
InOutSDfType.type1.getKey(), OperationStatus.Pending.getKey(), StatementType.full.getKey()); InOutSDfType.type1.getKey(), OperationStatus.Pending.getKey(), StatementType.full.getKey());
Collection<Statement> stmts = statementImdg.getCollectionObjectsBySQL(statementSQL); Collection<Statement> stmts = statementImdg.getCollectionObjectsBySQL(statementSQL);
for (Statement stmt : stmts) { for (Statement stmt : stmts) {
String registrySqlAMT = String.format("registry_designation = '%s' " +
"and registry_instrument_type = '%s' " + RegistryTradingParams registryAMT = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M,
"and registry_unit = '%s' " + null, RegistryUnit.T);
"and account = '%s' " + String registrySqlAMT = String.format("%s and account = '%s' and securityId = %d",
"and securityId = %d", RegistryCodeSqlBuilder.getInstance(registryAMT).build(),
RegistryDesignation.A.getKey(),
RegistryInstrumentType.M.getKey(),
RegistryUnit.T.getKey(),
stmt.getAccount(), stmt.getAccount(),
stmt.getSecurityId() stmt.getSecurityId()
); );
@ -175,7 +172,7 @@ public class BalanceRevise implements ISessionStage {
} }
private void newSDf56(Statement statement) { private void newSDf56(Statement statement) {
log.debug("GALB request received; creating sdf56"); log.debug("creating sdf56");
SDf56 sDf56 = new SDf56(); SDf56 sDf56 = new SDf56();
sDf56.setNumber(idGenerator.nextId().toString()); sDf56.setNumber(idGenerator.nextId().toString());
Instant now = Instant.now(); Instant now = Instant.now();

View file

@ -4,22 +4,17 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.clearing.platform.dictionary.*; import ru.clearing.platform.dictionary.CompanySymbolDictionary;
import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.company.validation.CompanySymbolNotExistRule;
import ru.spcex.clearing.company.validation.CompanySymbolOfSymbolNewRequestNotExistRule; import ru.spcex.clearing.company.validation.CompanySymbolOfSymbolNewRequestNotExistRule;
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.company.CompanyInfoUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule; import ru.spcex.clearing.validation.common.rules.DictionaryPresentRule;
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; import ru.spcex.clearing.validation.common.rules.FieldRequiredRule;
import ru.spcex.clearing.validation.common.rules.IdPresentRule; import ru.spcex.clearing.validation.common.rules.IdPresentRule;
import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.SpcexObjectBase;
import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg; 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.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
@ -33,16 +28,16 @@ import java.util.function.Function;
public class CompanySymbolValidationConfig { public class CompanySymbolValidationConfig {
@Bean("companySymbolNewRequestValidator") @Bean("companySymbolNewRequestValidator")
public Function<CompanySymbolUpdateRequest, IValidator> companySymbolNewRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) { public Function<CompanySymbolNewRequest, IValidator> companySymbolNewRequestValidator(Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation) {
return companySymbolUpdateRequest -> { return companySymbolNewRequest -> {
ImdgValidationContext<CompanySymbolUpdateRequest> context = new ImdgValidationContext<>(); ImdgValidationContext<CompanySymbolNewRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(companySymbolUpdateRequest); context.setValidatedObject(companySymbolNewRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_CompanySymbols); addImdg.accept(IMDGDistributedNames.Map_CompanySymbols);
addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary); addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary);
addImdg.accept(IMDGDistributedNames.Map_Company); addImdg.accept(IMDGDistributedNames.Map_Company);
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
FieldRequiredRule.instance("companyId", CompanySymbolUpdateRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty), FieldRequiredRule.instance("companyId", CompanySymbolNewRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty),
IdPresentRule.instance("companyId", IdPresentRule.instance("companyId",
CompanySymbolUpdateRequest::getCompanyId, CompanySymbolUpdateRequest::getCompanyId,
IMDGDistributedNames.Map_Company, IMDGDistributedNames.Map_Company,
@ -52,7 +47,7 @@ public class CompanySymbolValidationConfig {
// FieldRequiredRule.instance("companySymbol", CompanySymbolUpdateRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty), // FieldRequiredRule.instance("companySymbol", CompanySymbolUpdateRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty),
// FieldRequiredRule.instance("companySymbolValue", CompanySymbolUpdateRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty), // FieldRequiredRule.instance("companySymbolValue", CompanySymbolUpdateRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty),
DictionaryPresentRule.instance("companySymbol", DictionaryPresentRule.instance("companySymbol",
CompanySymbolUpdateRequest::getCompanySymbol, CompanySymbolNewRequest::getCompanySymbol,
IMDGDistributedNames.Map_CompanySymbolDictionary, IMDGDistributedNames.Map_CompanySymbolDictionary,
CompanySymbolDictionary.class, CompanySymbolDictionary.class,
CompanyErrors.RequiredFieldEmpty, CompanyErrors.RequiredFieldEmpty,
@ -104,4 +99,35 @@ public class CompanySymbolValidationConfig {
); );
}; };
} }
@Bean("companySymbolDeleteRequestValidator")
public Function<CommonDeleteRequest, IValidator> companySymbolDeleteRequestValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return companySymbolDeleteRequest -> {
ImdgValidationContext<CommonDeleteRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(companySymbolDeleteRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
addImdg.accept(IMDGDistributedNames.Map_Company);
addImdg.accept(IMDGDistributedNames.Map_DocumentTypeDictionary);
addImdg.accept(IMDGDistributedNames.Map_CompanySymbols);
return new ValidatorImpl<>(context,
IdPresentRule.instance("id",
CommonDeleteRequest::getId,
IMDGDistributedNames.Map_CompanySymbols,
CompanySymbols.class,
CompanyErrors.RequiredFieldEmpty,
CompanyErrors.RecordNotFound,
companySymbol -> {
Imdg<Company> companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class);
Company company = companyImdg.getSingleObjectByID(companySymbol.getCompanyId());
if (company == null) {
return CompanyErrors.CompanyNotFound;
}
return null;
})
);
};
}
} }

View file

@ -11,7 +11,6 @@ import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.util.services.RequestHelper;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
@ -20,6 +19,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest
import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.util.services.RequestHelper;
import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.enumeration.UserRole; import ru.spcex.platform.enumeration.UserRole;
@ -46,15 +46,13 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
private final ImdgId idSequence; private final ImdgId idSequence;
private final Imdg<Company> companyIMap; private final Imdg<Company> companyIMap;
protected UserRoleVerification userRoleVerification; protected UserRoleVerification userRoleVerification;
private ValidationHelper validationHelper;
private Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
private Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
private Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
protected CompanySymbolService companySymbolService; protected CompanySymbolService companySymbolService;
protected AccountNotificationHelper accountNotification; protected AccountNotificationHelper accountNotification;
protected RelationService relationService; protected RelationService relationService;
private final ValidationHelper validationHelper;
private final Function<CompanyNewRequest, IValidator> companyNewRequestValidator;
private final Function<CompanyNewRequest, IValidator> companyUpdateRequestValidator;
private final Function<CommonDeleteRequest, IValidator> companyDeleteRequestValidator;
@Autowired @Autowired
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer, public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
@ -134,7 +132,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
try { try {
if (req.getCompanySymbol() != null) { if (req.getCompanySymbol() != null) {
CompanySymbols newSymbol = companySymbolService.createCompanySymbol(transaction, company.getId(), req.getCompanySymbol(), req.getCompanySymbolValue()); CompanySymbols newSymbol = companySymbolService.createCompanySymbol(transaction, company.getId(), req.getCompanySymbol(), req.getCompanySymbolValue());
updateCompanyBySymbol(company, newSymbol); updateCompanyBySymbol(company, newSymbol, false);
} }
company.setWorkflowStatus(req.getWorkflowStatus()); company.setWorkflowStatus(req.getWorkflowStatus());
@ -215,20 +213,26 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
return null; return null;
} }
protected void updateCompanyBySymbol(Company company, CompanySymbols companySymbol) { protected void updateCompanyBySymbol(Company company, CompanySymbols companySymbol, boolean shouldBeDeleted) {
assert company.getId().equals(companySymbol.getCompanyId()); assert company.getId().equals(companySymbol.getCompanyId());
String companySymbolValue = companySymbol.getCompanySymbolValue();
String setUpValue = shouldBeDeletedOrSet(companySymbolValue, shouldBeDeleted);
if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) { if (CompanySymbol.TRDC.equalsByKey(companySymbol.getCompanySymbol())) {
company.setTradingCode(companySymbol.getCompanySymbolValue()); company.setTradingCode(setUpValue);
} }
if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) { if (CompanySymbol.CLRC.equalsByKey(companySymbol.getCompanySymbol())) {
company.setClearingCode(companySymbol.getCompanySymbolValue()); company.setClearingCode(setUpValue);
} }
if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) { if (CompanySymbol.RGRC.equalsByKey(companySymbol.getCompanySymbol())) {
company.setRegistrationCode(companySymbol.getCompanySymbolValue()); company.setRegistrationCode(setUpValue);
} }
} }
public synchronized void updateCompanyBySymbol(ImdgTransaction transaction, CompanySymbols companySymbol) throws ClearingBaseException { private String shouldBeDeletedOrSet(String companySymbol, boolean shouldBeDeleted) {
return shouldBeDeleted ? "" : companySymbol;
}
public synchronized void updateCompanyBySymbol(ImdgTransaction transaction, CompanySymbols companySymbol, boolean shouldBeDeleted) throws ClearingBaseException {
if (companySymbol.getCompanyId() == null) { if (companySymbol.getCompanyId() == null) {
throw new IllegalArgumentException("Required companySymbol.companyId"); throw new IllegalArgumentException("Required companySymbol.companyId");
} }
@ -241,7 +245,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
if (company == null) { if (company == null) {
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId())); throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyNotFound, companySymbol.getCompanyId()));
} }
updateCompanyBySymbol(company, companySymbol); updateCompanyBySymbol(company, companySymbol, shouldBeDeleted);
company.setUpdated(Instant.now()); company.setUpdated(Instant.now());
companyMap.update(company); companyMap.update(company);
log.debug("Company {} updated by change CompanySymbols {} ({})", log.debug("Company {} updated by change CompanySymbols {} ({})",

View file

@ -10,20 +10,24 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.spcex.clearing.util.services.RequestHelper; import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts; 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.company.CompanySymbolNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.security.UserRoleVerification;
import ru.spcex.clearing.util.services.RequestHelper;
import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.platform.enumeration.UserRole; import ru.spcex.platform.enumeration.UserRole;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId; import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.ImdgTransaction; import ru.spcex.platform.imdg.api.ImdgTransaction;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.error.ClearingBaseException; import ru.spcex.platform.utils.error.ClearingBaseException;
import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.IValidator;
@ -35,13 +39,13 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final ImdgProvider imdgProvider; private final ImdgProvider imdgProvider;
private final ImdgId idSequence; private final ImdgId idSequence;
protected CompanyService companyService;
private final RequestHelper requestHelper; private final RequestHelper requestHelper;
protected CompanyService companyService;
protected ValidationHelper validationHelper; protected ValidationHelper validationHelper;
protected UserRoleVerification userRoleVerification; protected UserRoleVerification userRoleVerification;
protected Function<CompanySymbolUpdateRequest, IValidator> companySymbolNewRequestValidator; protected Function<CompanySymbolNewRequest, IValidator> companySymbolNewRequestValidator;
protected Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator; protected Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator;
protected Function<CommonDeleteRequest, IValidator> companySymbolDeleteRequestValidator;
@Autowired @Autowired
public CompanySymbolService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer, public CompanySymbolService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
@ -50,7 +54,9 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
ValidationHelper validationHelper, ValidationHelper validationHelper,
UserRoleVerification userRoleVerification, UserRoleVerification userRoleVerification,
@Qualifier("companySymbolNewRequestValidator") @Qualifier("companySymbolNewRequestValidator")
Function<CompanySymbolUpdateRequest, IValidator> companySymbolNewRequestValidator, Function<CompanySymbolNewRequest, IValidator> companySymbolNewRequestValidator,
@Qualifier("companySymbolDeleteRequestValidator")
Function<CommonDeleteRequest, IValidator> companySymbolDeleteRequestValidator,
@Qualifier("companySymbolUpdateRequestValidator") @Qualifier("companySymbolUpdateRequestValidator")
Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator Function<CompanySymbolUpdateRequest, IValidator> companySymbolUpdateRequestValidator
) { ) {
@ -64,16 +70,20 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
userRoleVerification.setRoleForVerification(UserRole.Admin); userRoleVerification.setRoleForVerification(UserRole.Admin);
this.companySymbolNewRequestValidator = companySymbolNewRequestValidator; this.companySymbolNewRequestValidator = companySymbolNewRequestValidator;
this.companySymbolUpdateRequestValidator = companySymbolUpdateRequestValidator; this.companySymbolUpdateRequestValidator = companySymbolUpdateRequestValidator;
this.companySymbolDeleteRequestValidator = companySymbolDeleteRequestValidator;
} }
@Override @Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
callback(CompanySymbolUpdateRequest.class) callback(CompanySymbolNewRequest.class)
.setFunction(this::companySymbolNew) .setFunction(this::companySymbolNew)
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put); .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_NEW, callbacks::put);
callback(CompanySymbolUpdateRequest.class) callback(CompanySymbolUpdateRequest.class)
.setFunction(this::companySymbolUpdate) .setFunction(this::companySymbolUpdate)
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put); .forDestination(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setFunction(this::companySymbolDelete)
.forDestination(Consts.DESTINATION_COMPANY_SYMBOL_DELETE, callbacks::put);
init(); init();
} }
@ -82,8 +92,8 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
} }
public RequestInfoUpdate companySymbolNew(BaseRequest<CompanySymbolUpdateRequest> symbolRequest) { public RequestInfoUpdate companySymbolNew(BaseRequest<CompanySymbolNewRequest> symbolRequest) {
CompanySymbolUpdateRequest req = symbolRequest.getRequestPayload(); CompanySymbolNewRequest req = symbolRequest.getRequestPayload();
log.debug("CompanySymbolNewRequest received, id={}", symbolRequest.getId()); log.debug("CompanySymbolNewRequest received, id={}", symbolRequest.getId());
{ // validate { // validate
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
@ -107,7 +117,7 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbolsTMap.update(companySymbols); companySymbolsTMap.update(companySymbols);
try { try {
companyService.updateCompanyBySymbol(transaction, companySymbols); companyService.updateCompanyBySymbol(transaction, companySymbols, false);
} catch (ClearingBaseException e) { } catch (ClearingBaseException e) {
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg()); return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
} }
@ -141,15 +151,18 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
try { try {
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId()); companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
// companySymbols.setCompanySymbol(req.getCompanySymbol()); по ТЗ не должен менятся при обновлении if (companySymbols == null) {
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
}
if (!companySymbols.getCompanySymbol().equalsIgnoreCase(req.getCompanySymbolValue())) {
throw new ClearingBaseException(new EnumMessage(CompanyErrors.EditCompanySymbols, req.getId()));
}
companySymbols.setCompanySymbolValue(req.getCompanySymbolValue()); companySymbols.setCompanySymbolValue(req.getCompanySymbolValue());
companySymbolsTMap.update(companySymbols); companySymbolsTMap.update(companySymbols);
try { companyService.updateCompanyBySymbol(transaction, companySymbols, false);
companyService.updateCompanyBySymbol(transaction, companySymbols);
} catch (ClearingBaseException e) {
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
}
txOk = true; txOk = true;
} catch (ClearingBaseException e) {
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
} finally { } finally {
if (txOk) if (txOk)
transaction.commitTransaction(); transaction.commitTransaction();
@ -161,6 +174,42 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB
return null; return null;
} }
public RequestInfoUpdate companySymbolDelete(BaseRequest<CommonDeleteRequest> symbolRequest) {
CommonDeleteRequest req = symbolRequest.getRequestPayload();
log.debug("CommonDeleteRequest for CompanySymbol received, id={}", symbolRequest.getId());
{ // validate
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest);
if (requestInfoUpdate != null) return requestInfoUpdate;
requestInfoUpdate = validationHelper.validateTillFirstError(symbolRequest, companySymbolDeleteRequestValidator);
if (requestInfoUpdate != null) return requestInfoUpdate;
}
CompanySymbols companySymbols;
ImdgTransaction transaction = imdgProvider.newTransaction();
transaction.beginTransaction();
boolean txOk = false;
try {
Imdg<CompanySymbols> companySymbolsTMap = transaction.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
companySymbols = companySymbolsTMap.getSingleObjectByID(req.getId());
if (companySymbols == null) {
throw new ClearingBaseException(new EnumMessage(CompanyErrors.CompanyInfoNotFound, req.getId()));
}
companySymbolsTMap.delete(companySymbols);
companyService.updateCompanyBySymbol(transaction, companySymbols, true);
txOk = true;
} catch (ClearingBaseException e) {
return requestHelper.makeErrorResponse(symbolRequest, e.getEnumMsg());
} finally {
if (txOk)
transaction.commitTransaction();
else
transaction.rollbackTransaction();
}
log.debug("successfully processed, id {}", companySymbols.getId());
return null;
}
public CompanySymbols createCompanySymbol(ImdgTransaction transaction, Long companyId, String companySymbol, String companySymbolValue) { public CompanySymbols createCompanySymbol(ImdgTransaction transaction, Long companyId, String companySymbol, String companySymbolValue) {
Objects.requireNonNull(companyId); Objects.requireNonNull(companyId);

View file

@ -3,17 +3,12 @@ package ru.spcex.clearing.company.validation;
import ru.clearing.classes.statics.data.company.CompanySymbols; import ru.clearing.classes.statics.data.company.CompanySymbols;
import ru.spcex.clearing.company.error.CompanyErrors; import ru.spcex.clearing.company.error.CompanyErrors;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanyNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.company.CompanySymbolUpdateRequest;
import ru.spcex.platform.enumeration.CompanySymbol;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
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.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@ -21,10 +16,10 @@ import java.util.Optional;
/** /**
* Проверка наличия CompanySymbols с переданными в запросе companySymbol и companyId * Проверка наличия CompanySymbols с переданными в запросе companySymbol и companyId
*/ */
public class CompanySymbolOfSymbolNewRequestNotExistRule implements IValidationRule<ImdgValidationContext<CompanySymbolUpdateRequest>> { public class CompanySymbolOfSymbolNewRequestNotExistRule implements IValidationRule<ImdgValidationContext<CompanySymbolNewRequest>> {
@Override @Override
public Optional<EnumMessage> validate(ImdgValidationContext<CompanySymbolUpdateRequest> context) { public Optional<EnumMessage> validate(ImdgValidationContext<CompanySymbolNewRequest> context) {
CompanySymbolUpdateRequest request = context.getValidatedObject(); CompanySymbolNewRequest request = context.getValidatedObject();
Imdg<CompanySymbols> companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); Imdg<CompanySymbols> companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);

View file

@ -121,7 +121,7 @@ public interface Consts {
String SDF53_PROCESS = "sdf53-process"; String SDF53_PROCESS = "sdf53-process";
String SDF54_PROCESS = "sdf54-process"; String SDF54_PROCESS = "sdf54-process";
String SDF56_PROCESS = "sdf56-process"; String SDF56_PROCESS = "sdf56-process";
String SDF57_PROCESS = "sdf57-process"; String CONTINUE_SESSION_BN = "sdf57-process";
String REVISE_PROCESS = "revise-process"; String REVISE_PROCESS = "revise-process";
String EXPORT_PROCESS = "export-process"; String EXPORT_PROCESS = "export-process";
String EXPORT_COMPLETED = "export_completed"; String EXPORT_COMPLETED = "export_completed";

View file

@ -0,0 +1,16 @@
package ru.spcex.clearing.platform.messaging.domain.cud.clearing;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ContinueSessionBnRequest {
@JsonProperty
private Long generationId;
public Long getGenerationId() {
return generationId;
}
public void setGenerationId(Long generationId) {
this.generationId = generationId;
}
}

View file

@ -0,0 +1,37 @@
package ru.spcex.clearing.platform.messaging.domain.cud.company;
import com.fasterxml.jackson.annotation.JsonProperty;
public class CompanySymbolNewRequest {
@JsonProperty
public Long companyId;
@JsonProperty
private String companySymbol;
@JsonProperty
private String companySymbolValue;
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public String getCompanySymbol() {
return companySymbol;
}
public void setCompanySymbol(String companySymbol) {
this.companySymbol = companySymbol;
}
public String getCompanySymbolValue() {
return companySymbolValue;
}
public void setCompanySymbolValue(String companySymbolValue) {
this.companySymbolValue = companySymbolValue;
}
}