Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
a665e8e0d6
17 changed files with 317 additions and 97 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 {} ({})",
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue