обработка SDF01 отправка Notification по результатам сверки
This commit is contained in:
parent
9ace5c276d
commit
91f1c9a5df
2 changed files with 17 additions and 3 deletions
|
|
@ -21,6 +21,7 @@ import ru.spcex.clearing.platform.messaging.domain.Consts;
|
|||
import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.ExportToFileRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest;
|
||||
import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNewRequest;
|
||||
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
|
||||
import ru.spcex.clearing.service.LoggingService;
|
||||
import ru.spcex.clearing.service.model.Result;
|
||||
|
|
@ -49,6 +50,8 @@ import java.util.function.Function;
|
|||
@Service
|
||||
public class Sdf01Executor extends AbstractExecutor<SDf01> {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private static final String reviseFailedMessage = "Сверка остатков денежных средств по результатам клиринговой сессии завершена с ошибками.";
|
||||
private static final String reviseSuccessMessage = "Сверка остатков денежных средств по результатам клиринговой сессии завершена успешно.";
|
||||
|
||||
private final Imdg<Statement> statementImdg;
|
||||
private final Imdg<Registry> registryImdg;
|
||||
|
|
@ -60,11 +63,12 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
|
|||
private final Imdg<Currency> currencyImdg;
|
||||
private final Imdg<SDf02> sdf02Imdg;
|
||||
private final IMessageResolver messageResolver;
|
||||
private final KafkaSender kafkaSender;
|
||||
|
||||
public Sdf01Executor(@Qualifier("sdf01ValidatorNew") Function<SDf01, IValidator> sDf01Validator,
|
||||
LoggingService errorLogger,
|
||||
ImdgProvider imdgProvider,
|
||||
IMessageResolver errorResolver, IMessageResolver messageResolver) {
|
||||
IMessageResolver errorResolver, IMessageResolver messageResolver, KafkaSender kafkaSender) {
|
||||
this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class);
|
||||
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
this.clearingAccountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class);
|
||||
|
|
@ -75,6 +79,7 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
|
|||
this.messageResolver = messageResolver;
|
||||
this.securityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class);
|
||||
this.sdf02Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf02, SDf02.class);
|
||||
this.kafkaSender = kafkaSender;
|
||||
}
|
||||
|
||||
//todo доделать контроль sdf01 и sdf57
|
||||
|
|
@ -101,6 +106,7 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
|
|||
Result result = new Result();
|
||||
Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId();
|
||||
result.setGenerationId(generationIdForGroup);
|
||||
boolean reviseFailed = false;
|
||||
for (SDf01 sdf01 : sdf) {
|
||||
IValidator validator = sDf01Validator.apply(sdf01);
|
||||
Optional<EnumMessage> error = validator.tillFirstError();
|
||||
|
|
@ -148,6 +154,9 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
|
|||
registryImdg.insert(rgs);
|
||||
}
|
||||
//todo
|
||||
if (!BigDecimal.ZERO.equals(rgs.getDiffBalance())) {
|
||||
reviseFailed = true;
|
||||
}
|
||||
//2. отправить notification на backend
|
||||
stmt.setOperationStatus(OperationStatus.Executed.getKey());
|
||||
statementImdg.update(stmt);
|
||||
|
|
@ -157,6 +166,11 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
|
|||
statementImdg.update(stmt);
|
||||
}
|
||||
}
|
||||
NotificationNewRequest reviseNotification = new NotificationNewRequest();
|
||||
reviseNotification.setObjectType(ObjectType.rgst.getKey());
|
||||
reviseNotification.setComment(reviseFailed ? reviseFailedMessage : reviseSuccessMessage);
|
||||
reviseNotification.setPriority(Priority.HIGH.getKey());
|
||||
kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, reviseNotification);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -286,7 +300,7 @@ public class Sdf01Executor extends AbstractExecutor<SDf01> {
|
|||
}
|
||||
}
|
||||
rgs.setCheckBalance(BigDecimalUtil.safeBD(statement.getAmount()));
|
||||
rgs.setDiffBalance(rgs.getCheckBalance().negate());
|
||||
rgs.setDiffBalance(BigDecimalUtil.safeBD(rgs.getCheckBalance()).negate());
|
||||
rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme ! смотри описание и ссылка на начало html'ки
|
||||
//fixme !rgs.setSettlementCode();
|
||||
rgs.setTradingDate(statement.getSettlementDate()); //fixme ! today ?
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration;
|
|||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
|
||||
public enum ObjectType implements IEnumKey {
|
||||
statement("STMT");
|
||||
statement("STMT"), rgst("RGST");
|
||||
|
||||
private final String key;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue