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.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;
@Component
@ -83,8 +86,8 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
PairRegistryId pairRegistryId = entry.getKey();
List<Registry> groupedRegistry = entry.getValue();
try {
if (groupedRegistry.size() > 2 || groupedRegistry.isEmpty()) {
log.warn("Invalid OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped",
if (groupedRegistry.isEmpty()) {
log.warn("Empty OM_T and TM_T registries for account = {} and session_id = {}. Registries with id = [{}] was skipped",
pairRegistryId.getAccount(),
pairRegistryId.getSessionId(),
groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", "))
@ -92,18 +95,33 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
continue;
}
Registry tmtRegistry = null;
Registry omtRegistry = null;
List<Registry> tmtRegistries = new ArrayList<>();
List<Registry> omtRegistries = new ArrayList<>();
Registry registry = null;
for (Registry currRegistry : groupedRegistry) {
registry = currRegistry;
if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation())) omtRegistry = currRegistry;
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation())) tmtRegistry = currRegistry;
if (RegistryDesignation.O.equalsByKey(currRegistry.getRegistryDesignation()))
omtRegistries.add(currRegistry);
if (RegistryDesignation.T.equalsByKey(currRegistry.getRegistryDesignation()))
tmtRegistries.add(currRegistry);
}
if (tmtRegistry != null && omtRegistry != null && !Objects.equals(tmtRegistry.getTradingCode(), omtRegistry.getTradingCode())) {
log.warn("Invalid TM_T and OM_T registry pair, tradingCode not equals. Registry pair was skipped");
continue;
boolean invalid = false;
if (!tmtRegistries.isEmpty() || !omtRegistries.isEmpty()) {
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());
@ -115,8 +133,14 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
ksRepCashNettoReport.setAccount(registry.getAccount());
ksRepCashNettoReport.setDate(nowDate);
BigDecimal tmtBalance = tmtRegistry != null && tmtRegistry.getBalance() != null ? tmtRegistry.getBalance() : BigDecimal.ZERO;
BigDecimal omtBalance = omtRegistry != null && omtRegistry.getBalance() != null ? omtRegistry.getBalance() : BigDecimal.ZERO;
BigDecimal tmtBalance = 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));
rows.add(ksRepCashNettoReport);

View file

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