This commit is contained in:
parent
5b6eb04345
commit
15974ff939
1 changed files with 32 additions and 2 deletions
|
|
@ -1,5 +1,6 @@
|
|||
package ru.spcex.clearing.account.service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
|
@ -26,6 +27,7 @@ import ru.clearing.classes.statics.data.company.Company;
|
|||
import ru.clearing.classes.statics.data.company.relation.Relation;
|
||||
import ru.clearing.classes.statics.data.misc.Currency;
|
||||
import ru.clearing.classes.statics.data.misc.Notification;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
|
||||
import ru.clearing.classes.statics.data.sdf.SDf52;
|
||||
import ru.clearing.platform.dictionary.ClearingAccountTypeDictionary;
|
||||
|
|
@ -90,6 +92,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
|
|||
private final Imdg<Currency> currImdg;
|
||||
private final Imdg<ClearingAccount> clearingAccountImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<Registry> rgsImdg;
|
||||
private final Imdg<Relation> relationImdg;
|
||||
private final Imdg<ClearingMemberCategory> clearingMemberCategoryImdg;
|
||||
private final Imdg<ClearingCategoryDictionary> clearingCategoryImdg;
|
||||
|
|
@ -110,7 +113,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
|
|||
@Qualifier("clearingAccountNewRequestValidator")
|
||||
Function<ClearingAccountNewRequest, IValidator> clearingAccountNewRequestValidator,
|
||||
@Qualifier("clearingAccountUpdateRequestValidator")
|
||||
Function<ClearingAccountUpdateRequest, IValidator> clearingAccountUpdateRequestValidator) {
|
||||
Function<ClearingAccountUpdateRequest, IValidator> clearingAccountUpdateRequestValidator, Imdg<Registry> rgsImdg) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.kafkaSender = kafkaSender;
|
||||
this.accountService = accountService;
|
||||
|
|
@ -132,6 +135,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
|
|||
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
|
||||
this.notificationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Notification, Notification.class);
|
||||
this.clearingAccountTypeDictionaryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingAccountTypeDictionary, ClearingAccountTypeDictionary.class);
|
||||
this.rgsImdg = rgsImdg;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -563,7 +567,16 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
|
|||
log.trace("In sDF_52[{}] for account [{}] status {} not changed.", sdf.getId(), account.getId(), newStatus);
|
||||
continue;
|
||||
}
|
||||
if (AccountStatus.BLOCKED == newStatus || AccountStatus.CLOSE == newStatus) { // статус 0/2
|
||||
Registry rgs = rgsImdg.getSingleObjectByPredicate(
|
||||
rgsImdg.predicateBuilder().equals("account", account.getAccount())
|
||||
);
|
||||
boolean rgsBalanceNotZero = rgs == null || rgs.getBalance().compareTo(BigDecimal.ZERO) != 0;
|
||||
boolean wasBlocked = AccountStatus.BLOCKED == newStatus || AccountStatus.CLOSE == newStatus;
|
||||
if (rgsBalanceNotZero && wasBlocked) {
|
||||
sendNotificationNonZeroBalanceClosed(ObjectType.account_block, account, newStatus);
|
||||
notificationAccountIds.add(account.getId());
|
||||
putNotificationWaiting(systemRequest, item.getFirst(), item.getSecond());
|
||||
} else if (wasBlocked) { // статус 0/2
|
||||
sendNotificationRequest(ObjectType.account_block, account, newStatus);
|
||||
notificationAccountIds.add(account.getId());
|
||||
putNotificationWaiting(systemRequest, item.getFirst(), item.getSecond());
|
||||
|
|
@ -700,6 +713,23 @@ public class ClearingAccountService extends QueueConsumer implements Initializin
|
|||
return rKey;
|
||||
}
|
||||
|
||||
public Long sendNotificationNonZeroBalanceClosed(ObjectType objectType, Account account, AccountStatus status) {
|
||||
String statusText = AccountStatus.BLOCKED == status ? "заблокировать"
|
||||
: AccountStatus.CLOSE == status ? "закрыть" :
|
||||
status.getKey();
|
||||
String message = String.format("Попытка %s ненулевой счет %s", statusText, account.getAccount());
|
||||
final String destination = Consts.NOTIFICATION_NEW;
|
||||
NotificationNewRequest request = new NotificationNewRequest();
|
||||
request.setObjectType(objectType.getKey());
|
||||
request.setObjectId(account.getId());
|
||||
request.setPriority(Priority.HIGH.getKey());
|
||||
request.setComment(message);
|
||||
log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request));
|
||||
Long rKey = kafkaSender.sendRequestToQueue(destination, request);
|
||||
log.trace("About account.id={} send notification request id={}", account.getId(), rKey);
|
||||
return rKey;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Формирование уведомления о добавлении счёта
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue