some refactoring balance-service
This commit is contained in:
parent
10298d1880
commit
0472cbc85e
19 changed files with 350 additions and 194 deletions
|
|
@ -12,7 +12,7 @@ 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.AccountSdf01RequestPart;
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01RequestPart;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.AccountSdf01ToStatementRequestPart;
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.AccountSdfToStatementRequestPart;
|
||||||
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;
|
||||||
|
|
@ -46,30 +46,30 @@ public class AccountService extends QueueConsumer implements InitializingBean {
|
||||||
private void accountNew(BaseRequest<AccountSdf01Request> userRequest) {
|
private void accountNew(BaseRequest<AccountSdf01Request> userRequest) {
|
||||||
AccountSdf01Request req = userRequest.getRequestPayload();
|
AccountSdf01Request req = userRequest.getRequestPayload();
|
||||||
log.debug("AccountSdf01Request received");
|
log.debug("AccountSdf01Request received");
|
||||||
List<AccountSdf01ToStatementRequestPart> accountToStatement = new ArrayList<>();
|
List<AccountSdfToStatementRequestPart> accountToStatement = new ArrayList<>();
|
||||||
for (AccountSdf01RequestPart accountReq : req.getAccounts()) {
|
for (AccountSdf01RequestPart accountReq : req.getAccounts()) {
|
||||||
Account account = new Account();
|
Account account = new Account();
|
||||||
account.setAccount(accountReq.getAccount());
|
account.setAccount(accountReq.getAccount());
|
||||||
//fixme account.setCompany();
|
//fixme account.setCompany();
|
||||||
accountMap.insert(account);
|
accountMap.insert(account);
|
||||||
AccountSdf01ToStatementRequestPart responsePart = responsePart(accountReq.getSdf01Id());
|
AccountSdfToStatementRequestPart responsePart = responsePart(accountReq.getSdf01Id());
|
||||||
accountToStatement.add(responsePart);
|
accountToStatement.add(responsePart);
|
||||||
}
|
}
|
||||||
sendStatementRequestBack(req.getGroupingSdf01Id(), accountToStatement);
|
sendStatementRequestBack(req.getGroupingSdf01Id(), accountToStatement);
|
||||||
log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size());
|
log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
private AccountSdf01ToStatementRequestPart responsePart(Long sdf01Id) {
|
private AccountSdfToStatementRequestPart responsePart(Long sdf01Id) {
|
||||||
AccountSdf01ToStatementRequestPart responsePart = new AccountSdf01ToStatementRequestPart();
|
AccountSdfToStatementRequestPart responsePart = new AccountSdfToStatementRequestPart();
|
||||||
responsePart.setSdf01Id(sdf01Id);
|
responsePart.setSdfId(sdf01Id);
|
||||||
responsePart.setErrorCode(null);
|
responsePart.setErrorCode(null);
|
||||||
responsePart.setErrorText(null);
|
responsePart.setErrorText(null);
|
||||||
return responsePart;
|
return responsePart;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendStatementRequestBack(Long groupingSdf01Id, List<AccountSdf01ToStatementRequestPart> results) {
|
private void sendStatementRequestBack(Long groupingSdf01Id, List<AccountSdfToStatementRequestPart> results) {
|
||||||
StatementRequest request = new StatementRequest();
|
StatementRequest request = new StatementRequest();
|
||||||
request.setSdf01GroupId(groupingSdf01Id);
|
request.setGroupId(groupingSdf01Id);
|
||||||
request.setAccountCreationResults(results);
|
request.setAccountCreationResults(results);
|
||||||
kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request);
|
kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package ru.spcex.clearing.balance.service;
|
||||||
|
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
public abstract class AbstactExecutor<T extends WithAccount> {
|
||||||
|
abstract Result execute(Collection<T> sdf, StatementRequest statementRequest);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package ru.spcex.clearing.balance.service;
|
||||||
|
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01RequestPart;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Result {
|
||||||
|
private List<AccountSdf01RequestPart> accountRequests = new ArrayList<>();
|
||||||
|
private Long generationId;
|
||||||
|
|
||||||
|
public List<AccountSdf01RequestPart> getAccountRequests() {
|
||||||
|
return accountRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAccountRequests(List<AccountSdf01RequestPart> accountRequests) {
|
||||||
|
this.accountRequests = accountRequests;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getGenerationId() {
|
||||||
|
return generationId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGenerationId(Long generationId) {
|
||||||
|
this.generationId = generationId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,194 @@
|
||||||
|
package ru.spcex.clearing.balance.service;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.account.Account;
|
||||||
|
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||||
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
|
import ru.clearing.classes.statics.data.sdf.SDf01;
|
||||||
|
import ru.clearing.classes.statics.data.sdf.SDf02;
|
||||||
|
import ru.clearing.classes.statics.data.statement.Statement;
|
||||||
|
import ru.spcex.clearing.balance.errors.BalanceError;
|
||||||
|
import ru.spcex.clearing.balance.validation.ValidationStored;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdf01RequestPart;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
||||||
|
import ru.spcex.platform.enumeration.*;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class Sdf01Executor extends AbstactExecutor<SDf01> {
|
||||||
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy");
|
||||||
|
private final Imdg<Statement> statementImdg;
|
||||||
|
private final Function<SDf01, IValidator> sDf01Validator;
|
||||||
|
private final LoggingService errorLogger;
|
||||||
|
private final Imdg<SDf02> sdf02Imdg;
|
||||||
|
private final ImdgProvider imdgProvider;
|
||||||
|
private final AccountBalanceService accountBalanceService;
|
||||||
|
private final IMessageResolver errorResolver;
|
||||||
|
private final Imdg<AccountBalance> accountBalanceImdg;
|
||||||
|
|
||||||
|
public Sdf01Executor(Function<SDf01, IValidator> sDf01Validator,
|
||||||
|
LoggingService errorLogger,
|
||||||
|
ImdgProvider imdgProvider,
|
||||||
|
AccountBalanceService accountBalanceService,
|
||||||
|
IMessageResolver errorResolver) {
|
||||||
|
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||||
|
this.sdf02Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class);
|
||||||
|
this.accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);;
|
||||||
|
this.sDf01Validator = sDf01Validator;
|
||||||
|
this.errorLogger = errorLogger;
|
||||||
|
this.imdgProvider = imdgProvider;
|
||||||
|
this.accountBalanceService = accountBalanceService;
|
||||||
|
this.errorResolver = errorResolver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Result execute(Collection<SDf01> sdf, StatementRequest statementRequest){
|
||||||
|
Result result = new Result();
|
||||||
|
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||||
|
result.setGenerationId(generationIdForGroup);
|
||||||
|
for (SDf01 sdf01 : sdf) {
|
||||||
|
IValidator validator = sDf01Validator.apply(sdf01);
|
||||||
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
|
Company company = validator.getStored(ValidationStored.Company);
|
||||||
|
if (statementRequest.getAccountCreationResults().size() == 0
|
||||||
|
&& BalanceError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) {
|
||||||
|
//на данном шаге company существует -> getId ok
|
||||||
|
//формируем пакетный запрос на добавление account
|
||||||
|
//ответ придет в этот же метод, process
|
||||||
|
result.getAccountRequests().add(createAccountRequestPart(sdf01.getId(), sdf01.getAccount(), company.getId()));
|
||||||
|
log.info("account {} for sdf01.id={} not found - send request for creation", sdf01.getAccount(), sdf01.getId());
|
||||||
|
continue;
|
||||||
|
} else if (BalanceError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) {
|
||||||
|
log.error("fatal error: resumed processing after generating accounts, but no account found for sdf01.id={}", sdf01.getId());
|
||||||
|
}
|
||||||
|
if (error.isPresent()) {
|
||||||
|
errorLogger.logError("sdf01.id={}", error.get(), sdf01.getId());
|
||||||
|
sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Statement statement = statementImdg.getSingleObjectByFieldValues(Map.of("account", sdf01.getAccount()));
|
||||||
|
if (statement == null) {
|
||||||
|
statement = createFlow(sdf01,
|
||||||
|
company,
|
||||||
|
validator.getStored(ValidationStored.Account));
|
||||||
|
} else {
|
||||||
|
updateFlow(statement, sdf01,
|
||||||
|
validator.getStored(ValidationStored.Account));
|
||||||
|
}
|
||||||
|
SDf02 sdf02New = createSuccessSdf02(sdf01, generationIdForGroup);
|
||||||
|
sdf02Imdg.insert(sdf02New);
|
||||||
|
statement.setOutSDfId(sdf02New.getId());
|
||||||
|
AccountResult accountResult = accountBalanceService.createAccountBalance(statement.getAddresseeId(), statement.getAccountId(), statement.getAmount(), statement.getCashMovementCurrencyCode());
|
||||||
|
if (accountResult.getError() != null) {
|
||||||
|
statement.setErrorCode(accountResult.getError().getSubject().getId().toString());
|
||||||
|
statement.setErrorText(errorResolver.resolve(accountResult.getError()));
|
||||||
|
} else {
|
||||||
|
accountBalanceImdg.insert(accountResult.getAccount()); //insert == update?
|
||||||
|
statement.setOperationStatus(OperationStatus.Executed.getKey());
|
||||||
|
}
|
||||||
|
statementImdg.update(statement);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Statement createFlow(SDf01 sdf01, Company company, Account account) {
|
||||||
|
Statement statement = new Statement();
|
||||||
|
statement.setAddresseeId(company.getId());
|
||||||
|
statement.setSenderId(Sender.Prc.getId());
|
||||||
|
statement.setCreated(Instant.now());
|
||||||
|
statement.setClearingDate(LocalDate.now());
|
||||||
|
statement.setStatementType(StatementType.full.getKey());
|
||||||
|
statement.setAccountId(account.getId());
|
||||||
|
statement.setAccount(sdf01.getAccount());
|
||||||
|
statement.setInOutDirection(InOutDirection.in.getKey());
|
||||||
|
statement.setSettlementDate(LocalDate.parse(sdf01.getDat(), datFormatter));
|
||||||
|
statement.setAmount(BigDecimalUtil.parse(sdf01.getRemainder()));
|
||||||
|
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
||||||
|
statement.setOperationStatus(OperationStatus.Pending.getKey());
|
||||||
|
statement.setInSDfId(sdf01.getId());
|
||||||
|
statement.setInOutSDfType(InOutSDfType.type1.getKey());
|
||||||
|
statementImdg.insert(statement);
|
||||||
|
return statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateFlow(Statement statement, SDf01 sdf01, Account account) {
|
||||||
|
statement.setUpdated(Instant.now());
|
||||||
|
statement.setAccountId(account.getId());
|
||||||
|
statement.setAccount(sdf01.getAccount());
|
||||||
|
statement.setInOutDirection(InOutDirection.in.getKey());
|
||||||
|
statement.setSettlementDate(LocalDate.parse(sdf01.getDat(), datFormatter));
|
||||||
|
statement.setAmount(BigDecimalUtil.parse(sdf01.getRemainder()));
|
||||||
|
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
||||||
|
statementImdg.update(statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
private AccountSdf01RequestPart createAccountRequestPart(Long sdf01Id, String account, Long companyId) {
|
||||||
|
AccountSdf01RequestPart req = new AccountSdf01RequestPart();
|
||||||
|
req.setAccount(account);
|
||||||
|
req.setCompanyId(companyId);
|
||||||
|
req.setSdf01Id(sdf01Id);
|
||||||
|
return req;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private SDf02 createErrorSdf02(SDf01 sdf01, EnumMessage error, Long generationIdForGroup) {
|
||||||
|
SDf02 sDf02 = new SDf02();
|
||||||
|
sDf02.setCurr_code(sdf01.getCurr_code());
|
||||||
|
sDf02.setAccount(sdf01.getAccount());
|
||||||
|
sDf02.setRemainder(sdf01.getRemainder());
|
||||||
|
sDf02.setDeal(sdf01.getDeal());
|
||||||
|
sDf02.setAcc_code(sdf01.getAcc_code());
|
||||||
|
sDf02.setDat(sdf01.getDat());
|
||||||
|
sDf02.setMarket(sdf01.getMarket());
|
||||||
|
sDf02.setAcc_name(sdf01.getAcc_name());
|
||||||
|
sDf02.setAcc_type(sdf01.getAcc_type());
|
||||||
|
sDf02.setSumengage(sdf01.getSumengage());
|
||||||
|
sDf02.setSumunblock(sdf01.getSumunblock());
|
||||||
|
sDf02.setFile_type(sdf01.getFile_type());
|
||||||
|
sDf02.setInSDf01Id(sdf01.getId());
|
||||||
|
String errorId = error.getSubject().getId().toString();
|
||||||
|
sDf02.setResult(errorId.substring(errorId.length() - 3));
|
||||||
|
sDf02.setGenerationId(generationIdForGroup);
|
||||||
|
sDf02.setGenerationTime(Instant.now());
|
||||||
|
return sDf02;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SDf02 createSuccessSdf02(SDf01 sdf01, Long generationIdForGroup) {
|
||||||
|
SDf02 sDf02 = new SDf02();
|
||||||
|
sDf02.setCurr_code(sdf01.getCurr_code());
|
||||||
|
sDf02.setAccount(sdf01.getAccount());
|
||||||
|
sDf02.setRemainder(sdf01.getRemainder());
|
||||||
|
sDf02.setDeal(sdf01.getDeal());
|
||||||
|
sDf02.setAcc_code(sdf01.getAcc_code());
|
||||||
|
sDf02.setDat(sdf01.getDat());
|
||||||
|
sDf02.setMarket(sdf01.getMarket());
|
||||||
|
sDf02.setAcc_name(sdf01.getAcc_name());
|
||||||
|
sDf02.setAcc_type(sdf01.getAcc_type());
|
||||||
|
sDf02.setSumengage(sdf01.getSumengage());
|
||||||
|
sDf02.setSumunblock(sdf01.getSumunblock());
|
||||||
|
sDf02.setFile_type(sdf01.getFile_type());
|
||||||
|
sDf02.setInSDf01Id(sdf01.getId());
|
||||||
|
sDf02.setGenerationId(generationIdForGroup);
|
||||||
|
sDf02.setGenerationTime(Instant.now());
|
||||||
|
sDf02.setResult("OK!");
|
||||||
|
return sDf02;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7,14 +7,10 @@ import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.account.Account;
|
|
||||||
import ru.clearing.classes.statics.data.account.AccountBalance;
|
import ru.clearing.classes.statics.data.account.AccountBalance;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf01;
|
import ru.clearing.classes.statics.data.sdf.SDf01;
|
||||||
import ru.clearing.classes.statics.data.sdf.SDf02;
|
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.balance.errors.BalanceError;
|
|
||||||
import ru.spcex.clearing.balance.validation.ValidationStored;
|
|
||||||
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;
|
||||||
|
|
@ -24,19 +20,17 @@ import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileReque
|
||||||
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;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.SdfTable;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.number.BigDecimalUtil;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.util.Collection;
|
||||||
import java.time.LocalDate;
|
import java.util.HashMap;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.util.List;
|
||||||
import java.util.*;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -44,17 +38,19 @@ import java.util.stream.Collectors;
|
||||||
public class StatementService extends QueueConsumer implements InitializingBean {
|
public class StatementService extends QueueConsumer implements InitializingBean {
|
||||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy");
|
|
||||||
private final ImdgProvider imdgProvider;
|
private final ImdgProvider imdgProvider;
|
||||||
private final KafkaSender kafkaReqProducer;
|
private final KafkaSender kafkaReqProducer;
|
||||||
private final LoggingService errorLogger;
|
private final LoggingService errorLogger;
|
||||||
private final Imdg<SDf01> sdf01Imdg;
|
private final Imdg<? extends WithAccount> sdf01Imdg;
|
||||||
private final Imdg<SDf02> sdf02Imdg;
|
private final Imdg<SDf02> sdf02Imdg;
|
||||||
private final Imdg<AccountBalance> accountBalanceImdg;
|
private final Imdg<AccountBalance> accountBalanceImdg;
|
||||||
private final Imdg<Statement> statementImdg;
|
private final Imdg<Statement> statementImdg;
|
||||||
private final Function<SDf01, IValidator> sDf01Validator;
|
private final Function<SDf01, IValidator> sDf01Validator;
|
||||||
private final AccountBalanceService accountBalanceService;
|
private final AccountBalanceService accountBalanceService;
|
||||||
private final IMessageResolver errorResolver;
|
private final IMessageResolver errorResolver;
|
||||||
|
private final Map<SdfTable, AbstactExecutor<? extends WithAccount>> executorsMap = new HashMap() {{
|
||||||
|
// put(SdfTable.SDF_01, new Sdf01Executor());
|
||||||
|
}};
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public StatementService(Consumer<String, Object> kafkaQueue, ImdgProvider imdgProvider, KafkaSender kafkaReqProducer, LoggingService errorLogger,
|
public StatementService(Consumer<String, Object> kafkaQueue, ImdgProvider imdgProvider, KafkaSender kafkaReqProducer, LoggingService errorLogger,
|
||||||
|
|
@ -84,160 +80,40 @@ public class StatementService extends QueueConsumer implements InitializingBean
|
||||||
|
|
||||||
private void process(BaseRequest<StatementRequest> systemRequest) {
|
private void process(BaseRequest<StatementRequest> systemRequest) {
|
||||||
StatementRequest statementRequest = systemRequest.getRequestPayload();
|
StatementRequest statementRequest = systemRequest.getRequestPayload();
|
||||||
Collection<SDf01> sdf01Group;
|
Collection<? extends WithAccount> sdf01Group;
|
||||||
|
SdfTable table = statementRequest.getTable();
|
||||||
|
//map = getMapByTable(table)
|
||||||
if (statementRequest.getAccountCreationResults().size() == 0) {
|
if (statementRequest.getAccountCreationResults().size() == 0) {
|
||||||
sdf01Group = sdf01Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getSdf01GroupId()));
|
sdf01Group = sdf01Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getGroupId()));
|
||||||
} else {
|
} else {
|
||||||
sdf01Group = statementRequest.getAccountCreationResults()
|
sdf01Group = statementRequest.getAccountCreationResults()
|
||||||
.stream()
|
.stream()
|
||||||
.filter(part -> part.getErrorCode() == null) //fixme эти случае должны попадать в ошибочный sdf02
|
.filter(part -> part.getErrorCode() == null) //fixme эти случае должны попадать в ошибочный sdf02
|
||||||
.map(part -> sdf01Imdg.getSingleObjectByID(part.getSdf01Id()))
|
.map(part -> sdf01Imdg.getSingleObjectByID(part.getSdfId()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
sdf01Group = sdf01Group
|
// sdf01Group = sdf01Group
|
||||||
.stream()
|
// .stream()
|
||||||
.sorted(Comparator.comparing(SpcexObjectBase::getId))
|
// .sorted(Comparator.comparing(SpcexObjectBase::getId))
|
||||||
.collect(Collectors.toList());
|
// .collect(Collectors.toList());
|
||||||
List<AccountSdf01RequestPart> accountRequests = new ArrayList<>();
|
//questions: делаем абстракцию или нет
|
||||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
AbstactExecutor service = executorsMap.get(table);
|
||||||
for (SDf01 sdf01 : sdf01Group) {
|
Result res = service.execute(sdf01Group, statementRequest);
|
||||||
IValidator validator = sDf01Validator.apply(sdf01);
|
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
if (res.getAccountRequests().size() == 0) {
|
||||||
Company company = validator.getStored(ValidationStored.Company);
|
|
||||||
if (statementRequest.getAccountCreationResults().size() == 0
|
|
||||||
&& BalanceError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) {
|
|
||||||
//на данном шаге company существует -> getId ok
|
|
||||||
//формируем пакетный запрос на добавление account
|
|
||||||
//ответ придет в этот же метод, process
|
|
||||||
accountRequests.add(createAccountRequestPart(sdf01.getId(), sdf01.getAccount(), company.getId()));
|
|
||||||
log.info("account {} for sdf01.id={} not found - send request for creation", sdf01.getAccount(), sdf01.getId());
|
|
||||||
continue;
|
|
||||||
} else if (BalanceError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) {
|
|
||||||
log.error("fatal error: resumed processing after generating accounts, but no account found for sdf01.id={}", sdf01.getId());
|
|
||||||
}
|
|
||||||
if (error.isPresent()) {
|
|
||||||
errorLogger.logError("sdf01.id={}", error.get(), sdf01.getId());
|
|
||||||
sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Statement statement = statementImdg.getSingleObjectByFieldValues(Map.of("account", sdf01.getAccount()));
|
|
||||||
if (statement == null) {
|
|
||||||
statement = createFlow(sdf01,
|
|
||||||
company,
|
|
||||||
validator.getStored(ValidationStored.Account));
|
|
||||||
} else {
|
|
||||||
updateFlow(statement, sdf01,
|
|
||||||
validator.getStored(ValidationStored.Account));
|
|
||||||
}
|
|
||||||
SDf02 sdf02New = createSuccessSdf02(sdf01, generationIdForGroup);
|
|
||||||
sdf02Imdg.insert(sdf02New);
|
|
||||||
statement.setOutSDfId(sdf02New.getId());
|
|
||||||
AccountResult accountResult = accountBalanceService.createAccountBalance(statement.getAddresseeId(), statement.getAccountId(), statement.getAmount(), statement.getCashMovementCurrencyCode());
|
|
||||||
if (accountResult.getError() != null) {
|
|
||||||
statement.setErrorCode(accountResult.getError().getSubject().getId().toString());
|
|
||||||
statement.setErrorText(errorResolver.resolve(accountResult.getError()));
|
|
||||||
} else {
|
|
||||||
accountBalanceImdg.insert(accountResult.getAccount()); //insert == update?
|
|
||||||
statement.setOperationStatus(OperationStatus.Executed.getKey());
|
|
||||||
}
|
|
||||||
statementImdg.update(statement);
|
|
||||||
}
|
|
||||||
if (accountRequests.size() == 0) {
|
|
||||||
ExportToFileRequest exportRequest = new ExportToFileRequest();
|
ExportToFileRequest exportRequest = new ExportToFileRequest();
|
||||||
exportRequest.setSdfGroupId(generationIdForGroup);
|
exportRequest.setSdfGroupId(res.getGenerationId());
|
||||||
exportRequest.setNameOfTable("DF-02");
|
exportRequest.setNameOfTable("DF-02");
|
||||||
kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
|
kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest);
|
||||||
} else {
|
} else {
|
||||||
kafkaReqProducer.sendRequestToQueue(Consts.ACCOUNT_NEW, createAccountsRequest(statementRequest.getSdf01GroupId(), accountRequests));
|
kafkaReqProducer.sendRequestToQueue(Consts.ACCOUNT_NEW, createAccountsRequest(statementRequest.getGroupId(), res.getAccountRequests()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Statement createFlow(SDf01 sdf01, Company company, Account account) {
|
|
||||||
Statement statement = new Statement();
|
|
||||||
statement.setAddresseeId(company.getId());
|
|
||||||
statement.setSenderId(Sender.Prc.getId());
|
|
||||||
statement.setCreated(Instant.now());
|
|
||||||
statement.setClearingDate(LocalDate.now());
|
|
||||||
statement.setStatementType(StatementType.full.getKey());
|
|
||||||
statement.setAccountId(account.getId());
|
|
||||||
statement.setAccount(sdf01.getAccount());
|
|
||||||
statement.setInOutDirection(InOutDirection.in.getKey());
|
|
||||||
statement.setSettlementDate(LocalDate.parse(sdf01.getDat(), datFormatter));
|
|
||||||
statement.setAmount(BigDecimalUtil.parse(sdf01.getRemainder()));
|
|
||||||
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
|
||||||
statement.setOperationStatus(OperationStatus.Pending.getKey());
|
|
||||||
statement.setInSDfId(sdf01.getId());
|
|
||||||
statement.setInOutSDfType(InOutSDfType.type1.getKey());
|
|
||||||
statementImdg.insert(statement);
|
|
||||||
return statement;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateFlow(Statement statement, SDf01 sdf01, Account account) {
|
|
||||||
statement.setUpdated(Instant.now());
|
|
||||||
statement.setAccountId(account.getId());
|
|
||||||
statement.setAccount(sdf01.getAccount());
|
|
||||||
statement.setInOutDirection(InOutDirection.in.getKey());
|
|
||||||
statement.setSettlementDate(LocalDate.parse(sdf01.getDat(), datFormatter));
|
|
||||||
statement.setAmount(BigDecimalUtil.parse(sdf01.getRemainder()));
|
|
||||||
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
|
||||||
statementImdg.update(statement);
|
|
||||||
}
|
|
||||||
|
|
||||||
private AccountSdf01RequestPart createAccountRequestPart(Long sdf01Id, String account, Long companyId) {
|
|
||||||
AccountSdf01RequestPart req = new AccountSdf01RequestPart();
|
|
||||||
req.setAccount(account);
|
|
||||||
req.setCompanyId(companyId);
|
|
||||||
req.setSdf01Id(sdf01Id);
|
|
||||||
return req;
|
|
||||||
}
|
|
||||||
|
|
||||||
private AccountSdf01Request createAccountsRequest(Long sdf01GroupingId, List<AccountSdf01RequestPart> accountRequests) {
|
private AccountSdf01Request createAccountsRequest(Long sdf01GroupingId, List<AccountSdf01RequestPart> accountRequests) {
|
||||||
AccountSdf01Request r = new AccountSdf01Request();
|
AccountSdf01Request r = new AccountSdf01Request();
|
||||||
r.setGroupingSdf01Id(sdf01GroupingId);
|
r.setGroupingSdf01Id(sdf01GroupingId);
|
||||||
r.setAccounts(accountRequests);
|
r.setAccounts(accountRequests);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SDf02 createErrorSdf02(SDf01 sdf01, EnumMessage error, Long generationIdForGroup) {
|
|
||||||
SDf02 sDf02 = new SDf02();
|
|
||||||
sDf02.setCurr_code(sdf01.getCurr_code());
|
|
||||||
sDf02.setAccount(sdf01.getAccount());
|
|
||||||
sDf02.setRemainder(sdf01.getRemainder());
|
|
||||||
sDf02.setDeal(sdf01.getDeal());
|
|
||||||
sDf02.setAcc_code(sdf01.getAcc_code());
|
|
||||||
sDf02.setDat(sdf01.getDat());
|
|
||||||
sDf02.setMarket(sdf01.getMarket());
|
|
||||||
sDf02.setAcc_name(sdf01.getAcc_name());
|
|
||||||
sDf02.setAcc_type(sdf01.getAcc_type());
|
|
||||||
sDf02.setSumengage(sdf01.getSumengage());
|
|
||||||
sDf02.setSumunblock(sdf01.getSumunblock());
|
|
||||||
sDf02.setFile_type(sdf01.getFile_type());
|
|
||||||
sDf02.setInSDf01Id(sdf01.getId());
|
|
||||||
String errorId = error.getSubject().getId().toString();
|
|
||||||
sDf02.setResult(errorId.substring(errorId.length() - 3));
|
|
||||||
sDf02.setGenerationId(generationIdForGroup);
|
|
||||||
sDf02.setGenerationTime(Instant.now());
|
|
||||||
return sDf02;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SDf02 createSuccessSdf02(SDf01 sdf01, Long generationIdForGroup) {
|
|
||||||
SDf02 sDf02 = new SDf02();
|
|
||||||
sDf02.setCurr_code(sdf01.getCurr_code());
|
|
||||||
sDf02.setAccount(sdf01.getAccount());
|
|
||||||
sDf02.setRemainder(sdf01.getRemainder());
|
|
||||||
sDf02.setDeal(sdf01.getDeal());
|
|
||||||
sDf02.setAcc_code(sdf01.getAcc_code());
|
|
||||||
sDf02.setDat(sdf01.getDat());
|
|
||||||
sDf02.setMarket(sdf01.getMarket());
|
|
||||||
sDf02.setAcc_name(sdf01.getAcc_name());
|
|
||||||
sDf02.setAcc_type(sdf01.getAcc_type());
|
|
||||||
sDf02.setSumengage(sdf01.getSumengage());
|
|
||||||
sDf02.setSumunblock(sdf01.getSumunblock());
|
|
||||||
sDf02.setFile_type(sdf01.getFile_type());
|
|
||||||
sDf02.setInSDf01Id(sdf01.getId());
|
|
||||||
sDf02.setGenerationId(generationIdForGroup);
|
|
||||||
sDf02.setGenerationTime(Instant.now());
|
|
||||||
sDf02.setResult("OK!");
|
|
||||||
return sDf02;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
|
|
@ -10,7 +11,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF01
|
* DB table: S_DF01
|
||||||
**/
|
**/
|
||||||
public class SDf01 extends SpcexObjectBase {
|
public class SDf01 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String curr_code;
|
private String curr_code;
|
||||||
|
|
@ -37,6 +38,7 @@ public class SDf01 extends SpcexObjectBase {
|
||||||
this.curr_code = value;
|
this.curr_code = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
|
|
@ -10,7 +11,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF02
|
* DB table: S_DF02
|
||||||
**/
|
**/
|
||||||
public class SDf02 extends SpcexObjectBase {
|
public class SDf02 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String curr_code;
|
private String curr_code;
|
||||||
|
|
@ -38,6 +39,7 @@ public class SDf02 extends SpcexObjectBase {
|
||||||
this.curr_code = value;
|
this.curr_code = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -11,7 +12,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF08
|
* DB table: S_DF08
|
||||||
**/
|
**/
|
||||||
public class SDf09 extends SpcexObjectBase {
|
public class SDf09 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String account;
|
private String account;
|
||||||
|
|
@ -24,6 +25,7 @@ public class SDf09 extends SpcexObjectBase {
|
||||||
private Instant generationTime;
|
private Instant generationTime;
|
||||||
private Long generationId;
|
private Long generationId;
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -11,7 +12,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF10
|
* DB table: S_DF10
|
||||||
*/
|
*/
|
||||||
public class SDf10 extends SpcexObjectBase {
|
public class SDf10 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String account;
|
private String account;
|
||||||
|
|
@ -25,6 +26,7 @@ public class SDf10 extends SpcexObjectBase {
|
||||||
private Long generationId;
|
private Long generationId;
|
||||||
private Long in_s_df09_id;
|
private Long in_s_df09_id;
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -11,7 +11,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF12
|
* DB table: S_DF12
|
||||||
**/
|
**/
|
||||||
public class SDf12 extends SpcexObjectBase {
|
public class SDf12 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String account;
|
private String account;
|
||||||
|
|
@ -21,6 +21,7 @@ public class SDf12 extends SpcexObjectBase {
|
||||||
private Instant generationTime;
|
private Instant generationTime;
|
||||||
private Long generationId;
|
private Long generationId;
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -11,7 +12,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF16
|
* DB table: S_DF16
|
||||||
**/
|
**/
|
||||||
public class SDf16 extends SpcexObjectBase {
|
public class SDf16 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String account;
|
private String account;
|
||||||
|
|
@ -26,6 +27,7 @@ public class SDf16 extends SpcexObjectBase {
|
||||||
private Instant generationTime;
|
private Instant generationTime;
|
||||||
private Long generationId;
|
private Long generationId;
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -11,7 +12,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF17
|
* DB table: S_DF17
|
||||||
**/
|
**/
|
||||||
public class SDf17 extends SpcexObjectBase {
|
public class SDf17 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String account;
|
private String account;
|
||||||
|
|
@ -27,6 +28,7 @@ public class SDf17 extends SpcexObjectBase {
|
||||||
private Long generationId;
|
private Long generationId;
|
||||||
private Long inSDf16Id;
|
private Long inSDf16Id;
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf;
|
||||||
|
|
||||||
import ru.clearing.classes.ConstSerializable;
|
import ru.clearing.classes.ConstSerializable;
|
||||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
|
import ru.spcex.platform.classes.base.interfaces.WithAccount;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -11,7 +12,7 @@ import java.time.Instant;
|
||||||
* <p>
|
* <p>
|
||||||
* DB table: S_DF18
|
* DB table: S_DF18
|
||||||
**/
|
**/
|
||||||
public class SDf18 extends SpcexObjectBase {
|
public class SDf18 extends SpcexObjectBase implements WithAccount {
|
||||||
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
private static final long serialVersionUID = ConstSerializable.serialVersionUID;
|
||||||
|
|
||||||
private String account;
|
private String account;
|
||||||
|
|
@ -22,6 +23,7 @@ public class SDf18 extends SpcexObjectBase {
|
||||||
private Long generationId;
|
private Long generationId;
|
||||||
private Long inSDf12Id;
|
private Long inSDf12Id;
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getAccount() {
|
public String getAccount() {
|
||||||
return account;
|
return account;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ public class ImportToDB extends Stage {
|
||||||
|
|
||||||
private void sendStatementRequest(Long fileId) {
|
private void sendStatementRequest(Long fileId) {
|
||||||
StatementRequest statementRequest = new StatementRequest();
|
StatementRequest statementRequest = new StatementRequest();
|
||||||
statementRequest.setSdf01GroupId(fileId);
|
statementRequest.setGroupId(fileId);
|
||||||
kafka.get().sendRequestToQueue(Consts.STATEMENT_PROCESS, statementRequest);
|
kafka.get().sendRequestToQueue(Consts.STATEMENT_PROCESS, statementRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package ru.spcex.platform.classes.base.interfaces;
|
||||||
|
|
||||||
|
public interface WithAccount {
|
||||||
|
String getAccount();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
package ru.spcex.platform.enumeration;
|
||||||
|
|
||||||
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
|
||||||
|
public enum SdfTable implements IEnumKey {
|
||||||
|
SDF_01("SDF_01");
|
||||||
|
|
||||||
|
SdfTable(String key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getKey() {
|
||||||
|
return this.key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equalsByKey(String key) {
|
||||||
|
return IEnumKey.super.equalsByKey(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -44,6 +44,10 @@
|
||||||
<artifactId>platform-classes-base</artifactId>
|
<artifactId>platform-classes-base</artifactId>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ru.spcex.platform</groupId>
|
||||||
|
<artifactId>platform-enum</artifactId>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -2,20 +2,20 @@ package ru.spcex.clearing.platform.messaging.domain.cud.balance;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
public class AccountSdf01ToStatementRequestPart {
|
public class AccountSdfToStatementRequestPart {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long sdf01Id;
|
private Long sdfId;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long errorCode;
|
private Long errorCode;
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private String errorText;
|
private String errorText;
|
||||||
|
|
||||||
public Long getSdf01Id() {
|
public Long getSdfId() {
|
||||||
return sdf01Id;
|
return sdfId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSdf01Id(Long sdf01Id) {
|
public void setSdfId(Long sdfId) {
|
||||||
this.sdf01Id = sdf01Id;
|
this.sdfId = sdfId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getErrorCode() {
|
public Long getErrorCode() {
|
||||||
|
|
@ -1,40 +1,42 @@
|
||||||
package ru.spcex.clearing.platform.messaging.domain.cud.balance;
|
package ru.spcex.clearing.platform.messaging.domain.cud.balance;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import ru.spcex.platform.enumeration.SdfTable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class StatementRequest {
|
public class StatementRequest {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long sdf01GroupId;
|
private Long groupId;
|
||||||
//-------------------
|
|
||||||
//from accountBalance creation
|
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
List<AccountSdf01ToStatementRequestPart> accountCreationResults = new ArrayList<>();
|
private SdfTable table;
|
||||||
|
//-------------------
|
||||||
|
//from account-service creation
|
||||||
|
@JsonProperty
|
||||||
|
List<AccountSdfToStatementRequestPart> accountCreationResults = new ArrayList<>();
|
||||||
|
|
||||||
// public StatementRequestType getType() {
|
public Long getGroupId() {
|
||||||
// if (errorCode != null || errorText != null || status != null) {
|
return groupId;
|
||||||
// return StatementRequestType.accountBalanceResponse;
|
|
||||||
// } else if (inOutSDfType != null) {
|
|
||||||
// return StatementRequestType.sdf02Response;
|
|
||||||
// } else return StatementRequestType.create;
|
|
||||||
// return type;
|
|
||||||
// }
|
|
||||||
|
|
||||||
public Long getSdf01GroupId() {
|
|
||||||
return sdf01GroupId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSdf01GroupId(Long sdf01GroupId) {
|
public void setGroupId(Long groupId) {
|
||||||
this.sdf01GroupId = sdf01GroupId;
|
this.groupId = groupId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<AccountSdf01ToStatementRequestPart> getAccountCreationResults() {
|
public SdfTable getTable() {
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTable(SdfTable table) {
|
||||||
|
this.table = table;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<AccountSdfToStatementRequestPart> getAccountCreationResults() {
|
||||||
return accountCreationResults;
|
return accountCreationResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAccountCreationResults(List<AccountSdf01ToStatementRequestPart> accountCreationResults) {
|
public void setAccountCreationResults(List<AccountSdfToStatementRequestPart> accountCreationResults) {
|
||||||
this.accountCreationResults = accountCreationResults;
|
this.accountCreationResults = accountCreationResults;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Add table
Reference in a new issue