This commit is contained in:
AKurakin 2023-10-09 15:23:35 +03:00
parent aa1e5f7ac1
commit 38dab80e99

View file

@ -15,10 +15,12 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors;
import static ru.spcex.platform.enumeration.RegistryTradingParams.*; import static ru.spcex.platform.enumeration.RegistryTradingParams.*;
@ -50,9 +52,11 @@ public class MoneyExporterService extends AbstractExporterService {
log.debug("Selected {} registriesA.", registriesA.size()); log.debug("Selected {} registriesA.", registriesA.size());
ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
LocalDate today = LocalDate.now();
Function<Registry, ImdgPredicate> prdctDM_T = registry -> pb.and( Function<Registry, ImdgPredicate> prdctDM_T = registry -> pb.and(
pb.sql(RegistryCodeSqlBuilder.getInstance(DM_T).build()), pb.sql(RegistryCodeSqlBuilder.getInstance(DM_T).build()),
pb.equals("registryStatus", RegistryStatus.PROC.getKey()), pb.equals("registryStatus", RegistryStatus.PROC.getKey()),
pb.equals("settlementDate", today),
pb.equals("tradingClearingRegistry", registry.getTradingClearingRegistry()), pb.equals("tradingClearingRegistry", registry.getTradingClearingRegistry()),
pb.equals("securityId", registry.getSecurityId()) pb.equals("securityId", registry.getSecurityId())
); );
@ -66,8 +70,12 @@ public class MoneyExporterService extends AbstractExporterService {
if (checkNotBlocked(registry)) { if (checkNotBlocked(registry)) {
BigDecimal sumPositive = BigDecimal.ZERO; BigDecimal sumPositive = BigDecimal.ZERO;
if (registry.getTradingClearingRegistry() != null && registry.getSecurityId() != null) { if (registry.getTradingClearingRegistry() != null && registry.getSecurityId() != null) {
sumPositive = sumNegativeABS(registryImdg.getCollectionObjectsByPredicate(prdctDM_I.apply(registry))); Collection<Registry> regsDMI = registryImdg.getCollectionObjectsByPredicate(prdctDM_I.apply(registry));
sumPositive = sumPositive.add(sum(registryImdg.getCollectionObjectsByPredicate(prdctDM_T.apply(registry)))); log.trace("Found {} DM_I registries for registry AM_F {}", regsDMI.size(), registry);
Collection<Registry> regsDMT = filterByDate(registryImdg.getCollectionObjectsByPredicate(prdctDM_T.apply(registry)));
log.trace("Found {} DM_T registries for registry AM_F {}", regsDMT.size(), registry);
sumPositive = sumNegativeABS(regsDMI);
sumPositive = sumPositive.add(sum(regsDMT));
} }
limFileRows.add(getRow(registry, sumPositive)); limFileRows.add(getRow(registry, sumPositive));
} }
@ -76,6 +84,12 @@ public class MoneyExporterService extends AbstractExporterService {
return limFileRows; return limFileRows;
} }
List<Registry> filterByDate(Collection<Registry> regs) {
return regs.stream()
.filter((Registry reg) -> reg.getSettlementDate().equals(reg.getClearingDate()))
.collect(Collectors.toList());
}
public String getRow(Registry registryA, BigDecimal sumPositive) { public String getRow(Registry registryA, BigDecimal sumPositive) {
StringBuilder row = new StringBuilder(); StringBuilder row = new StringBuilder();