SDF08 executor skip error sdf08
This commit is contained in:
parent
d0eef0b15f
commit
b6e19b9f8d
1 changed files with 89 additions and 72 deletions
|
|
@ -33,6 +33,7 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
|
||||||
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
|
import ru.spcex.platform.utils.log.ExceptionUtils;
|
||||||
import ru.spcex.platform.utils.text.TextUtil;
|
import ru.spcex.platform.utils.text.TextUtil;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
|
|
@ -118,6 +119,8 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
||||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||||
result.setGenerationId(generationIdForGroup);
|
result.setGenerationId(generationIdForGroup);
|
||||||
for (SDf08 sdf08 : sdf) {
|
for (SDf08 sdf08 : sdf) {
|
||||||
|
Statement stmt = null;
|
||||||
|
try {
|
||||||
IValidator validator = sDf08Validator.apply(sdf08);
|
IValidator validator = sDf08Validator.apply(sdf08);
|
||||||
Optional<EnumMessage> error = validator.tillFirstError();
|
Optional<EnumMessage> error = validator.tillFirstError();
|
||||||
Account account = validator.getStored(ValidationStored.Sdf08Account);
|
Account account = validator.getStored(ValidationStored.Sdf08Account);
|
||||||
|
|
@ -141,8 +144,7 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
||||||
// sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup));
|
// sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
stmt = createSdf08Statement(sdf08, account);
|
||||||
Statement stmt = createSdf08Statement(sdf08, account);
|
|
||||||
SDf09 sdf09New = createSuccessSdf09(sdf08, generationIdForGroup); //fixme тоже мб убрать
|
SDf09 sdf09New = createSuccessSdf09(sdf08, generationIdForGroup); //fixme тоже мб убрать
|
||||||
sdf09Imdg.insert(sdf09New);
|
sdf09Imdg.insert(sdf09New);
|
||||||
stmt.setOutSDfId(sdf09New.getId());
|
stmt.setOutSDfId(sdf09New.getId());
|
||||||
|
|
@ -158,8 +160,8 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
||||||
if (reg.isPresent()) {
|
if (reg.isPresent()) {
|
||||||
rgs = reg.get();
|
rgs = reg.get();
|
||||||
updateReg(stmt, rgs);
|
updateReg(stmt, rgs);
|
||||||
Registry registryUnitB = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.B).orElse(copyRegB(rgs));
|
Registry registryUnitB = findRegByUnit(company.getId(), account.getId(), stmt.getSecurityId(), stmt.getContract(), rgs, RegistryUnit.B).orElse(copyRegB(rgs));
|
||||||
Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду
|
Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getSecurityId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду
|
||||||
registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance()));
|
registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance()));
|
||||||
registryUnitF.setUpdated(Instant.now());
|
registryUnitF.setUpdated(Instant.now());
|
||||||
if (registryUnitF.getId() == null) {
|
if (registryUnitF.getId() == null) {
|
||||||
|
|
@ -191,6 +193,21 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
||||||
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
|
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
|
||||||
statementImdg.update(stmt);
|
statementImdg.update(stmt);
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("error for sdf08.id={} (statement {}) stacktrace {}",
|
||||||
|
sdf08.getId(),
|
||||||
|
stmt == null ? null : stmt.getId(),
|
||||||
|
ExceptionUtils.getStackTrace(e));
|
||||||
|
try {
|
||||||
|
if (stmt != null && stmt.getId() != null) {
|
||||||
|
log.debug("rejecting statement.id={}", stmt.getId());
|
||||||
|
stmt.setOperationStatus(OperationStatus.Rejected.getKey());
|
||||||
|
statementImdg.update(stmt);
|
||||||
|
}
|
||||||
|
} catch (Exception e2) {
|
||||||
|
log.error("error while rejecting statement.id={} stacktrace {}", stmt.getId(), ExceptionUtils.getStackTrace(e2));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -352,7 +369,7 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
||||||
return rgsF;
|
return rgsF;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Optional<Registry> findRegByUnit(Long companyId, Long accountId, String contract, Registry registry, RegistryUnit unit) {
|
private Optional<Registry> findRegByUnit(Long companyId, Long accountId, Long securityId, String contract, Registry registry, RegistryUnit unit) {
|
||||||
RegistryTradingParams p = new RegistryTradingParams(
|
RegistryTradingParams p = new RegistryTradingParams(
|
||||||
IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()),
|
IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()),
|
||||||
IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()),
|
IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()),
|
||||||
|
|
@ -364,8 +381,8 @@ public class Sdf08Executor extends AbstractExecutor<SDf08> {
|
||||||
ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql),
|
ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql),
|
||||||
pb.sql(sql),
|
pb.sql(sql),
|
||||||
pb.equals("companyId", companyId), //fixme companyId?
|
pb.equals("companyId", companyId), //fixme companyId?
|
||||||
pb.equals("accountId", accountId)
|
pb.equals("accountId", accountId),
|
||||||
|
pb.equals("securityId", securityId)
|
||||||
);
|
);
|
||||||
if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) {
|
if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) {
|
||||||
rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", contract));
|
rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", contract));
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue