add sdf16 validator
This commit is contained in:
parent
5422b93d34
commit
b61aeb43ac
3 changed files with 37 additions and 37 deletions
|
|
@ -64,7 +64,7 @@ public class ValidationConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean("sdf16Validator")
|
@Bean("sdf16Validator")
|
||||||
public Function<SDf16, IValidator> sdf16Validator(ImdgProvider imdgProvider) {
|
public Function<SDf16, IValidator> sdf16Validator() {
|
||||||
return sDf16 -> {
|
return sDf16 -> {
|
||||||
ImdgValidationContext<SDf16> context = new ImdgValidationContext<>();
|
ImdgValidationContext<SDf16> context = new ImdgValidationContext<>();
|
||||||
context.setValidatedObject(sDf16);
|
context.setValidatedObject(sDf16);
|
||||||
|
|
@ -72,8 +72,8 @@ public class ValidationConfig {
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Account);
|
addImdg.accept(IMDGDistributedNames.Map_Account);
|
||||||
addImdg.accept(IMDGDistributedNames.Map_Company);
|
addImdg.accept(IMDGDistributedNames.Map_Company);
|
||||||
return new ValidatorImpl<>(context,
|
return new ValidatorImpl<>(context,
|
||||||
Sdf01ValidationRule.CompanyPresent,
|
Sdf16ValidationRule.CompanyPresent,
|
||||||
SdfCommonValidationRule.AccountPresent,
|
ExistClrnAccountValidationRule.AccountPresent,
|
||||||
MarketIsUValidationRule.instance);
|
MarketIsUValidationRule.instance);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ 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.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
|
@ -50,7 +51,8 @@ public class Sdf16Executor extends AbstractExecutor<SDf16> {
|
||||||
IMessageResolver errorResolver) {
|
IMessageResolver errorResolver) {
|
||||||
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||||
this.sdf17Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf17, SDf17.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.sDf16Validator = sDf16Validator;
|
||||||
this.errorLogger = errorLogger;
|
this.errorLogger = errorLogger;
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
|
|
@ -58,7 +60,7 @@ public class Sdf16Executor extends AbstractExecutor<SDf16> {
|
||||||
this.errorResolver = errorResolver;
|
this.errorResolver = errorResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Result execute(Collection<SDf16> sdf, StatementRequest statementRequest){
|
public Result execute(Collection<SDf16> sdf, StatementRequest statementRequest) {
|
||||||
Result result = new Result();
|
Result result = new Result();
|
||||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||||
result.setGenerationId(generationIdForGroup);
|
result.setGenerationId(generationIdForGroup);
|
||||||
|
|
@ -94,12 +96,13 @@ public class Sdf16Executor extends AbstractExecutor<SDf16> {
|
||||||
SDf17 sdfNew = createSuccessSdfRes(sdfItem, generationIdForGroup);
|
SDf17 sdfNew = createSuccessSdfRes(sdfItem, generationIdForGroup);
|
||||||
sdf17Imdg.insert(sdfNew);
|
sdf17Imdg.insert(sdfNew);
|
||||||
statement.setOutSDfId(sdfNew.getId());
|
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) {
|
if (accountResult.getError() != null) {
|
||||||
statement.setErrorCode(accountResult.getError().getSubject().getId().toString());
|
statement.setErrorCode(accountResult.getError().getSubject().getId().toString());
|
||||||
statement.setErrorText(errorResolver.resolve(accountResult.getError()));
|
statement.setErrorText(errorResolver.resolve(accountResult.getError()));
|
||||||
} else {
|
} else {
|
||||||
accountBalanceImdg.insert(accountResult.getAccount()); //insert == update?
|
accountBalanceImdg.insert(accountResult.getAccount());
|
||||||
statement.setOperationStatus(OperationStatus.Executed.getKey());
|
statement.setOperationStatus(OperationStatus.Executed.getKey());
|
||||||
}
|
}
|
||||||
statementImdg.update(statement);
|
statementImdg.update(statement);
|
||||||
|
|
@ -117,8 +120,7 @@ public class Sdf16Executor extends AbstractExecutor<SDf16> {
|
||||||
statement.setAccountId(account.getId());
|
statement.setAccountId(account.getId());
|
||||||
statement.setAccount(sdf.getAccount());
|
statement.setAccount(sdf.getAccount());
|
||||||
statement.setInOutDirection(InOutDirection.in.getKey());
|
statement.setInOutDirection(InOutDirection.in.getKey());
|
||||||
// statement.setSettlementDate(LocalDate.parse(sdf.getDat(), datFormatter));
|
statement.setAmount(sdf.getSum());
|
||||||
// statement.setAmount(BigDecimalUtil.parse(sdf.getRemainder()));
|
|
||||||
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
||||||
statement.setOperationStatus(OperationStatus.Pending.getKey());
|
statement.setOperationStatus(OperationStatus.Pending.getKey());
|
||||||
statement.setInSDfId(sdf.getId());
|
statement.setInSDfId(sdf.getId());
|
||||||
|
|
@ -132,8 +134,7 @@ public class Sdf16Executor extends AbstractExecutor<SDf16> {
|
||||||
statement.setAccountId(account.getId());
|
statement.setAccountId(account.getId());
|
||||||
statement.setAccount(sdf.getAccount());
|
statement.setAccount(sdf.getAccount());
|
||||||
statement.setInOutDirection(InOutDirection.in.getKey());
|
statement.setInOutDirection(InOutDirection.in.getKey());
|
||||||
// statement.setSettlementDate(LocalDate.parse(sdf.getDat(), datFormatter));
|
statement.setAmount(sdf.getSum());
|
||||||
// statement.setAmount(BigDecimalUtil.parse(sdf.getRemainder()));
|
|
||||||
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey());
|
||||||
statementImdg.update(statement);
|
statementImdg.update(statement);
|
||||||
}
|
}
|
||||||
|
|
@ -148,44 +149,43 @@ public class Sdf16Executor extends AbstractExecutor<SDf16> {
|
||||||
|
|
||||||
private SDf17 createErrorSdfRes(SDf16 sdf, EnumMessage error, Long generationIdForGroup) {
|
private SDf17 createErrorSdfRes(SDf16 sdf, EnumMessage error, Long generationIdForGroup) {
|
||||||
SDf17 errorSdf = new SDf17();
|
SDf17 errorSdf = new SDf17();
|
||||||
// errorSdf.setCurr_code(sdf.getCurr_code());
|
|
||||||
errorSdf.setAccount(sdf.getAccount());
|
errorSdf.setAccount(sdf.getAccount());
|
||||||
// errorSdf.setRemainder(sdf.getRemainder());
|
errorSdf.setSum(sdf.getSum());
|
||||||
// errorSdf.setDeal(sdf.getDeal());
|
|
||||||
// errorSdf.setAcc_code(sdf.getAcc_code());
|
|
||||||
// errorSdf.setDat(sdf.getDat());
|
|
||||||
errorSdf.setMarket(sdf.getMarket());
|
errorSdf.setMarket(sdf.getMarket());
|
||||||
// errorSdf.setAcc_name(sdf.getAcc_name());
|
errorSdf.setType(sdf.getType());
|
||||||
// errorSdf.setAcc_type(sdf.getAcc_type());
|
errorSdf.setINN(sdf.getInn());
|
||||||
// errorSdf.setSumengage(sdf.getSumengage());
|
errorSdf.setBIC(sdf.getBic());
|
||||||
// errorSdf.setSumunblock(sdf.getSumunblock());
|
errorSdf.setSPEC(sdf.getSpec());
|
||||||
// errorSdf.setFile_type(sdf.getFile_type());
|
errorSdf.setNumber(sdf.getNumber());
|
||||||
// errorSdf.setInSDf01Id(sdf.getId());
|
errorSdf.setResult(obtainResultNum(error));
|
||||||
// String errorId = error.getSubject().getId().toString();
|
|
||||||
// errorSdf.setResult(errorId.substring(errorId.length() - 3));
|
|
||||||
errorSdf.setGenerationId(generationIdForGroup);
|
errorSdf.setGenerationId(generationIdForGroup);
|
||||||
errorSdf.setGenerationTime(Instant.now());
|
errorSdf.setGenerationTime(Instant.now());
|
||||||
|
errorSdf.setInSDf16Id(sdf.getId());
|
||||||
return errorSdf;
|
return errorSdf;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SDf17 createSuccessSdfRes(SDf16 sdf, Long generationIdForGroup) {
|
private SDf17 createSuccessSdfRes(SDf16 sdf, Long generationIdForGroup) {
|
||||||
SDf17 successSdf = new SDf17();
|
SDf17 successSdf = new SDf17();
|
||||||
// successSdf.setCurr_code(sdf.getCurr_code());
|
|
||||||
successSdf.setAccount(sdf.getAccount());
|
successSdf.setAccount(sdf.getAccount());
|
||||||
// successSdf.setRemainder(sdf.getRemainder());
|
successSdf.setSum(sdf.getSum());
|
||||||
// successSdf.setDeal(sdf.getDeal());
|
|
||||||
// successSdf.setAcc_code(sdf.getAcc_code());
|
|
||||||
// successSdf.setDat(sdf.getDat());
|
|
||||||
successSdf.setMarket(sdf.getMarket());
|
successSdf.setMarket(sdf.getMarket());
|
||||||
// successSdf.setAcc_name(sdf.getAcc_name());
|
successSdf.setType(sdf.getType());
|
||||||
// successSdf.setAcc_type(sdf.getAcc_type());
|
successSdf.setINN(sdf.getInn());
|
||||||
// successSdf.setSumengage(sdf.getSumengage());
|
successSdf.setBIC(sdf.getBic());
|
||||||
// successSdf.setSumunblock(sdf.getSumunblock());
|
successSdf.setSPEC(sdf.getSpec());
|
||||||
// successSdf.setFile_type(sdf.getFile_type());
|
successSdf.setNumber(sdf.getNumber());
|
||||||
// successSdf.setInSDf01Id(sdf.getId());
|
|
||||||
successSdf.setGenerationId(generationIdForGroup);
|
successSdf.setGenerationId(generationIdForGroup);
|
||||||
successSdf.setGenerationTime(Instant.now());
|
successSdf.setGenerationTime(Instant.now());
|
||||||
// successSdf.setResult("OK!");
|
successSdf.setInSDf16Id(sdf.getId());
|
||||||
|
successSdf.setResult(BigDecimal.ZERO);
|
||||||
return successSdf;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import java.time.format.DateTimeFormatter;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public enum SdfCommonValidationRule implements IValidationRule<ImdgValidationContext<WithAccount>> {
|
public enum ExistClrnAccountValidationRule implements IValidationRule<ImdgValidationContext<WithAccount>> {
|
||||||
AccountPresent() {
|
AccountPresent() {
|
||||||
@Override
|
@Override
|
||||||
public Optional<EnumMessage> validate(ImdgValidationContext<WithAccount> context) {
|
public Optional<EnumMessage> validate(ImdgValidationContext<WithAccount> context) {
|
||||||
Loading…
Add table
Reference in a new issue