This commit is contained in:
parent
1e713c1292
commit
98335c8b2e
8 changed files with 38 additions and 24 deletions
|
|
@ -9,8 +9,10 @@ import com.opencsv.exceptions.CsvFieldAssignmentException;
|
|||
import com.opencsv.exceptions.CsvRequiredFieldEmptyException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||
import ru.spcex.platform.enumeration.ReportKeys;
|
||||
import ru.spcex.platform.imdg.api.Imdg;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
|
|
@ -19,10 +21,11 @@ import java.io.Writer;
|
|||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Класс для построения отчетов в формате CSV
|
||||
|
|
@ -139,6 +142,16 @@ public abstract class CSVReportBuilder<P, R> {
|
|||
return filename;
|
||||
}
|
||||
|
||||
protected List<Long> getSessionIdsForCurrentDate(Imdg<Session> sessionImdg) {
|
||||
Collection<Session> sessionForCurrentDay = sessionImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"clearingDate", LocalDate.now()
|
||||
)
|
||||
);
|
||||
Set<Long> sessionIds = sessionForCurrentDay.stream().map(Session::getId).collect(Collectors.toSet());
|
||||
return sessionIds.stream().toList();
|
||||
}
|
||||
|
||||
static class CustomStrategy<T> extends ColumnPositionMappingStrategy<T> {
|
||||
@Override
|
||||
public String[] generateHeader(T bean) throws CsvRequiredFieldEmptyException {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package ru.spcex.clearing.reports.reports.bp;
|
|||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.reports.bean.ExecutedDealReport;
|
||||
|
|
@ -21,6 +22,7 @@ import java.util.Map;
|
|||
public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilder<P, ExecutedDealReport> {
|
||||
protected final DateTimeFormatter fileNameDateTimeFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
||||
protected final Imdg<ExecutionFond> executionFondImdg;
|
||||
protected final Imdg<Session> sessionImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<STrades> sTradesImdg;
|
||||
|
||||
|
|
@ -32,6 +34,7 @@ public abstract class ExecutedDealReportBuilderCommon<P> extends CSVReportBuilde
|
|||
|
||||
public ExecutedDealReportBuilderCommon(ImdgProvider imdgProvider) {
|
||||
this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
this.sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
|
@ -30,9 +31,11 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild
|
|||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
List<Long> sessionIds = params.getSessionId();
|
||||
if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg);
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||
pb.in("sessionId", sessionIds.toArray(new Long[0])),
|
||||
pb.less("tradingDate", LocalDate.now()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
|
|||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@Component
|
||||
public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||
|
|
@ -30,9 +31,11 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild
|
|||
@Override
|
||||
protected Collection<ExecutionFond> getExecutionFondsForReport(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
List<Long> sessionIds = params.getSessionId();
|
||||
if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg);
|
||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||
pb.and(
|
||||
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||
pb.in("sessionId",sessionIds.toArray(new Long[0])),
|
||||
pb.equals("tradingDate", LocalDate.now()),
|
||||
pb.equals("settlementDate", LocalDate.now())
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import org.springframework.stereotype.Component;
|
|||
import ru.clearing.classes.statics.data.company.Company;
|
||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||
import ru.clearing.classes.statics.data.misc.STrades;
|
||||
import ru.clearing.classes.statics.data.misc.Session;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.reports.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||
|
|
@ -27,11 +28,13 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
|||
private final Imdg<ExecutionFond> executionFondImdg;
|
||||
private final Imdg<Company> companyImdg;
|
||||
private final Imdg<STrades> sTradesImdg;
|
||||
private final Imdg<Session> sessionImdg;
|
||||
|
||||
public UnfulfilledDealReportBuilder(ImdgProvider imdgProvider) {
|
||||
executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
|
||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||
sTradesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_STrades, STrades.class);
|
||||
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
}
|
||||
|
||||
private List<UnfulfilledDealReport> rows = null;
|
||||
|
|
@ -64,8 +67,10 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
|||
@Override
|
||||
protected void collect(SessionIdParam params) {
|
||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||
List<Long> sessionIds = params.getSessionId();
|
||||
if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg);
|
||||
ImdgPredicate predicate = pb.and(
|
||||
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||
pb.in("sessionId", sessionIds.toArray(new Long[0])),
|
||||
pb.equals("coverageStatus", Allowed.DENIED.getKey())
|
||||
);
|
||||
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);
|
||||
|
|
|
|||
|
|
@ -63,8 +63,10 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TM_T, RegistryTradingParams.OM_T).build();
|
||||
List<Long> sessionIds = params.getSessionId();
|
||||
if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg);
|
||||
ImdgPredicate finalPredicate = pb.and(
|
||||
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||
pb.in("sessionId", sessionIds.toArray(new Long[0])),
|
||||
pb.equals("clearingDate", nowDate),
|
||||
pb.sql(sql),
|
||||
pb.or(
|
||||
|
|
|
|||
|
|
@ -62,9 +62,11 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
|||
LocalDate nowDate = LocalDate.now();
|
||||
|
||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||
List<Long> sessionIds = params.getSessionId();
|
||||
if (sessionIds == null || sessionIds.isEmpty()) sessionIds = getSessionIdsForCurrentDate(sessionImdg);
|
||||
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TS_T, RegistryTradingParams.OS_T).build();
|
||||
ImdgPredicate finalPredicate = pb.and(
|
||||
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||
pb.in("sessionId", sessionIds.toArray(new Long[0])),
|
||||
pb.equals("clearingDate", nowDate),
|
||||
pb.sql(sql),
|
||||
pb.equals("accountType", AccountType.Depo.getKey()),
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
|
|||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.io.File;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -239,8 +238,6 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
List<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
} else {
|
||||
sessionIds = getSessionIdsForDate(LocalDate.now());
|
||||
}
|
||||
Map<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGREP.values());
|
||||
|
||||
|
|
@ -261,8 +258,6 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
List<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
} else {
|
||||
sessionIds = getSessionIdsForDate(LocalDate.now());
|
||||
}
|
||||
Map<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGRET.values());
|
||||
|
||||
|
|
@ -301,8 +296,6 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
List<Long> sessionIds = null;
|
||||
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||
} else {
|
||||
sessionIds = getSessionIdsForDate(LocalDate.now());
|
||||
}
|
||||
Map<File, ReportInfo> outFiles = createReportsForTask(sessionIds, reportBuildersForGREF.values());
|
||||
|
||||
|
|
@ -380,16 +373,6 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
}
|
||||
}
|
||||
|
||||
private List<Long> getSessionIdsForDate(LocalDate date) {
|
||||
Collection<Session> sessionForCurrentDay = sessionImdg.getCollectionObjectsByFieldValues(
|
||||
Map.of(
|
||||
"clearingDate", date
|
||||
)
|
||||
);
|
||||
Set<Long> sessionIds = sessionForCurrentDay.stream().map(Session::getId).collect(Collectors.toSet());
|
||||
return sessionIds.stream().toList();
|
||||
}
|
||||
|
||||
private void sendFilesToSftp(Collection<File> files) {
|
||||
for (File file : files) {
|
||||
reportsSftpGateway.sendToSftp(file);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue