clearing-service sdf08
This commit is contained in:
parent
c62e99fd7d
commit
12f9d024aa
5 changed files with 36 additions and 6 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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<SDf08> {
|
||||
|
|
@ -89,6 +90,27 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
|||
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<Company> 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<SDf08> sdf, StatementRequest statementRequest) {
|
||||
Result result = new Result();
|
||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||
|
|
@ -99,7 +121,7 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
|||
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());
|
||||
|
|
|
|||
|
|
@ -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<ImdgValidationContext<SDf08>> {
|
||||
@Deprecated // unused, см. тз по поиску компаний "III - Изменение statement по sDf08" 1.
|
||||
CompanyPresent() {
|
||||
@Override
|
||||
public Optional<EnumMessage> validate(ImdgValidationContext<SDf08> context) {
|
||||
|
|
@ -37,8 +39,9 @@ public enum Sdf08NewValidationRule implements IValidationRule<ImdgValidationCont
|
|||
public Optional<EnumMessage> validate(ImdgValidationContext<SDf08> context) {
|
||||
SDf08 sdf08 = context.getValidatedObject();
|
||||
Imdg<Account> 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());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue