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 85d82a532..ca5c6342e 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 @@ -133,7 +133,11 @@ public class AccountService extends QueueConsumer implements InitializingBean { account.setCompanyId(req.getCompanyId()); account.setAccount(req.getAccount()); account.setAccountType(req.getAccountType()); - account.setStatus(WorkflowStatus.Active.getKey()); + if (req.getStatus() == null) { + account.setStatus(WorkflowStatus.Active.getKey()); + } else { + account.setStatus(req.getStatus()); + } account.setCreated(now); account.setUpdated(now); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java index 846cdbc75..44d37f90d 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java @@ -22,6 +22,7 @@ import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.platform.enumeration.AccountType; import ru.spcex.platform.enumeration.ServiceStatus; +import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgTransaction; @@ -101,7 +102,7 @@ public class BankAccountService extends QueueConsumer implements InitializingBea Account account = new Account(); account.setAccount(req.getAccount()); account.setAccountType(AccountType.Bank.getKey()); - account.setStatus(ServiceStatus.Active.getKey()); + account.setStatus(WorkflowStatus.Active.getKey()); account.setCompanyId(req.getCompanyId()); account.setCreated(now); account.setUpdated(now); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java index c7595c14c..7aead7923 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java @@ -128,7 +128,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali Account account = new Account(); account.setAccount(accountValue); account.setAccountType(AccountType.Info.getKey()); - account.setStatus(ServiceStatus.Active.getKey()); + account.setStatus(ServiceStatus.Active.getKey());//fixme !!! account.setCompanyId(userRequest.getRequestPayload().getCompanyId()); account.setCreated(now); account.setUpdated(now); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java index 79a92f754..9e6482d39 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java @@ -42,6 +42,7 @@ import java.util.Collection; import java.util.Map; import java.util.Optional; import java.util.function.Function; +import java.util.stream.Collectors; @Service public class Sdf08Executor extends AbstractExecutor { @@ -89,6 +90,27 @@ public class Sdf08Executor extends AbstractExecutor { public void sendCommand(KafkaSender kafkaSender, Result result) { } + Company searchCompany(String depoCode) { + String tradingCode; + if (depoCode.length() < 4) { + log.warn("Depocode='{}' too short. Can not search company.", depoCode); + tradingCode = depoCode; + } else { + tradingCode = depoCode.substring(1, 4); + while (tradingCode.length() > 1 && tradingCode.startsWith("0")) + tradingCode = tradingCode.substring(1); + } + String query = "tradingCode LIKE '" + tradingCode + "'"; + Collection companys = companyImdg.getCollectionObjectsBySQL(query); + log.trace("Selected {} record for sql: {}", companys.size(), query); + if (companys.isEmpty()) { + return null; + } + if (companys.size() > 1) + log.warn("Found {} company's by tradingCode='{}'", companys.size(), tradingCode); + return companys.iterator().next(); + } + public Result execute(Collection sdf, StatementRequest statementRequest) { Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); @@ -99,7 +121,7 @@ public class Sdf08Executor extends AbstractExecutor { Account account = validator.getStored(ValidationStored.Sdf08Account); if (statementRequest.getAccountCreationResults().size() == 0 && ClearingErrorInternal.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { - Company company = validator.getStored(ValidationStored.Sdf08Company); + Company company = searchCompany(sdf08.getDepoCode()); // validator.getStored(ValidationStored.Sdf08Company); Long companyId = company == null ? null : company.getId(); // account == null сегда, т.к. кейс AccountNotPresent if (companyId == null) { log.warn("account {} for sdf08.id={} not found. Can not send request for creation, cause company not found too", sdf08.getDepoCode(), sdf08.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java index bbb26fd11..9f21f02da 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java @@ -12,9 +12,11 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.text.TextUtil; import ru.spcex.platform.utils.validation.IValidationRule; +import java.util.Map; import java.util.Optional; public enum Sdf08NewValidationRule implements IValidationRule> { + @Deprecated // unused, см. тз по поиску компаний "III - Изменение statement по sDf08" 1. CompanyPresent() { @Override public Optional validate(ImdgValidationContext context) { @@ -37,8 +39,9 @@ public enum Sdf08NewValidationRule implements IValidationRule validate(ImdgValidationContext context) { SDf08 sdf08 = context.getValidatedObject(); Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); - Account acc = accountImdg.getSingleObjectBySQL("account = '" + sdf08.getDepoCode() - + "' and accountType='" + ru.spcex.platform.enumeration.AccountType.Depo.getKey() + "'"); + Account acc = accountImdg.getSingleObjectByFieldValues(Map.of( + "account", sdf08.getDepoCode() + , "accountType",ru.spcex.platform.enumeration.AccountType.Depo.getKey())); if (acc == null) { return of (ClearingErrorInternal.AccountNotPresent, sdf08.getDepoCode()); }