diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java index 57bea0fa9..b81417fdd 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java @@ -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.cud.account.sdf01.AccountSdf01Request; 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.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; @@ -46,30 +46,30 @@ public class AccountService extends QueueConsumer implements InitializingBean { private void accountNew(BaseRequest userRequest) { AccountSdf01Request req = userRequest.getRequestPayload(); log.debug("AccountSdf01Request received"); - List accountToStatement = new ArrayList<>(); + List accountToStatement = new ArrayList<>(); for (AccountSdf01RequestPart accountReq : req.getAccounts()) { Account account = new Account(); account.setAccount(accountReq.getAccount()); //fixme account.setCompany(); accountMap.insert(account); - AccountSdf01ToStatementRequestPart responsePart = responsePart(accountReq.getSdf01Id()); + AccountSdfToStatementRequestPart responsePart = responsePart(accountReq.getSdf01Id()); accountToStatement.add(responsePart); } sendStatementRequestBack(req.getGroupingSdf01Id(), accountToStatement); log.debug("successfully processed, grouping id={}, processed number={}", req.getGroupingSdf01Id(), accountToStatement.size()); } - private AccountSdf01ToStatementRequestPart responsePart(Long sdf01Id) { - AccountSdf01ToStatementRequestPart responsePart = new AccountSdf01ToStatementRequestPart(); - responsePart.setSdf01Id(sdf01Id); + private AccountSdfToStatementRequestPart responsePart(Long sdf01Id) { + AccountSdfToStatementRequestPart responsePart = new AccountSdfToStatementRequestPart(); + responsePart.setSdfId(sdf01Id); responsePart.setErrorCode(null); responsePart.setErrorText(null); return responsePart; } - private void sendStatementRequestBack(Long groupingSdf01Id, List results) { + private void sendStatementRequestBack(Long groupingSdf01Id, List results) { StatementRequest request = new StatementRequest(); - request.setSdf01GroupId(groupingSdf01Id); + request.setGroupId(groupingSdf01Id); request.setAccountCreationResults(results); kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request); } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstactExecutor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstactExecutor.java new file mode 100644 index 000000000..94b12375e --- /dev/null +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AbstactExecutor.java @@ -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 { + abstract Result execute(Collection sdf, StatementRequest statementRequest); +} diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Result.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Result.java new file mode 100644 index 000000000..d1bb55272 --- /dev/null +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Result.java @@ -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 accountRequests = new ArrayList<>(); + private Long generationId; + + public List getAccountRequests() { + return accountRequests; + } + + public void setAccountRequests(List accountRequests) { + this.accountRequests = accountRequests; + } + + public Long getGenerationId() { + return generationId; + } + + public void setGenerationId(Long generationId) { + this.generationId = generationId; + } +} diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java new file mode 100644 index 000000000..99f0bf1eb --- /dev/null +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf01Executor.java @@ -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 { + private final Logger log = LoggerFactory.getLogger(getClass()); + + private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); + private final Imdg statementImdg; + private final Function sDf01Validator; + private final LoggingService errorLogger; + private final Imdg sdf02Imdg; + private final ImdgProvider imdgProvider; + private final AccountBalanceService accountBalanceService; + private final IMessageResolver errorResolver; + private final Imdg accountBalanceImdg; + + public Sdf01Executor(Function 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 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 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; + } +} diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java index 4c03a209f..74ab80ffe 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java @@ -7,14 +7,10 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; 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.BaseRequest; 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.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender; -import ru.spcex.platform.classes.base.SpcexObjectBase; -import ru.spcex.platform.enumeration.*; +import ru.spcex.platform.classes.base.interfaces.WithAccount; +import ru.spcex.platform.enumeration.SdfTable; 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.*; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; @@ -44,17 +38,19 @@ import java.util.stream.Collectors; public class StatementService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); - private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); private final ImdgProvider imdgProvider; private final KafkaSender kafkaReqProducer; private final LoggingService errorLogger; - private final Imdg sdf01Imdg; + private final Imdg sdf01Imdg; private final Imdg sdf02Imdg; private final Imdg accountBalanceImdg; private final Imdg statementImdg; private final Function sDf01Validator; private final AccountBalanceService accountBalanceService; private final IMessageResolver errorResolver; + private final Map> executorsMap = new HashMap() {{ +// put(SdfTable.SDF_01, new Sdf01Executor()); + }}; @Autowired public StatementService(Consumer kafkaQueue, ImdgProvider imdgProvider, KafkaSender kafkaReqProducer, LoggingService errorLogger, @@ -84,160 +80,40 @@ public class StatementService extends QueueConsumer implements InitializingBean private void process(BaseRequest systemRequest) { StatementRequest statementRequest = systemRequest.getRequestPayload(); - Collection sdf01Group; + Collection sdf01Group; + SdfTable table = statementRequest.getTable(); + //map = getMapByTable(table) if (statementRequest.getAccountCreationResults().size() == 0) { - sdf01Group = sdf01Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getSdf01GroupId())); + sdf01Group = sdf01Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", statementRequest.getGroupId())); } else { sdf01Group = statementRequest.getAccountCreationResults() .stream() .filter(part -> part.getErrorCode() == null) //fixme эти случае должны попадать в ошибочный sdf02 - .map(part -> sdf01Imdg.getSingleObjectByID(part.getSdf01Id())) + .map(part -> sdf01Imdg.getSingleObjectByID(part.getSdfId())) .collect(Collectors.toList()); } - sdf01Group = sdf01Group - .stream() - .sorted(Comparator.comparing(SpcexObjectBase::getId)) - .collect(Collectors.toList()); - List accountRequests = new ArrayList<>(); - Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); - for (SDf01 sdf01 : sdf01Group) { - IValidator validator = sDf01Validator.apply(sdf01); - Optional 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 - 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) { +// sdf01Group = sdf01Group +// .stream() +// .sorted(Comparator.comparing(SpcexObjectBase::getId)) +// .collect(Collectors.toList()); + //questions: делаем абстракцию или нет + AbstactExecutor service = executorsMap.get(table); + Result res = service.execute(sdf01Group, statementRequest); + + if (res.getAccountRequests().size() == 0) { ExportToFileRequest exportRequest = new ExportToFileRequest(); - exportRequest.setSdfGroupId(generationIdForGroup); + exportRequest.setSdfGroupId(res.getGenerationId()); exportRequest.setNameOfTable("DF-02"); kafkaReqProducer.sendRequestToQueue(Consts.EXPORT_PROCESS, exportRequest); } 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 accountRequests) { AccountSdf01Request r = new AccountSdf01Request(); r.setGroupingSdf01Id(sdf01GroupingId); r.setAccounts(accountRequests); 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; - } } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java index 6bfcc9f20..ec5724453 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.time.Instant; @@ -10,7 +11,7 @@ import java.time.Instant; *

* DB table: S_DF01 **/ -public class SDf01 extends SpcexObjectBase { +public class SDf01 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String curr_code; @@ -37,6 +38,7 @@ public class SDf01 extends SpcexObjectBase { this.curr_code = value; } + @Override public String getAccount() { return account; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java index 587fc6002..d905b58ab 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.time.Instant; @@ -10,7 +11,7 @@ import java.time.Instant; *

* DB table: S_DF02 **/ -public class SDf02 extends SpcexObjectBase { +public class SDf02 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String curr_code; @@ -38,6 +39,7 @@ public class SDf02 extends SpcexObjectBase { this.curr_code = value; } + @Override public String getAccount() { return account; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java index da43a4fd7..bd330401e 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.math.BigDecimal; import java.time.Instant; @@ -11,7 +12,7 @@ import java.time.Instant; *

* DB table: S_DF08 **/ -public class SDf09 extends SpcexObjectBase { +public class SDf09 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; @@ -24,6 +25,7 @@ public class SDf09 extends SpcexObjectBase { private Instant generationTime; private Long generationId; + @Override public String getAccount() { return account; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java index dab3f0299..590b5c0f8 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.math.BigDecimal; import java.time.Instant; @@ -11,7 +12,7 @@ import java.time.Instant; *

* DB table: S_DF10 */ -public class SDf10 extends SpcexObjectBase { +public class SDf10 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; @@ -25,6 +26,7 @@ public class SDf10 extends SpcexObjectBase { private Long generationId; private Long in_s_df09_id; + @Override public String getAccount() { return account; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java index 5102a038a..dafeee777 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java @@ -2,8 +2,8 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; -import java.math.BigDecimal; import java.time.Instant; /** @@ -11,7 +11,7 @@ import java.time.Instant; *

* DB table: S_DF12 **/ -public class SDf12 extends SpcexObjectBase { +public class SDf12 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; @@ -21,6 +21,7 @@ public class SDf12 extends SpcexObjectBase { private Instant generationTime; private Long generationId; + @Override public String getAccount() { return account; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java index 9ee5665ef..ae6bf2f62 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.math.BigDecimal; import java.time.Instant; @@ -11,7 +12,7 @@ import java.time.Instant; *

* DB table: S_DF16 **/ -public class SDf16 extends SpcexObjectBase { +public class SDf16 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; @@ -26,6 +27,7 @@ public class SDf16 extends SpcexObjectBase { private Instant generationTime; private Long generationId; + @Override public String getAccount() { return account; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java index 39a18eb66..cc19fb3f5 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.math.BigDecimal; import java.time.Instant; @@ -11,7 +12,7 @@ import java.time.Instant; *

* DB table: S_DF17 **/ -public class SDf17 extends SpcexObjectBase { +public class SDf17 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; @@ -27,6 +28,7 @@ public class SDf17 extends SpcexObjectBase { private Long generationId; private Long inSDf16Id; + @Override public String getAccount() { return account; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java index c388f3c4b..73415e77a 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java @@ -2,6 +2,7 @@ package ru.clearing.classes.statics.data.sdf; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; +import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.math.BigDecimal; import java.time.Instant; @@ -11,7 +12,7 @@ import java.time.Instant; *

* DB table: S_DF18 **/ -public class SDf18 extends SpcexObjectBase { +public class SDf18 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String account; @@ -22,6 +23,7 @@ public class SDf18 extends SpcexObjectBase { private Long generationId; private Long inSDf12Id; + @Override public String getAccount() { return account; } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java index b3a3202ff..d9a5a933e 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java @@ -71,7 +71,7 @@ public class ImportToDB extends Stage { private void sendStatementRequest(Long fileId) { StatementRequest statementRequest = new StatementRequest(); - statementRequest.setSdf01GroupId(fileId); + statementRequest.setGroupId(fileId); kafka.get().sendRequestToQueue(Consts.STATEMENT_PROCESS, statementRequest); } } diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithAccount.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithAccount.java new file mode 100644 index 000000000..ccc1db832 --- /dev/null +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/WithAccount.java @@ -0,0 +1,5 @@ +package ru.spcex.platform.classes.base.interfaces; + +public interface WithAccount { + String getAccount(); +} diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SdfTable.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SdfTable.java new file mode 100644 index 000000000..8cb3a01d2 --- /dev/null +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/SdfTable.java @@ -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); + } +} diff --git a/platform-parent/platform-messaging/pom.xml b/platform-parent/platform-messaging/pom.xml index d2afb1602..40ee2a9a9 100644 --- a/platform-parent/platform-messaging/pom.xml +++ b/platform-parent/platform-messaging/pom.xml @@ -44,6 +44,10 @@ platform-classes-base provided - + + ru.spcex.platform + platform-enum + provided + \ No newline at end of file diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/AccountSdf01ToStatementRequestPart.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/AccountSdfToStatementRequestPart.java similarity index 73% rename from platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/AccountSdf01ToStatementRequestPart.java rename to platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/AccountSdfToStatementRequestPart.java index 4921c9d2e..16f31cd39 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/AccountSdf01ToStatementRequestPart.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/AccountSdfToStatementRequestPart.java @@ -2,20 +2,20 @@ package ru.spcex.clearing.platform.messaging.domain.cud.balance; import com.fasterxml.jackson.annotation.JsonProperty; -public class AccountSdf01ToStatementRequestPart { +public class AccountSdfToStatementRequestPart { @JsonProperty - private Long sdf01Id; + private Long sdfId; @JsonProperty private Long errorCode; @JsonProperty private String errorText; - public Long getSdf01Id() { - return sdf01Id; + public Long getSdfId() { + return sdfId; } - public void setSdf01Id(Long sdf01Id) { - this.sdf01Id = sdf01Id; + public void setSdfId(Long sdfId) { + this.sdfId = sdfId; } public Long getErrorCode() { diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java index e2477137a..82815cfb7 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java @@ -1,40 +1,42 @@ package ru.spcex.clearing.platform.messaging.domain.cud.balance; import com.fasterxml.jackson.annotation.JsonProperty; +import ru.spcex.platform.enumeration.SdfTable; import java.util.ArrayList; import java.util.List; public class StatementRequest { @JsonProperty - private Long sdf01GroupId; - //------------------- - //from accountBalance creation + private Long groupId; @JsonProperty - List accountCreationResults = new ArrayList<>(); + private SdfTable table; + //------------------- + //from account-service creation + @JsonProperty + List accountCreationResults = new ArrayList<>(); -// public StatementRequestType getType() { -// if (errorCode != null || errorText != null || status != null) { -// return StatementRequestType.accountBalanceResponse; -// } else if (inOutSDfType != null) { -// return StatementRequestType.sdf02Response; -// } else return StatementRequestType.create; -// return type; -// } - - public Long getSdf01GroupId() { - return sdf01GroupId; + public Long getGroupId() { + return groupId; } - public void setSdf01GroupId(Long sdf01GroupId) { - this.sdf01GroupId = sdf01GroupId; + public void setGroupId(Long groupId) { + this.groupId = groupId; } - public List getAccountCreationResults() { + public SdfTable getTable() { + return table; + } + + public void setTable(SdfTable table) { + this.table = table; + } + + public List getAccountCreationResults() { return accountCreationResults; } - public void setAccountCreationResults(List accountCreationResults) { + public void setAccountCreationResults(List accountCreationResults) { this.accountCreationResults = accountCreationResults; } } \ No newline at end of file