SDF57 обработка добавил логи
This commit is contained in:
parent
864f64bba3
commit
d52e335174
1 changed files with 36 additions and 1 deletions
|
|
@ -26,6 +26,7 @@ import ru.spcex.clearing.service.LoggingService;
|
||||||
import ru.spcex.clearing.service.model.Result;
|
import ru.spcex.clearing.service.model.Result;
|
||||||
import ru.spcex.clearing.service.validation.ValidationStored;
|
import ru.spcex.clearing.service.validation.ValidationStored;
|
||||||
import ru.spcex.clearing.session.stage.util.RegistryUtil;
|
import ru.spcex.clearing.session.stage.util.RegistryUtil;
|
||||||
|
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||||
import ru.spcex.platform.enumeration.*;
|
import ru.spcex.platform.enumeration.*;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
@ -130,6 +131,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
Result result = new Result();
|
Result result = new Result();
|
||||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||||
result.setGenerationId(generationIdForGroup);
|
result.setGenerationId(generationIdForGroup);
|
||||||
|
log.info("SDF01 execution: sdf57 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf57::getGenerationId).orElse(null));
|
||||||
for (SDf57 sdf57 : sdf) {
|
for (SDf57 sdf57 : sdf) {
|
||||||
IValidator validator = sDf57Validator.apply(sdf57);
|
IValidator validator = sDf57Validator.apply(sdf57);
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
|
|
@ -150,11 +152,18 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
Account accountDeb = validator.getStored(ValidationStored.Sdf57AccountDeb);
|
Account accountDeb = validator.getStored(ValidationStored.Sdf57AccountDeb);
|
||||||
Company companyCred = validator.getStored(ValidationStored.Sdf57CompanyCred);//получатель
|
Company companyCred = validator.getStored(ValidationStored.Sdf57CompanyCred);//получатель
|
||||||
Account accountCred = validator.getStored(ValidationStored.Sdf57AccountCred);
|
Account accountCred = validator.getStored(ValidationStored.Sdf57AccountCred);
|
||||||
|
log.debug("companyDeb.id={}, accountDeb.id={}, companyCred.id={}, accountCred.id={}",
|
||||||
|
companyDeb != null ? companyDeb.getId() : null,
|
||||||
|
accountDeb != null ? accountDeb.getId() : null,
|
||||||
|
companyCred != null ? companyCred.getId() : null,
|
||||||
|
accountCred != null ? accountCred.getId() : null);
|
||||||
//адресат CREDIT / владелец DEBIT
|
//адресат CREDIT / владелец DEBIT
|
||||||
Optional<Statement> statementDeb = createStatementIfNeeded.apply(companyDeb, accountDeb, InOutDirection.out);
|
Optional<Statement> statementDeb = createStatementIfNeeded.apply(companyDeb, accountDeb, InOutDirection.out);
|
||||||
//адресат DEBIT / владелец CREDIT
|
//адресат DEBIT / владелец CREDIT
|
||||||
Optional<Statement> statementCred = createStatementIfNeeded.apply(companyCred, accountCred, InOutDirection.in);
|
Optional<Statement> statementCred = createStatementIfNeeded.apply(companyCred, accountCred, InOutDirection.in);
|
||||||
|
log.debug("created statementDeb.id={}, statementCred.id={}",
|
||||||
|
statementDeb.map(SpcexObjectBase::getId).orElse(null),
|
||||||
|
statementCred.map(SpcexObjectBase::getId).orElse(null));
|
||||||
|
|
||||||
Consumer<StmtCmpAcc> createRegistryIfNeeded = stmtCmpAcc -> {
|
Consumer<StmtCmpAcc> createRegistryIfNeeded = stmtCmpAcc -> {
|
||||||
Statement stmt = stmtCmpAcc.statement();
|
Statement stmt = stmtCmpAcc.statement();
|
||||||
|
|
@ -165,6 +174,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
Optional<EnumMessage> err = validateActiveness(company, account);
|
Optional<EnumMessage> err = validateActiveness(company, account);
|
||||||
if (err.isEmpty()) {
|
if (err.isEmpty()) {
|
||||||
findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(rgs -> {
|
findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(rgs -> {
|
||||||
|
log.debug("stmt.id={}, found AM*T.id={}, updating...", stmt.getId(), rgs.getId());
|
||||||
updateReg(stmt, rgs);
|
updateReg(stmt, rgs);
|
||||||
//добавил создание если не найдены
|
//добавил создание если не найдены
|
||||||
Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs));
|
Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs));
|
||||||
|
|
@ -174,14 +184,23 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
//registry F всегда меняется
|
//registry F всегда меняется
|
||||||
if (registryUnitF.getId() == null) {
|
if (registryUnitF.getId() == null) {
|
||||||
registryImdg.insert(registryUnitF);
|
registryImdg.insert(registryUnitF);
|
||||||
|
log.debug("stmt.id={}, new AM*F.id={}", stmt.getId(), registryUnitF.getId());
|
||||||
} else {
|
} else {
|
||||||
registryImdg.update(registryUnitF);
|
registryImdg.update(registryUnitF);
|
||||||
|
log.debug("stmt.id={}, updated AM*F.id={}", stmt.getId(), registryUnitF.getId());
|
||||||
}
|
}
|
||||||
//нужно сохранить registry B только если его не было
|
//нужно сохранить registry B только если его не было
|
||||||
if (registryUnitB.getId() == null) {
|
if (registryUnitB.getId() == null) {
|
||||||
registryImdg.insert(registryUnitB);
|
registryImdg.insert(registryUnitB);
|
||||||
|
log.debug("stmt.id={}, new AM*B.id={}", stmt.getId(), registryUnitB.getId());
|
||||||
}
|
}
|
||||||
registryImdg.update(rgs);
|
registryImdg.update(rgs);
|
||||||
|
log.debug("stmt.id={}, updated AM*T.id={}: balance {}/debit {}/ credit {}",
|
||||||
|
stmt.getId(),
|
||||||
|
rgs.getId(),
|
||||||
|
rgs.getBalance(),
|
||||||
|
rgs.getDebit(),
|
||||||
|
rgs.getCredit());
|
||||||
}, () -> {
|
}, () -> {
|
||||||
Registry registry = createRegistryByStatement(stmt, company, account, RegistryDesignation.A);
|
Registry registry = createRegistryByStatement(stmt, company, account, RegistryDesignation.A);
|
||||||
Registry registryB = copyRegB(registry);
|
Registry registryB = copyRegB(registry);
|
||||||
|
|
@ -190,6 +209,11 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
registryImdg.insert(registry);
|
registryImdg.insert(registry);
|
||||||
registryImdg.insert(registryF);
|
registryImdg.insert(registryF);
|
||||||
registryImdg.insert(registryB);
|
registryImdg.insert(registryB);
|
||||||
|
log.debug("stmt.id={}, new AM*T.id={}, new AM*F.id={}, new AM*B.id={}",
|
||||||
|
stmt.getId(),
|
||||||
|
registry.getId(),
|
||||||
|
registryF.getId(),
|
||||||
|
registryB.getId());
|
||||||
});
|
});
|
||||||
InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection());
|
InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection());
|
||||||
if (!StringUtils.isEmpty(sdf57.getSpecif()) && pattern.matcher(sdf57.getSpecif()).find() && InOutDirection.in.equals(direction)) {
|
if (!StringUtils.isEmpty(sdf57.getSpecif()) && pattern.matcher(sdf57.getSpecif()).find() && InOutDirection.in.equals(direction)) {
|
||||||
|
|
@ -198,14 +222,25 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
||||||
rgs.setBalance(safeBD(rgs.getBalance()).add(safeBD(stmt.getAmount())));
|
rgs.setBalance(safeBD(rgs.getBalance()).add(safeBD(stmt.getAmount())));
|
||||||
rgs.setUpdated(Instant.now());
|
rgs.setUpdated(Instant.now());
|
||||||
registryImdg.update(rgs);
|
registryImdg.update(rgs);
|
||||||
|
log.debug("stmt.id={}, sdf57.specif={} updated DM*T.id={}",
|
||||||
|
stmt.getId(),
|
||||||
|
sdf57.getSpecif(),
|
||||||
|
rgs.getId());
|
||||||
},
|
},
|
||||||
() -> findRegByDesignation(stmt, RegistryDesignation.O).ifPresent(rgs -> {
|
() -> findRegByDesignation(stmt, RegistryDesignation.O).ifPresent(rgs -> {
|
||||||
Registry registryD = copyRegD(rgs);
|
Registry registryD = copyRegD(rgs);
|
||||||
registryImdg.insert(registryD);
|
registryImdg.insert(registryD);
|
||||||
|
log.debug("stmt.id={}, sdf57.specif={} new DM*T.id={}",
|
||||||
|
stmt.getId(),
|
||||||
|
sdf57.getSpecif(),
|
||||||
|
rgs.getId());
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
||||||
|
statementImdg.update(stmt);
|
||||||
|
log.debug("stmt.id={} status -> {}", stmt.getId(), OperationStatus.Executed.getKey());
|
||||||
} else {
|
} else {
|
||||||
|
log.debug("statement.id={} activness validation failed {}", stmt.getId(), messageResolver.resolve(err.get()));
|
||||||
stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert
|
stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert
|
||||||
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
|
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
|
||||||
statementImdg.update(stmt);
|
statementImdg.update(stmt);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue