Merge remote-tracking branch 'refs/remotes/origin/master_22.285' into dev

# Conflicts:
#	clearing-parent/account-service/pom.xml
#	clearing-parent/backend-api/pom.xml
#	clearing-parent/balance-service/pom.xml
#	clearing-parent/classes/pom.xml
#	clearing-parent/cleaning-builders/pom.xml
#	clearing-parent/clearing-service/pom.xml
#	clearing-parent/clearing-validation/pom.xml
#	clearing-parent/company-service/pom.xml
#	clearing-parent/db-scripts/pom.xml
#	clearing-parent/dbf-exporter/pom.xml
#	clearing-parent/dbf-importer/pom.xml
#	clearing-parent/dictionary/pom.xml
#	clearing-parent/extdb-importer/pom.xml
#	clearing-parent/fix-service/pom.xml
#	clearing-parent/gateway-api/pom.xml
#	clearing-parent/imdg-hist/pom.xml
#	clearing-parent/imdg/pom.xml
#	clearing-parent/lim-exporter/pom.xml
#	clearing-parent/pom.xml
#	clearing-parent/registry-service/pom.xml
#	clearing-parent/reports-service/pom.xml
#	clearing-parent/scheduler-service/pom.xml
#	clearing-parent/securities-service/pom.xml
#	clearing-parent/security-util/pom.xml
#	clearing-parent/swt-exporter/pom.xml
#	clearing-parent/swt-importer/pom.xml
#	clearing-parent/test-clearing/pom.xml
#	clearing-parent/trade-importer/pom.xml
#	clearing-parent/utility-service/pom.xml
#	clearing-parent/xml-exporter/pom.xml
#	clearing-parent/xml-importer/pom.xml
#	platform-parent/pom.xml
#	pom.xml
#	z-distr/pom.xml
This commit is contained in:
etreschenkov 2026-04-07 18:24:03 +03:00
commit b8ddb7e81d
3 changed files with 41 additions and 1 deletions

View file

@ -12,6 +12,7 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import ru.clearing.classes.statics.data.account.Account;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.clearing.classes.statics.data.registry.TradingClearingRegistry;
import ru.clearing.classes.statics.data.security.Security;
@ -24,6 +25,7 @@ import ru.spcex.clearing.platform.messaging.domain.cud.utilities.NotificationNew
import ru.spcex.clearing.platform.messaging.serialization.LogFormatter;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.enumeration.AccountStatus;
import ru.spcex.platform.enumeration.ObjectType;
import ru.spcex.platform.enumeration.Priority;
import ru.spcex.platform.enumeration.Section;
@ -39,7 +41,9 @@ public abstract class AbstractExporterService {
private final Logger log = LoggerFactory.getLogger(getClass());
protected final Imdg<Registry> registryImdg;
private final List<String> validStatus = List.of(ServiceStatus.Active.getKey(), ServiceStatus.Reopened.getKey());
private final List<String> invalidAccountStatus = List.of(AccountStatus.BLOCKED.getKey(), AccountStatus.CLOSE.getKey());
private final Imdg<TradingClearingRegistry> tradingClearingRegistryImdg;
private final Imdg<Account> accountImdg;
private final SecuritySelector<Security> securitySelector;
private final DateTimeFormatter dtFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
private final SFTPConfig.LimGateway gateway;
@ -51,6 +55,7 @@ public abstract class AbstractExporterService {
this.kafkaSender = kafkaSender;
this.registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.tradingClearingRegistryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class);
this.accountImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Account, Account.class);
this.securitySelector = new SecuritySelector<>(imdgProvider, Security.class);
}
@ -144,6 +149,24 @@ public abstract class AbstractExporterService {
safeBD(registry.getBalance()).compareTo(BigDecimal.ZERO) != 0;
}
protected boolean checkNotBlockedMoneyRegistry(Registry registry) {
if (registry.getTradingClearingRegistryId() == null) return false;
TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(registry.getTradingClearingRegistryId());
if (tradingClearingRegistry == null) {
log.warn("For registry.id={} not exist tradingClearingRegistry.id={}", registry.getId(), registry.getTradingClearingRegistryId());
return false;
}
if (!validStatus.contains(tradingClearingRegistry.getStatus())) {
return false;
}
Account account = accountImdg.getSingleObjectByID(registry.getAccountId());
if (registry.getBalance().compareTo(BigDecimal.ZERO) == 0 && invalidAccountStatus.contains(account.getStatus())) {
return false;
}
return true;
}
protected BigDecimal sumNegativeABS(Collection<Registry> registries) {
if (registries == null || registries.isEmpty()) return BigDecimal.ZERO;
BigDecimal result = BigDecimal.ZERO;

View file

@ -80,7 +80,7 @@ public class MoneyExporterService extends AbstractExporterService {
stlmntDtPrdct
);
for (Registry registry : registriesA) {
if (checkNotBlocked(registry)) {
if (checkNotBlockedMoneyRegistry(registry)) {
BigDecimal dmtSumElement = BigDecimal.ZERO;
BigDecimal omtSumElementToday = BigDecimal.ZERO;
BigDecimal tmtSumElementToday = BigDecimal.ZERO;

View file

@ -20,6 +20,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
import ru.spcex.clearing.reports.builders.EmptyParams;
import ru.spcex.clearing.reports.builders.bean.KSRepCashRegistersReport;
import ru.spcex.platform.enumeration.AccountStatus;
import ru.spcex.platform.enumeration.AccountType;
import ru.spcex.platform.enumeration.ClearingCategory;
import ru.spcex.platform.enumeration.RegistryStatus;
@ -110,6 +111,22 @@ public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParam
}
if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) continue;
if (registry.getAccountId() != null && registry.getBalance().compareTo(BigDecimal.ZERO) == 0) {
Account account = accountImdg.getSingleObjectByID(registry.getAccountId());
if (account != null) {
AccountStatus accountStatus = IEnumKey.getEnumByKey(AccountStatus.class, account.getStatus());
if (accountStatus == AccountStatus.BLOCKED || accountStatus == AccountStatus.CLOSE) {
log.debug(
"For registry id = {} balance = 0 and account with id = {} status = {}",
registry.getId(),
account.getId(),
accountStatus
);
continue;
}
}
}
String account = null;
AccountType accountType = IEnumKey.getEnumByKey(AccountType.class, registry.getAccountType());
if (accountType == AccountType.Clrn) {