diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java index 74e8954f5..452c07053 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java @@ -64,7 +64,7 @@ public class ValidationConfig { } @Bean("sdf16Validator") - public Function sdf16Validator(ImdgProvider imdgProvider) { + public Function sdf16Validator() { return sDf16 -> { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(sDf16); @@ -72,8 +72,8 @@ public class ValidationConfig { addImdg.accept(IMDGDistributedNames.Map_Account); addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl<>(context, - Sdf01ValidationRule.CompanyPresent, - SdfCommonValidationRule.AccountPresent, + Sdf16ValidationRule.CompanyPresent, + ExistClrnAccountValidationRule.AccountPresent, MarketIsUValidationRule.instance); }; } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java index ba2567cda..eb4989deb 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java @@ -21,6 +21,7 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.validation.IValidator; +import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -50,7 +51,8 @@ public class Sdf16Executor extends AbstractExecutor { IMessageResolver errorResolver) { this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); this.sdf17Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf17, SDf17.class); - this.accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);; + this.accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); + ; this.sDf16Validator = sDf16Validator; this.errorLogger = errorLogger; this.imdgProvider = imdgProvider; @@ -58,7 +60,7 @@ public class Sdf16Executor extends AbstractExecutor { this.errorResolver = errorResolver; } - public Result execute(Collection sdf, StatementRequest statementRequest){ + public Result execute(Collection sdf, StatementRequest statementRequest) { Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); result.setGenerationId(generationIdForGroup); @@ -94,12 +96,13 @@ public class Sdf16Executor extends AbstractExecutor { SDf17 sdfNew = createSuccessSdfRes(sdfItem, generationIdForGroup); sdf17Imdg.insert(sdfNew); statement.setOutSDfId(sdfNew.getId()); - AccountResult accountResult = accountBalanceService.createAccountBalance(statement.getAddresseeId(), statement.getAccountId(), statement.getAmount(), statement.getCashMovementCurrencyCode()); + 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? + accountBalanceImdg.insert(accountResult.getAccount()); statement.setOperationStatus(OperationStatus.Executed.getKey()); } statementImdg.update(statement); @@ -117,8 +120,7 @@ public class Sdf16Executor extends AbstractExecutor { statement.setAccountId(account.getId()); statement.setAccount(sdf.getAccount()); statement.setInOutDirection(InOutDirection.in.getKey()); -// statement.setSettlementDate(LocalDate.parse(sdf.getDat(), datFormatter)); -// statement.setAmount(BigDecimalUtil.parse(sdf.getRemainder())); + statement.setAmount(sdf.getSum()); statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey()); statement.setOperationStatus(OperationStatus.Pending.getKey()); statement.setInSDfId(sdf.getId()); @@ -132,8 +134,7 @@ public class Sdf16Executor extends AbstractExecutor { statement.setAccountId(account.getId()); statement.setAccount(sdf.getAccount()); statement.setInOutDirection(InOutDirection.in.getKey()); -// statement.setSettlementDate(LocalDate.parse(sdf.getDat(), datFormatter)); -// statement.setAmount(BigDecimalUtil.parse(sdf.getRemainder())); + statement.setAmount(sdf.getSum()); statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey()); statementImdg.update(statement); } @@ -148,44 +149,43 @@ public class Sdf16Executor extends AbstractExecutor { private SDf17 createErrorSdfRes(SDf16 sdf, EnumMessage error, Long generationIdForGroup) { SDf17 errorSdf = new SDf17(); -// errorSdf.setCurr_code(sdf.getCurr_code()); errorSdf.setAccount(sdf.getAccount()); -// errorSdf.setRemainder(sdf.getRemainder()); -// errorSdf.setDeal(sdf.getDeal()); -// errorSdf.setAcc_code(sdf.getAcc_code()); -// errorSdf.setDat(sdf.getDat()); + errorSdf.setSum(sdf.getSum()); errorSdf.setMarket(sdf.getMarket()); -// errorSdf.setAcc_name(sdf.getAcc_name()); -// errorSdf.setAcc_type(sdf.getAcc_type()); -// errorSdf.setSumengage(sdf.getSumengage()); -// errorSdf.setSumunblock(sdf.getSumunblock()); -// errorSdf.setFile_type(sdf.getFile_type()); -// errorSdf.setInSDf01Id(sdf.getId()); -// String errorId = error.getSubject().getId().toString(); -// errorSdf.setResult(errorId.substring(errorId.length() - 3)); + errorSdf.setType(sdf.getType()); + errorSdf.setINN(sdf.getInn()); + errorSdf.setBIC(sdf.getBic()); + errorSdf.setSPEC(sdf.getSpec()); + errorSdf.setNumber(sdf.getNumber()); + errorSdf.setResult(obtainResultNum(error)); errorSdf.setGenerationId(generationIdForGroup); errorSdf.setGenerationTime(Instant.now()); + errorSdf.setInSDf16Id(sdf.getId()); return errorSdf; } private SDf17 createSuccessSdfRes(SDf16 sdf, Long generationIdForGroup) { SDf17 successSdf = new SDf17(); -// successSdf.setCurr_code(sdf.getCurr_code()); successSdf.setAccount(sdf.getAccount()); -// successSdf.setRemainder(sdf.getRemainder()); -// successSdf.setDeal(sdf.getDeal()); -// successSdf.setAcc_code(sdf.getAcc_code()); -// successSdf.setDat(sdf.getDat()); + successSdf.setSum(sdf.getSum()); successSdf.setMarket(sdf.getMarket()); -// successSdf.setAcc_name(sdf.getAcc_name()); -// successSdf.setAcc_type(sdf.getAcc_type()); -// successSdf.setSumengage(sdf.getSumengage()); -// successSdf.setSumunblock(sdf.getSumunblock()); -// successSdf.setFile_type(sdf.getFile_type()); -// successSdf.setInSDf01Id(sdf.getId()); + successSdf.setType(sdf.getType()); + successSdf.setINN(sdf.getInn()); + successSdf.setBIC(sdf.getBic()); + successSdf.setSPEC(sdf.getSpec()); + successSdf.setNumber(sdf.getNumber()); successSdf.setGenerationId(generationIdForGroup); successSdf.setGenerationTime(Instant.now()); -// successSdf.setResult("OK!"); + successSdf.setInSDf16Id(sdf.getId()); + successSdf.setResult(BigDecimal.ZERO); return successSdf; } + + private BigDecimal obtainResultNum(EnumMessage error){ + if (BalanceError.AccountNotPresent.equalsById(error.getSubject().getId())) + return BigDecimal.ONE; + if (BalanceError.BalanceNotEnough.equalsById(error.getSubject().getId())) + return BigDecimal.ONE; + return BigDecimal.valueOf(9); + } } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/SdfCommonValidationRule.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/ExistClrnAccountValidationRule.java similarity index 93% rename from clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/SdfCommonValidationRule.java rename to clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/ExistClrnAccountValidationRule.java index ec8090eda..322bdc7c2 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/SdfCommonValidationRule.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/ExistClrnAccountValidationRule.java @@ -14,7 +14,7 @@ import java.time.format.DateTimeFormatter; import java.util.Map; import java.util.Optional; -public enum SdfCommonValidationRule implements IValidationRule> { +public enum ExistClrnAccountValidationRule implements IValidationRule> { AccountPresent() { @Override public Optional validate(ImdgValidationContext context) {