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.validation.ValidationStored;
|
||||
import ru.spcex.clearing.session.stage.util.RegistryUtil;
|
||||
import ru.spcex.platform.classes.base.SpcexObjectBase;
|
||||
import ru.spcex.platform.enumeration.*;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
|
@ -130,6 +131,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
Result result = new Result();
|
||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||
result.setGenerationId(generationIdForGroup);
|
||||
log.info("SDF01 execution: sdf57 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf57::getGenerationId).orElse(null));
|
||||
for (SDf57 sdf57 : sdf) {
|
||||
IValidator validator = sDf57Validator.apply(sdf57);
|
||||
Optional<EnumMessage> error = validator.tillFirstError();
|
||||
|
|
@ -150,11 +152,18 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
Account accountDeb = validator.getStored(ValidationStored.Sdf57AccountDeb);
|
||||
Company companyCred = validator.getStored(ValidationStored.Sdf57CompanyCred);//получатель
|
||||
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
|
||||
Optional<Statement> statementDeb = createStatementIfNeeded.apply(companyDeb, accountDeb, InOutDirection.out);
|
||||
//адресат DEBIT / владелец CREDIT
|
||||
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 -> {
|
||||
Statement stmt = stmtCmpAcc.statement();
|
||||
|
|
@ -165,6 +174,7 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
Optional<EnumMessage> err = validateActiveness(company, account);
|
||||
if (err.isEmpty()) {
|
||||
findRegByDesignation(stmt, RegistryDesignation.A).ifPresentOrElse(rgs -> {
|
||||
log.debug("stmt.id={}, found AM*T.id={}, updating...", stmt.getId(), rgs.getId());
|
||||
updateReg(stmt, rgs);
|
||||
//добавил создание если не найдены
|
||||
Registry registryUnitB = findRegByUnit(stmt, rgs, RegistryUnit.B).orElse(copyRegB(rgs));
|
||||
|
|
@ -174,14 +184,23 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
//registry F всегда меняется
|
||||
if (registryUnitF.getId() == null) {
|
||||
registryImdg.insert(registryUnitF);
|
||||
log.debug("stmt.id={}, new AM*F.id={}", stmt.getId(), registryUnitF.getId());
|
||||
} else {
|
||||
registryImdg.update(registryUnitF);
|
||||
log.debug("stmt.id={}, updated AM*F.id={}", stmt.getId(), registryUnitF.getId());
|
||||
}
|
||||
//нужно сохранить registry B только если его не было
|
||||
if (registryUnitB.getId() == null) {
|
||||
registryImdg.insert(registryUnitB);
|
||||
log.debug("stmt.id={}, new AM*B.id={}", stmt.getId(), registryUnitB.getId());
|
||||
}
|
||||
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 registryB = copyRegB(registry);
|
||||
|
|
@ -190,6 +209,11 @@ public class Sdf57Executor extends AbstractExecutor<SDf57> {
|
|||
registryImdg.insert(registry);
|
||||
registryImdg.insert(registryF);
|
||||
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());
|
||||
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.setUpdated(Instant.now());
|
||||
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 -> {
|
||||
Registry registryD = copyRegD(rgs);
|
||||
registryImdg.insert(registryD);
|
||||
log.debug("stmt.id={}, sdf57.specif={} new DM*T.id={}",
|
||||
stmt.getId(),
|
||||
sdf57.getSpecif(),
|
||||
rgs.getId());
|
||||
}));
|
||||
}
|
||||
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
||||
statementImdg.update(stmt);
|
||||
log.debug("stmt.id={} status -> {}", stmt.getId(), OperationStatus.Executed.getKey());
|
||||
} else {
|
||||
log.debug("statement.id={} activness validation failed {}", stmt.getId(), messageResolver.resolve(err.get()));
|
||||
stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert
|
||||
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
|
||||
statementImdg.update(stmt);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue