akulikov 2023-09-01 12:04:06 +03:00
parent 76ba3463cf
commit 3ec26e9d91
2 changed files with 73 additions and 27 deletions

View file

@ -17,7 +17,10 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
@ -83,8 +86,8 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
PairRegistryId pairRegistryId = entry.getKey(); PairRegistryId pairRegistryId = entry.getKey();
List<Registry> groupedRegistry = entry.getValue(); List<Registry> groupedRegistry = entry.getValue();
try { try {
if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) { if (groupedRegistry.isEmpty()) {
log.warn("Invalid OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped", log.warn("Empty OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped",
pairRegistryId.getAccount(), pairRegistryId.getAccount(),
pairRegistryId.getSessionId(), pairRegistryId.getSessionId(),
groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", ")) groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", "))
@ -92,18 +95,33 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
continue; continue;
} }
Registry tmtRegistry = null; List<Registry> tmtRegistries = new ArrayList<>();
Registry omtRegistry = null; List<Registry> omtRegistries = new ArrayList<>();
Registry registry = null; Registry registry = null;
for (Registry currRegistry : groupedRegistry) { for (Registry currRegistry : groupedRegistry) {
registry = currRegistry; registry = currRegistry;
if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) omtRegistry = currRegistry; if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation()))
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) tmtRegistry = currRegistry; omtRegistries.add(currRegistry);
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation()))
tmtRegistries.add(currRegistry);
} }
if (tmtRegistry != null && omtRegistry != null && !Objects.equals(tmtRegistry.getTradingCode(), omtRegistry.getTradingCode())) { boolean invalid = false;
log.warn("Invalid TM_T and OM_T registry pair, tradingCode not equals. Registry pair was skipped"); if (!tmtRegistries.isEmpty() || !omtRegistries.isEmpty()) {
continue; String sourceTradingCode = tmtRegistries.iterator().next().getTradingCode();
for (Registry currRegistry : tmtRegistries) {
if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue;
invalid = true;
log.warn("Invalid TM_T registries set, tradingCode not equals. Registries was skipped");
break;
}
for (Registry currRegistry : omtRegistries) {
if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue;
invalid = true;
log.warn("Invalid OM_T registries set, tradingCode not equals. Registries was skipped");
break;
}
if (invalid) continue;
} }
Session session = sessionImdg.getSingleObjectByID(registry.getSessionId()); Session session = sessionImdg.getSingleObjectByID(registry.getSessionId());
@ -115,8 +133,14 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
ksRepCashNettoReport.setAccount(registry.getAccount()); ksRepCashNettoReport.setAccount(registry.getAccount());
ksRepCashNettoReport.setDate(nowDate); ksRepCashNettoReport.setDate(nowDate);
BigDecimal tmtBalance = tmtRegistry != null && tmtRegistry.getBalance() != null ? tmtRegistry.getBalance() : BigDecimal.ZERO; BigDecimal tmtBalance = BigDecimal.ZERO;
BigDecimal omtBalance = omtRegistry != null && omtRegistry.getBalance() != null ? omtRegistry.getBalance() : BigDecimal.ZERO; BigDecimal omtBalance = BigDecimal.ZERO;
for (Registry tmtRegistry : tmtRegistries) {
if (tmtRegistry.getBalance() != null) tmtBalance = tmtBalance.add(tmtRegistry.getBalance());
}
for (Registry omtRegistry : omtRegistries) {
if (omtRegistry.getBalance() != null) omtBalance = omtBalance.add(omtRegistry.getBalance());
}
ksRepCashNettoReport.setValue(tmtBalance.subtract(omtBalance)); ksRepCashNettoReport.setValue(tmtBalance.subtract(omtBalance));
rows.add(ksRepCashNettoReport); rows.add(ksRepCashNettoReport);

View file

@ -17,7 +17,10 @@ import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
@ -80,8 +83,8 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
PairRegistryId pairRegistryId = entry.getKey(); PairRegistryId pairRegistryId = entry.getKey();
List<Registry> groupedRegistry = entry.getValue(); List<Registry> groupedRegistry = entry.getValue();
try { try {
if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) { if (groupedRegistry.isEmpty()) {
log.warn("Invalid OS_T and TS_T registries for account = {} and sessionId = {}. Registries with id = [{}] was skipped", log.warn("Empty OS_T and TS_T registries for account = {} and sessionId = {}. Registries with id = [{}] was skipped",
pairRegistryId.getAccount(), pairRegistryId.getAccount(),
pairRegistryId.getSessionId(), pairRegistryId.getSessionId(),
groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", ")) groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", "))
@ -89,20 +92,33 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
continue; continue;
} }
Registry tstRegistry = null; List<Registry> tstRegistries = new ArrayList<>();
Registry ostRegistry = null; List<Registry> ostRegistries = new ArrayList<>();
Registry registry = null; Registry registry = null;
for (Registry currRegistry : groupedRegistry) { for (Registry currRegistry : groupedRegistry) {
registry = currRegistry; registry = currRegistry;
if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) ostRegistry = currRegistry; if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation()))
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) tstRegistry = currRegistry; ostRegistries.add(currRegistry);
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation()))
tstRegistries.add(currRegistry);
} }
if ((tstRegistry != null && ostRegistry != null) && boolean invalid = false;
(!Objects.equals(tstRegistry.getTradingCode(), ostRegistry.getTradingCode()) || if (!tstRegistries.isEmpty() || !ostRegistries.isEmpty()) {
!Objects.equals(tstRegistry.getSecuritySymbol(), ostRegistry.getSecuritySymbol()))) { String sourceTradingCode = tstRegistries.iterator().next().getTradingCode();
log.warn("Invalid TS_T and OS_T registry pair, account/tradingCode/securityId not equals. Registry pair was skipped"); for (Registry currRegistry : tstRegistries) {
continue; if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue;
invalid = true;
log.warn("Invalid TS_T registries set, tradingCode not equals. Registries was skipped");
break;
}
for (Registry currRegistry : ostRegistries) {
if (sourceTradingCode.equals(currRegistry.getTradingCode())) continue;
invalid = true;
log.warn("Invalid OS_T registries set, tradingCode not equals. Registries was skipped");
break;
}
if (invalid) continue;
} }
KSRepDepoNettoReport ksRepDepoNettoReport = new KSRepDepoNettoReport(); KSRepDepoNettoReport ksRepDepoNettoReport = new KSRepDepoNettoReport();
@ -115,9 +131,15 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
Session session = sessionImdg.getSingleObjectByID(registry.getSessionId()); Session session = sessionImdg.getSingleObjectByID(registry.getSessionId());
if (session != null) ksRepDepoNettoReport.setSessionDate(session.getCreated()); if (session != null) ksRepDepoNettoReport.setSessionDate(session.getCreated());
BigDecimal tmtBalance = tstRegistry != null && tstRegistry.getBalance() != null ? tstRegistry.getBalance() : BigDecimal.ZERO; BigDecimal tstBalance = BigDecimal.ZERO;
BigDecimal omtBalance = ostRegistry != null && ostRegistry.getBalance() != null ? ostRegistry.getBalance() : BigDecimal.ZERO; BigDecimal ostBalance = BigDecimal.ZERO;
ksRepDepoNettoReport.setValue(tmtBalance.subtract(omtBalance)); for (Registry tstRegistry : tstRegistries) {
if (tstRegistry.getBalance() != null) tstBalance = tstBalance.add(tstRegistry.getBalance());
}
for (Registry ostRegistry : ostRegistries) {
if (ostRegistry.getBalance() != null) ostBalance = ostBalance.add(ostRegistry.getBalance());
}
ksRepDepoNettoReport.setValue(tstBalance.subtract(ostBalance));
rows.add(ksRepDepoNettoReport); rows.add(ksRepDepoNettoReport);
} catch (Throwable e) { } catch (Throwable e) {