Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
56a89b7e6d
25 changed files with 345 additions and 115 deletions
|
|
@ -24,7 +24,8 @@ public class ReportBuildersConfig {
|
||||||
KSRepDepoRegistersReportBuilder ksRepDepoRegistersReportBuilder,
|
KSRepDepoRegistersReportBuilder ksRepDepoRegistersReportBuilder,
|
||||||
KSRepDepoRegisterQuantitiesReportBuilder ksRepDepoRegisterQuantitiesReportBuilder,
|
KSRepDepoRegisterQuantitiesReportBuilder ksRepDepoRegisterQuantitiesReportBuilder,
|
||||||
KSRepTradesReportBuilder ksRepTradesReportBuilder,
|
KSRepTradesReportBuilder ksRepTradesReportBuilder,
|
||||||
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder
|
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
|
||||||
|
KSSessionListReportBuilder ksSessionListReportBuilder
|
||||||
) {
|
) {
|
||||||
Map<ReportBuilderType, List<CSVReportBuilder<EmptyParams, ?>>> resultMap = new HashMap<>();
|
Map<ReportBuilderType, List<CSVReportBuilder<EmptyParams, ?>>> resultMap = new HashMap<>();
|
||||||
resultMap.put(ReportBuilderType.KS_REP_CASH_REGISTERS, List.of(ksRepCashRegistersReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_CASH_REGISTERS, List.of(ksRepCashRegistersReportBuilder));
|
||||||
|
|
@ -33,6 +34,7 @@ public class ReportBuildersConfig {
|
||||||
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTER_QUANTITIES, List.of(ksRepDepoRegisterQuantitiesReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_DEPO_REGISTER_QUANTITIES, List.of(ksRepDepoRegisterQuantitiesReportBuilder));
|
||||||
resultMap.put(ReportBuilderType.KS_REP_TRADES, List.of(ksRepTradesReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_TRADES, List.of(ksRepTradesReportBuilder));
|
||||||
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
|
||||||
|
resultMap.put(ReportBuilderType.KS_SESSION_LIST, List.of(ksSessionListReportBuilder));
|
||||||
return resultMap;
|
return resultMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,7 +72,8 @@ public class ReportBuildersConfig {
|
||||||
KSRepTradesReportBuilder ksRepTradesReportBuilder,
|
KSRepTradesReportBuilder ksRepTradesReportBuilder,
|
||||||
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
|
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
|
||||||
KSRepCashNettoReportBuilder ksRepCashNettoReportBuilder,
|
KSRepCashNettoReportBuilder ksRepCashNettoReportBuilder,
|
||||||
KSRepDepoNettoReportBuilder ksRepDepoNettoReportBuilder
|
KSRepDepoNettoReportBuilder ksRepDepoNettoReportBuilder,
|
||||||
|
KSSessionListReportBuilder ksSessionListReportBuilder
|
||||||
) {
|
) {
|
||||||
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> resultMap = new HashMap<>();
|
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> resultMap = new HashMap<>();
|
||||||
resultMap.put(ReportBuilderType.KS_REP_CASH_REGISTERS, List.of(ksRepCashRegistersReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_CASH_REGISTERS, List.of(ksRepCashRegistersReportBuilder));
|
||||||
|
|
@ -81,6 +84,7 @@ public class ReportBuildersConfig {
|
||||||
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
|
||||||
resultMap.put(ReportBuilderType.KS_REP_CASH_NETTO, List.of(ksRepCashNettoReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_CASH_NETTO, List.of(ksRepCashNettoReportBuilder));
|
||||||
resultMap.put(ReportBuilderType.KS_REP_DEPO_NETTO, List.of(ksRepDepoNettoReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_DEPO_NETTO, List.of(ksRepDepoNettoReportBuilder));
|
||||||
|
resultMap.put(ReportBuilderType.KS_SESSION_LIST, List.of(ksSessionListReportBuilder));
|
||||||
return resultMap;
|
return resultMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -93,7 +97,8 @@ public class ReportBuildersConfig {
|
||||||
KSRepTradesReportBuilder ksRepTradesReportBuilder,
|
KSRepTradesReportBuilder ksRepTradesReportBuilder,
|
||||||
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
|
KSRepFirmDetailsReportBuilder ksRepFirmDetailsReportBuilder,
|
||||||
KSRepCashNettoReportBuilder ksRepCashNettoReportBuilder,
|
KSRepCashNettoReportBuilder ksRepCashNettoReportBuilder,
|
||||||
KSRepDepoNettoReportBuilder ksRepDepoNettoReportBuilder
|
KSRepDepoNettoReportBuilder ksRepDepoNettoReportBuilder,
|
||||||
|
KSSessionListReportBuilder ksSessionListReportBuilder
|
||||||
) {
|
) {
|
||||||
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> resultMap = new HashMap<>();
|
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> resultMap = new HashMap<>();
|
||||||
resultMap.put(ReportBuilderType.KS_REP_CASH_REGISTERS, List.of(ksRepCashRegistersReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_CASH_REGISTERS, List.of(ksRepCashRegistersReportBuilder));
|
||||||
|
|
@ -104,6 +109,7 @@ public class ReportBuildersConfig {
|
||||||
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_FIRM_DETAILS, List.of(ksRepFirmDetailsReportBuilder));
|
||||||
resultMap.put(ReportBuilderType.KS_REP_CASH_NETTO, List.of(ksRepCashNettoReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_CASH_NETTO, List.of(ksRepCashNettoReportBuilder));
|
||||||
resultMap.put(ReportBuilderType.KS_REP_DEPO_NETTO, List.of(ksRepDepoNettoReportBuilder));
|
resultMap.put(ReportBuilderType.KS_REP_DEPO_NETTO, List.of(ksRepDepoNettoReportBuilder));
|
||||||
|
resultMap.put(ReportBuilderType.KS_SESSION_LIST, List.of(ksSessionListReportBuilder));
|
||||||
return resultMap;
|
return resultMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,8 @@ public class ValidationConfig {
|
||||||
ReportBuilderType.KS_REP_DEPO_REGISTERS,
|
ReportBuilderType.KS_REP_DEPO_REGISTERS,
|
||||||
ReportBuilderType.KS_REP_DEPO_REGISTER_QUANTITIES,
|
ReportBuilderType.KS_REP_DEPO_REGISTER_QUANTITIES,
|
||||||
ReportBuilderType.KS_REP_TRADES,
|
ReportBuilderType.KS_REP_TRADES,
|
||||||
ReportBuilderType.KS_REP_FIRM_DETAILS
|
ReportBuilderType.KS_REP_FIRM_DETAILS,
|
||||||
|
ReportBuilderType.KS_SESSION_LIST
|
||||||
},
|
},
|
||||||
ReportError.WrongFieldValue,
|
ReportError.WrongFieldValue,
|
||||||
ReportError.RequiredFieldEmpty)
|
ReportError.RequiredFieldEmpty)
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public abstract class CSVReportBuilder<P, R> {
|
||||||
protected static final Logger log = LoggerFactory.getLogger(CSVReportBuilder.class);
|
protected static final Logger log = LoggerFactory.getLogger(CSVReportBuilder.class);
|
||||||
protected DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss");
|
protected DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss");
|
||||||
protected DateTimeFormatter dateTimeFormatter_YYMMDDHHmmssSSS = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
protected DateTimeFormatter dateTimeFormatter_YYMMDDHHmmssSSS = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");
|
||||||
protected DateTimeFormatter dateFormatter_yyMMdd = DateTimeFormatter.ofPattern("yyMMdd");
|
protected DateTimeFormatter dateFormatter_yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Возвращает списком значения CSV отчета. Каждый элемент списка - строка, элемент массива внутри списка - столбец.
|
* Возвращает списком значения CSV отчета. Каждый элемент списка - строка, элемент массива внутри списка - столбец.
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,18 @@
|
||||||
package ru.spcex.clearing.reports.reports;
|
package ru.spcex.clearing.reports.reports;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Параметры для формирования отчета по SessionId
|
* Параметры для формирования отчета по SessionId
|
||||||
*/
|
*/
|
||||||
public class SessionIdParam {
|
public class SessionIdParam {
|
||||||
private Long sessionId;
|
private List<Long> sessionId;
|
||||||
|
|
||||||
public Long getSessionId() {
|
public List<Long> getSessionId() {
|
||||||
return sessionId;
|
return sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSessionId(Long sessionId) {
|
public void setSessionId(List<Long> sessionId) {
|
||||||
this.sessionId = sessionId;
|
this.sessionId = sessionId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
package ru.spcex.clearing.reports.reports.bean;
|
||||||
|
|
||||||
|
import com.opencsv.bean.CsvBindByName;
|
||||||
|
import com.opencsv.bean.CsvBindByPosition;
|
||||||
|
import com.opencsv.bean.CsvDate;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
public class KSSessionListReport {
|
||||||
|
@CsvBindByName(column = "ID")
|
||||||
|
@CsvBindByPosition(position = 0)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "CREATED_AT")
|
||||||
|
@CsvBindByPosition(position = 1)
|
||||||
|
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
|
||||||
|
private Instant createdAt;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "UPDATED_AT")
|
||||||
|
@CsvBindByPosition(position = 2)
|
||||||
|
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
|
||||||
|
private Instant updatedAt;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "SESSION_DATE")
|
||||||
|
@CsvBindByPosition(position = 3)
|
||||||
|
private String section;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "SESSION_TYPE")
|
||||||
|
@CsvBindByPosition(position = 4)
|
||||||
|
private String sessionType;
|
||||||
|
|
||||||
|
@CsvBindByName(column = "WORKFLOW_STATUS")
|
||||||
|
@CsvBindByPosition(position = 5)
|
||||||
|
private String workflowStatus;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Instant getCreatedAt() {
|
||||||
|
return createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreatedAt(Instant createdAt) {
|
||||||
|
this.createdAt = createdAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Instant getUpdatedAt() {
|
||||||
|
return updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdatedAt(Instant updatedAt) {
|
||||||
|
this.updatedAt = updatedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSection() {
|
||||||
|
return section;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSection(String section) {
|
||||||
|
this.section = section;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSessionType() {
|
||||||
|
return sessionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSessionType(String sessionType) {
|
||||||
|
this.sessionType = sessionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWorkflowStatus() {
|
||||||
|
return workflowStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkflowStatus(String workflowStatus) {
|
||||||
|
this.workflowStatus = workflowStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.bp;
|
package ru.spcex.clearing.reports.reports.bp;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||||
|
|
@ -13,7 +11,6 @@ import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||||
|
|
||||||
public ExecutedDealReportBuilder_INFTYPE_1(ImdgProvider imdgProvider) {
|
public ExecutedDealReportBuilder_INFTYPE_1(ImdgProvider imdgProvider) {
|
||||||
|
|
@ -35,7 +32,7 @@ public class ExecutedDealReportBuilder_INFTYPE_1 extends ExecutedDealReportBuild
|
||||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||||
pb.and(
|
pb.and(
|
||||||
pb.equals("sessionId", params.getSessionId()),
|
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||||
pb.less("tradingDate", LocalDate.now()),
|
pb.less("tradingDate", LocalDate.now()),
|
||||||
pb.equals("settlementDate", LocalDate.now())
|
pb.equals("settlementDate", LocalDate.now())
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.bp;
|
package ru.spcex.clearing.reports.reports.bp;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||||
|
|
@ -13,7 +11,6 @@ import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||||
|
|
||||||
public ExecutedDealReportBuilder_INFTYPE_2(ImdgProvider imdgProvider) {
|
public ExecutedDealReportBuilder_INFTYPE_2(ImdgProvider imdgProvider) {
|
||||||
|
|
@ -35,7 +32,7 @@ public class ExecutedDealReportBuilder_INFTYPE_2 extends ExecutedDealReportBuild
|
||||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||||
return executionFondImdg.getCollectionObjectsByPredicate(
|
return executionFondImdg.getCollectionObjectsByPredicate(
|
||||||
pb.and(
|
pb.and(
|
||||||
pb.equals("sessionId", params.getSessionId()),
|
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||||
pb.equals("tradingDate", LocalDate.now()),
|
pb.equals("tradingDate", LocalDate.now()),
|
||||||
pb.equals("settlementDate", LocalDate.now())
|
pb.equals("settlementDate", LocalDate.now())
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.bp;
|
package ru.spcex.clearing.reports.reports.bp;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||||
|
|
@ -13,7 +11,6 @@ import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
public class ExecutedDealReportBuilder_INFTYPE_3 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||||
|
|
||||||
public ExecutedDealReportBuilder_INFTYPE_3(ImdgProvider imdgProvider) {
|
public ExecutedDealReportBuilder_INFTYPE_3(ImdgProvider imdgProvider) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.bp;
|
package ru.spcex.clearing.reports.reports.bp;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
import ru.spcex.clearing.reports.reports.SessionIdParam;
|
||||||
|
|
@ -14,7 +12,6 @@ import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
public class ExecutedDealReportBuilder_INFTYPE_4 extends ExecutedDealReportBuilderCommon<SessionIdParam> {
|
||||||
|
|
||||||
public ExecutedDealReportBuilder_INFTYPE_4(ImdgProvider imdgProvider) {
|
public ExecutedDealReportBuilder_INFTYPE_4(ImdgProvider imdgProvider) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.bp;
|
package ru.spcex.clearing.reports.reports.bp;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
|
|
@ -25,7 +23,6 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdParam, UnfulfilledDealReport> {
|
public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdParam, UnfulfilledDealReport> {
|
||||||
private final Imdg<ExecutionFond> executionFondImdg;
|
private final Imdg<ExecutionFond> executionFondImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
@ -68,7 +65,7 @@ public class UnfulfilledDealReportBuilder extends CSVReportBuilder<SessionIdPara
|
||||||
protected void collect(SessionIdParam params) {
|
protected void collect(SessionIdParam params) {
|
||||||
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = executionFondImdg.predicateBuilder();
|
||||||
ImdgPredicate predicate = pb.and(
|
ImdgPredicate predicate = pb.and(
|
||||||
pb.equals("sessionId", params.getSessionId()),
|
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||||
pb.equals("coverageStatus", Allowed.DENIED.getKey())
|
pb.equals("coverageStatus", Allowed.DENIED.getKey())
|
||||||
);
|
);
|
||||||
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);
|
Collection<ExecutionFond> executionFonds = executionFondImdg.getCollectionObjectsByPredicate(predicate);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -23,7 +21,6 @@ import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam, KSRepCashNettoReport> {
|
public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam, KSRepCashNettoReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Session> sessionImdg;
|
private final Imdg<Session> sessionImdg;
|
||||||
|
|
@ -67,7 +64,7 @@ public class KSRepCashNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TM_T, RegistryTradingParams.OM_T).build();
|
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TM_T, RegistryTradingParams.OM_T).build();
|
||||||
ImdgPredicate finalPredicate = pb.and(
|
ImdgPredicate finalPredicate = pb.and(
|
||||||
pb.equals("sessionId", params.getSessionId()),
|
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||||
pb.equals("clearingDate", nowDate),
|
pb.equals("clearingDate", nowDate),
|
||||||
pb.sql(sql),
|
pb.sql(sql),
|
||||||
pb.or(
|
pb.or(
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -24,7 +22,6 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegisterSumsReport> {
|
public class KSRepCashRegisterSumsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegisterSumsReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -26,7 +24,6 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegistersReport> {
|
public class KSRepCashRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepCashRegistersReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -23,7 +21,6 @@ import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam, KSRepDepoNettoReport> {
|
public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam, KSRepDepoNettoReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Session> sessionImdg;
|
private final Imdg<Session> sessionImdg;
|
||||||
|
|
@ -67,7 +64,7 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TS_T, RegistryTradingParams.OS_T).build();
|
String sql = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.TS_T, RegistryTradingParams.OS_T).build();
|
||||||
ImdgPredicate finalPredicate = pb.and(
|
ImdgPredicate finalPredicate = pb.and(
|
||||||
pb.equals("sessionId", params.getSessionId()),
|
pb.in("sessionId", params.getSessionId().toArray(new Long[0])),
|
||||||
pb.equals("clearingDate", nowDate),
|
pb.equals("clearingDate", nowDate),
|
||||||
pb.sql(sql),
|
pb.sql(sql),
|
||||||
pb.equals("accountType", AccountType.Depo.getKey()),
|
pb.equals("accountType", AccountType.Depo.getKey()),
|
||||||
|
|
@ -83,7 +80,7 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
List<Registry> groupedRegistry = entry.getValue();
|
List<Registry> groupedRegistry = entry.getValue();
|
||||||
try {
|
try {
|
||||||
if (groupedRegistry.size() != 2) {
|
if (groupedRegistry.size() != 2) {
|
||||||
log.warn("Invalid OM_T and TM_T registries for GroupId = {} and SettlementDate = {}. Registries with id = [{}] was skipped",
|
log.warn("Invalid OS_T and TS_T registries for GroupId = {} and SettlementDate = {}. Registries with id = [{}] was skipped",
|
||||||
pairRegistryId.getGroupId(),
|
pairRegistryId.getGroupId(),
|
||||||
pairRegistryId.getSettlementDate(),
|
pairRegistryId.getSettlementDate(),
|
||||||
groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", "))
|
groupedRegistry.stream().map(r -> String.valueOf(r.getId())).collect(Collectors.joining(", "))
|
||||||
|
|
@ -99,7 +96,7 @@ public class KSRepDepoNettoReportBuilder extends CSVReportBuilder<SessionIdParam
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tstRegistry == null || ostRegistry == null) {
|
if (tstRegistry == null || ostRegistry == null) {
|
||||||
log.warn("Invalid TM_T and OM_T registry pair, {} doubled. Registry pair was skipped", tstRegistry == null ? "OM_T" : "TM_T");
|
log.warn("Invalid TS_T and OS_T registry pair, {} doubled. Registry pair was skipped", tstRegistry == null ? "OS_T" : "TS_T");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -24,7 +22,6 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegisterQuantitiesReport> {
|
public class KSRepDepoRegisterQuantitiesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegisterQuantitiesReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -26,7 +24,6 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepDepoRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegistersReport> {
|
public class KSRepDepoRegistersReportBuilder extends CSVReportBuilder<EmptyParams, KSRepDepoRegistersReport> {
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
|
|
@ -20,7 +18,6 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepFirmDetailsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepFirmDetailsReport> {
|
public class KSRepFirmDetailsReportBuilder extends CSVReportBuilder<EmptyParams, KSRepFirmDetailsReport> {
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
private final Imdg<CompanySymbols> companySymbolsImdg;
|
private final Imdg<CompanySymbols> companySymbolsImdg;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
package ru.spcex.clearing.reports.reports.ks;
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Scope;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import ru.clearing.classes.statics.data.company.Company;
|
import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
|
import ru.clearing.classes.statics.data.execution.ExecutionCommon;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Market;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
|
@ -24,15 +23,16 @@ 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.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
|
|
||||||
public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepTradesReport> {
|
public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRepTradesReport> {
|
||||||
private final Imdg<ExecutionDeposit> executionDepositImdg;
|
private final Imdg<ExecutionDeposit> executionDepositImdg;
|
||||||
private final Imdg<ExecutionFond> executionFondImdg;
|
private final Imdg<ExecutionFond> executionFondImdg;
|
||||||
private final Imdg<Session> sessionImdg;
|
private final Imdg<Session> sessionImdg;
|
||||||
private final Imdg<Registry> registryImdg;
|
private final Imdg<Registry> registryImdg;
|
||||||
|
private final Imdg<Market> marketImdg;
|
||||||
private final Imdg<Company> companyImdg;
|
private final Imdg<Company> companyImdg;
|
||||||
|
|
||||||
private List<KSRepTradesReport> rows = null;
|
private List<KSRepTradesReport> rows = null;
|
||||||
|
|
@ -43,6 +43,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||||
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
|
marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -121,12 +122,27 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
status = "1";
|
status = "1";
|
||||||
} else if (coverage == CoverageStatus.DNED) {
|
} else if (coverage == CoverageStatus.DNED) {
|
||||||
|
|
||||||
|
String marketCode = execution.getMarket();
|
||||||
|
Market market = marketImdg.getSingleObjectByFieldValues(Map.of(
|
||||||
|
"code",
|
||||||
|
marketCode
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (market == null) {
|
||||||
|
log.warn(
|
||||||
|
"Broken execution (can't find market for market.code = {}). Execution (id = {}) skipped",
|
||||||
|
marketCode,
|
||||||
|
execution.getId()
|
||||||
|
);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
ImdgPredicateBuilder pb = registryImdg.predicateBuilder();
|
||||||
String groupId = "%s%d%s".formatted(
|
String groupId = "%s%d%s".formatted(
|
||||||
dateFormatter_yyMMdd.format(nowDate),
|
dateFormatter_yyyyMMdd.format(nowDate),
|
||||||
execution.getExchangeExecutionId(),
|
execution.getExchangeExecutionId(),
|
||||||
execution.getMarket()
|
market.getId()
|
||||||
);
|
);
|
||||||
|
|
||||||
String sql = RegistryCodeSqlBuilder.getInstance(
|
String sql = RegistryCodeSqlBuilder.getInstance(
|
||||||
RegistryTradingParams.OS_T,
|
RegistryTradingParams.OS_T,
|
||||||
RegistryTradingParams.TS_T,
|
RegistryTradingParams.TS_T,
|
||||||
|
|
@ -148,30 +164,9 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Boolean fail = null;
|
boolean allNACCorNACK = checkRegistryStatus(registryCollection, List.of(RegistryStatus.NACK, RegistryStatus.NACC));
|
||||||
boolean brokenRegistries = false;
|
boolean allFAILorUNCV = checkRegistryStatus(registryCollection, List.of(RegistryStatus.FAIL, RegistryStatus.UNCV));
|
||||||
for (Registry registry : registryCollection) {
|
if (!allFAILorUNCV && !allNACCorNACK) {
|
||||||
if (registry.getRegistryStatus() == null) continue;
|
|
||||||
String regStatus = registry.getRegistryStatus();
|
|
||||||
|
|
||||||
if (regStatus.equals(RegistryStatus.NACK.getKey()) ||
|
|
||||||
regStatus.equals(RegistryStatus.NACC.getKey())) {
|
|
||||||
if (fail != null && fail) {
|
|
||||||
brokenRegistries = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fail = false;
|
|
||||||
} else if (regStatus.equals(RegistryStatus.FAIL.getKey()) ||
|
|
||||||
regStatus.equals(RegistryStatus.UNCV.getKey())) {
|
|
||||||
if (fail != null && !fail) {
|
|
||||||
brokenRegistries = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
fail = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (brokenRegistries || fail == null) {
|
|
||||||
log.warn(
|
log.warn(
|
||||||
"Broken execution (invalid registry statuses). Registry for groupId = {} has invalid registry set. Id = [{}]. Execution (id = {}) skipped",
|
"Broken execution (invalid registry statuses). Registry for groupId = {} has invalid registry set. Id = [{}]. Execution (id = {}) skipped",
|
||||||
groupId,
|
groupId,
|
||||||
|
|
@ -181,19 +176,10 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fail) {
|
if (allFAILorUNCV) {
|
||||||
boolean allS = true;
|
boolean allS = checkRegistryInstrumentType(registryCollection, List.of(RegistryInstrumentType.S));
|
||||||
boolean allM = true;
|
boolean allM = checkRegistryInstrumentType(registryCollection, List.of(RegistryInstrumentType.M));
|
||||||
for (Registry registry : registryCollection) {
|
if (!allS && !allM) {
|
||||||
if (registry.getRegistryInstrumentType() == null) continue;
|
|
||||||
if (registry.getRegistryInstrumentType().equals(RegistryInstrumentType.S.getKey()))
|
|
||||||
allM = false;
|
|
||||||
if (registry.getRegistryInstrumentType().equals(RegistryInstrumentType.M.getKey()))
|
|
||||||
allS = false;
|
|
||||||
}
|
|
||||||
if (allS) status = "3";
|
|
||||||
if (allM) status = "2";
|
|
||||||
if (allS == allM) {
|
|
||||||
log.warn(
|
log.warn(
|
||||||
"Broken execution (different instrument types). Registry for groupId = {} has invalid registry set. Id = [{}]. Execution (id = {}) skipped",
|
"Broken execution (different instrument types). Registry for groupId = {} has invalid registry set. Id = [{}]. Execution (id = {}) skipped",
|
||||||
groupId,
|
groupId,
|
||||||
|
|
@ -202,6 +188,7 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
status = allS ? "3" : "2";
|
||||||
} else status = "0";
|
} else status = "0";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -214,4 +201,22 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder<EmptyParams, KSRe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean checkRegistryStatus(Collection<Registry> registries, Collection<RegistryStatus> registryStatuses) {
|
||||||
|
for (Registry registry : registries) {
|
||||||
|
RegistryStatus registryStatus = IEnumKey.getEnumByKey(RegistryStatus.class, registry.getRegistryStatus());
|
||||||
|
if (registryStatuses.contains(registryStatus)) continue;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkRegistryInstrumentType(Collection<Registry> registries, Collection<RegistryInstrumentType> RegistryInstrumentTypes) {
|
||||||
|
for (Registry registry : registries) {
|
||||||
|
RegistryInstrumentType RegistryInstrumentType = IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType());
|
||||||
|
if (RegistryInstrumentTypes.contains(RegistryInstrumentType)) continue;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
package ru.spcex.clearing.reports.reports.ks;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
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.EmptyParams;
|
||||||
|
import ru.spcex.clearing.reports.reports.bean.KSSessionListReport;
|
||||||
|
import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||||
|
import ru.spcex.platform.enumeration.ReportKeys;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class KSSessionListReportBuilder extends CSVReportBuilder<EmptyParams, KSSessionListReport> {
|
||||||
|
private final Imdg<Session> sessionImdg;
|
||||||
|
|
||||||
|
private List<KSSessionListReport> rows = null;
|
||||||
|
|
||||||
|
public KSSessionListReportBuilder(ImdgProvider imdgProvider) {
|
||||||
|
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<KSSessionListReport> getRows() {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportBuilderType getReportType() {
|
||||||
|
return ReportBuilderType.KS_REP_FIRM_DETAILS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ReportKeys getReportKey() {
|
||||||
|
return ReportKeys.KS_SESSION_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<EmptyParams> getParamsClass() {
|
||||||
|
return EmptyParams.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<KSSessionListReport> getReportClass() {
|
||||||
|
return KSSessionListReport.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void collect(EmptyParams params) {
|
||||||
|
Collection<Session> sessions = sessionImdg.getCollectionObjectsByFieldValues(Map.of("clearingDate", LocalDate.now()));
|
||||||
|
rows = new ArrayList<>(sessions.size());
|
||||||
|
for (Session session : sessions) {
|
||||||
|
try {
|
||||||
|
KSSessionListReport ksSessionListReport = new KSSessionListReport();
|
||||||
|
ksSessionListReport.setId(session.getId());
|
||||||
|
ksSessionListReport.setCreatedAt(session.getCreated());
|
||||||
|
ksSessionListReport.setUpdatedAt(session.getUpdated());
|
||||||
|
ksSessionListReport.setSection(session.getSection());
|
||||||
|
ksSessionListReport.setSessionType(session.getSessionType());
|
||||||
|
ksSessionListReport.setWorkflowStatus(session.getWorkflowStatus());
|
||||||
|
|
||||||
|
rows.add(ksSessionListReport);
|
||||||
|
} catch (Throwable e) {
|
||||||
|
log.error("Can't create report row for session (id = %d), skipped".formatted(session.getId()), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,8 @@ import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
import ru.spcex.clearing.platform.messaging.domain.Consts;
|
||||||
import ru.spcex.clearing.platform.messaging.domain.cud.gateway.ReportPart;
|
import ru.spcex.clearing.platform.messaging.domain.cud.gateway.ReportPart;
|
||||||
|
|
@ -27,12 +29,16 @@ import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||||
import ru.spcex.platform.enumeration.ReportKeys;
|
import ru.spcex.platform.enumeration.ReportKeys;
|
||||||
import ru.spcex.platform.enumeration.ReportType;
|
import ru.spcex.platform.enumeration.ReportType;
|
||||||
import ru.spcex.platform.enumeration.Task;
|
import ru.spcex.platform.enumeration.Task;
|
||||||
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ReportService extends QueueConsumer implements InitializingBean {
|
public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
@ -53,6 +59,8 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGREF;
|
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGREF;
|
||||||
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGRET;
|
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGRET;
|
||||||
|
|
||||||
|
private final Imdg<Session> sessionImdg;
|
||||||
|
|
||||||
private final File outFolder;
|
private final File outFolder;
|
||||||
|
|
||||||
public ReportService(Consumer<String, Object> kafkaQueue,
|
public ReportService(Consumer<String, Object> kafkaQueue,
|
||||||
|
|
@ -84,7 +92,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
@Qualifier("reportRequestGRETValidator")
|
@Qualifier("reportRequestGRETValidator")
|
||||||
Function<LauncherCommandRequest, IValidator> reportRequestGRETValidator,
|
Function<LauncherCommandRequest, IValidator> reportRequestGRETValidator,
|
||||||
@Qualifier("reportRequestGREFValidator")
|
@Qualifier("reportRequestGREFValidator")
|
||||||
Function<LauncherCommandRequest, IValidator> reportRequestGREFValidator
|
Function<LauncherCommandRequest, IValidator> reportRequestGREFValidator,
|
||||||
|
|
||||||
|
ImdgProvider imdgProvider
|
||||||
|
|
||||||
) {
|
) {
|
||||||
super(kafkaQueue, kafkaResponseQueue);
|
super(kafkaQueue, kafkaResponseQueue);
|
||||||
|
|
@ -102,6 +112,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
this.reportBuildersForGREP = reportBuildersForGREP;
|
this.reportBuildersForGREP = reportBuildersForGREP;
|
||||||
this.reportBuildersForGREF = reportBuildersForGREF;
|
this.reportBuildersForGREF = reportBuildersForGREF;
|
||||||
this.reportBuildersForGRET = reportBuildersForGRET;
|
this.reportBuildersForGRET = reportBuildersForGRET;
|
||||||
|
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
assert outFolder.isDirectory();
|
assert outFolder.isDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -180,7 +191,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
List<String> outFilenames = new ArrayList<>();
|
List<String> outFilenames = new ArrayList<>();
|
||||||
for (CSVReportBuilder<SessionIdParam, ?> builder : builders) {
|
for (CSVReportBuilder<SessionIdParam, ?> builder : builders) {
|
||||||
SessionIdParam sessionIdParam = new SessionIdParam();
|
SessionIdParam sessionIdParam = new SessionIdParam();
|
||||||
sessionIdParam.setSessionId(req.getSessionId());
|
sessionIdParam.setSessionId(List.of(req.getSessionId()));
|
||||||
File outFile = builder.createReport(sessionIdParam, outFolder);
|
File outFile = builder.createReport(sessionIdParam, outFolder);
|
||||||
if (outFile == null) continue;
|
if (outFile == null) continue;
|
||||||
outFilenames.add(outFile.getAbsolutePath());
|
outFilenames.add(outFile.getAbsolutePath());
|
||||||
|
|
@ -206,10 +217,15 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
if (requestInfoUpdate != null) return null;
|
if (requestInfoUpdate != null) return null;
|
||||||
logUnknownProperties(userRequest);
|
logUnknownProperties(userRequest);
|
||||||
|
|
||||||
Long sessionId = userRequest.getRequestPayload().getSessionId();
|
List<Long> sessionIds = null;
|
||||||
Map<String, ReportKeys> outFilenames = createReportsForTask(sessionId, reportBuildersForGREP.values());
|
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||||
|
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||||
|
} else {
|
||||||
|
sessionIds = getSessionIdsForDate(LocalDate.now());
|
||||||
|
}
|
||||||
|
Map<String, ReportKeys> outFilenames = createReportsForTask(sessionIds, reportBuildersForGREP.values());
|
||||||
|
|
||||||
sendReportsToGateway(sessionId, outFilenames, ReportType.REPORT_KS_TMP.getKey());
|
sendReportsToGateway(sessionIds, outFilenames, ReportType.REPORT_KS_TMP.getKey());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -222,10 +238,15 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
if (requestInfoUpdate != null) return null;
|
if (requestInfoUpdate != null) return null;
|
||||||
logUnknownProperties(userRequest);
|
logUnknownProperties(userRequest);
|
||||||
|
|
||||||
Long sessionId = userRequest.getRequestPayload().getSessionId();
|
List<Long> sessionIds = null;
|
||||||
Map<String, ReportKeys> outFilenames = createReportsForTask(sessionId, reportBuildersForGRET.values());
|
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||||
|
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||||
|
} else {
|
||||||
|
sessionIds = getSessionIdsForDate(LocalDate.now());
|
||||||
|
}
|
||||||
|
Map<String, ReportKeys> outFilenames = createReportsForTask(sessionIds, reportBuildersForGRET.values());
|
||||||
|
|
||||||
sendReportsToGateway(sessionId, outFilenames, null);
|
sendReportsToGateway(sessionIds, outFilenames, null);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -238,14 +259,19 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
if (requestInfoUpdate != null) return null;
|
if (requestInfoUpdate != null) return null;
|
||||||
logUnknownProperties(userRequest);
|
logUnknownProperties(userRequest);
|
||||||
|
|
||||||
Long sessionId = userRequest.getRequestPayload().getSessionId();
|
List<Long> sessionIds = null;
|
||||||
Map<String, ReportKeys> outFilenames = createReportsForTask(sessionId, reportBuildersForGREF.values());
|
if (userRequest.getRequestPayload().getSessionId() != null) {
|
||||||
|
sessionIds = List.of(userRequest.getRequestPayload().getSessionId());
|
||||||
|
} else {
|
||||||
|
sessionIds = getSessionIdsForDate(LocalDate.now());
|
||||||
|
}
|
||||||
|
Map<String, ReportKeys> outFilenames = createReportsForTask(sessionIds, reportBuildersForGREF.values());
|
||||||
|
|
||||||
sendReportsToGateway(sessionId, outFilenames, ReportType.REPORT_KS_FINAL.getKey());
|
sendReportsToGateway(sessionIds, outFilenames, ReportType.REPORT_KS_FINAL.getKey());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, ReportKeys> createReportsForTask(Long sessionId, Collection<List<CSVReportBuilder<?, ?>>> buildersForTask) {
|
private Map<String, ReportKeys> createReportsForTask(List<Long> sessionIds, Collection<List<CSVReportBuilder<?, ?>>> buildersForTask) {
|
||||||
Map<String, ReportKeys> outFilenames = new HashMap<>();
|
Map<String, ReportKeys> outFilenames = new HashMap<>();
|
||||||
int cntErrors = 0;
|
int cntErrors = 0;
|
||||||
for (List<CSVReportBuilder<?, ?>> builders : buildersForTask) {
|
for (List<CSVReportBuilder<?, ?>> builders : buildersForTask) {
|
||||||
|
|
@ -258,9 +284,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
outFilenames.put(outFile.getName(), builder.getReportKey());
|
outFilenames.put(outFile.getName(), builder.getReportKey());
|
||||||
} else if (builder.getParamsClass() == SessionIdParam.class && sessionId != null) {
|
} else if (builder.getParamsClass() == SessionIdParam.class) {
|
||||||
SessionIdParam sessionIdParam = new SessionIdParam();
|
SessionIdParam sessionIdParam = new SessionIdParam();
|
||||||
sessionIdParam.setSessionId(sessionId);
|
sessionIdParam.setSessionId(sessionIds);
|
||||||
File outFile = ((CSVReportBuilder<SessionIdParam, ?>) builder).createReport(sessionIdParam, outFolder);
|
File outFile = ((CSVReportBuilder<SessionIdParam, ?>) builder).createReport(sessionIdParam, outFolder);
|
||||||
if (outFile == null) {
|
if (outFile == null) {
|
||||||
log.warn("Something wrong, report type: {}", builder.getReportType().getKey());
|
log.warn("Something wrong, report type: {}", builder.getReportType().getKey());
|
||||||
|
|
@ -277,9 +303,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
||||||
return outFilenames;
|
return outFilenames;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendReportsToGateway(Long sessionId, Map<String, ReportKeys> reportsWithReportType, String type) {
|
private void sendReportsToGateway(List<Long> sessionIds, Map<String, ReportKeys> reportsWithReportType, String type) {
|
||||||
SendReportRequest sendReportRequest = new SendReportRequest();
|
SendReportRequest sendReportRequest = new SendReportRequest();
|
||||||
sendReportRequest.setSessionId(sessionId);
|
sendReportRequest.setSessionId(sessionIds);
|
||||||
sendReportRequest.setType(type);
|
sendReportRequest.setType(type);
|
||||||
List<ReportPart> reports = new ArrayList<>(reportsWithReportType.size());
|
List<ReportPart> reports = new ArrayList<>(reportsWithReportType.size());
|
||||||
for (Map.Entry<String, ReportKeys> entry : reportsWithReportType.entrySet()) {
|
for (Map.Entry<String, ReportKeys> entry : reportsWithReportType.entrySet()) {
|
||||||
|
|
@ -299,4 +325,14 @@ 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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import ru.clearing.classes.statics.data.company.Company;
|
||||||
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
import ru.clearing.classes.statics.data.company.CompanySymbols;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
|
||||||
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
import ru.clearing.classes.statics.data.execution.ExecutionFond;
|
||||||
|
import ru.clearing.classes.statics.data.misc.Market;
|
||||||
import ru.clearing.classes.statics.data.misc.Session;
|
import ru.clearing.classes.statics.data.misc.Session;
|
||||||
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
import ru.clearing.classes.statics.data.profile.ProfileDocument;
|
||||||
import ru.clearing.classes.statics.data.registry.Registry;
|
import ru.clearing.classes.statics.data.registry.Registry;
|
||||||
|
|
@ -63,13 +64,14 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
})
|
})
|
||||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||||
public class ReportServiceTest_KS {
|
public class ReportServiceTest_KS {
|
||||||
protected DateTimeFormatter dateFormatter_yyMMdd = DateTimeFormatter.ofPattern("yyMMdd");
|
protected DateTimeFormatter dateFormatter_yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
private static File outFolder;
|
private static File outFolder;
|
||||||
private static int reportRequestCnt = 0;
|
private static int reportRequestCnt = 0;
|
||||||
private static int reportRequestWithSessionIdCnt = 0;
|
private static int reportRequestWithSessionIdCnt = 0;
|
||||||
private static int reportRequestWithSessionIdListCnt = 0;
|
private static int reportRequestWithSessionIdListCnt = 0;
|
||||||
private static int reportRequestWithPeriodCnt = 0;
|
private static int reportRequestWithPeriodCnt = 0;
|
||||||
private Imdg<Registry> registryImdg;
|
private Imdg<Registry> registryImdg;
|
||||||
|
private Imdg<Market> marketImdg;
|
||||||
private Imdg<Company> companyImdg;
|
private Imdg<Company> companyImdg;
|
||||||
private Imdg<RegistryCodeDictionary> registryCodeDictionaryImdg;
|
private Imdg<RegistryCodeDictionary> registryCodeDictionaryImdg;
|
||||||
private Imdg<ExecutionDeposit> executionDepositImdg;
|
private Imdg<ExecutionDeposit> executionDepositImdg;
|
||||||
|
|
@ -303,19 +305,23 @@ public class ReportServiceTest_KS {
|
||||||
executionFond.setCoverageStatus(CoverageStatus.ALWD.getKey());
|
executionFond.setCoverageStatus(CoverageStatus.ALWD.getKey());
|
||||||
executionFondImdg.insert(executionFond);
|
executionFondImdg.insert(executionFond);
|
||||||
|
|
||||||
|
Market market = new Market();
|
||||||
|
market.setCode("3333");
|
||||||
|
Long marketId = marketImdg.insert(market);
|
||||||
|
|
||||||
Registry registry = new Registry();
|
Registry registry = new Registry();
|
||||||
registry.setSessionId(sessionId_2);
|
registry.setSessionId(sessionId_2);
|
||||||
registry.setRegistryCode("OM_T");
|
registry.setRegistryCode("OM_T");
|
||||||
registry.setRegistryDesignation(RegistryDesignation.O.getKey());
|
registry.setRegistryDesignation(RegistryDesignation.O.getKey());
|
||||||
registry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
|
registry.setRegistryInstrumentType(RegistryInstrumentType.M.getKey());
|
||||||
registry.setRegistryUnit(RegistryUnit.T.getKey());
|
registry.setRegistryUnit(RegistryUnit.T.getKey());
|
||||||
registry.setGroupId(Long.parseLong("%s%d%s".formatted(dateFormatter_yyMMdd.format(LocalDate.now()), 222, "333")));
|
registry.setGroupId(Long.parseLong("%s%d%d".formatted(dateFormatter_yyyyMMdd.format(LocalDate.now()), 222, marketId)));
|
||||||
registry.setRegistryStatus(RegistryStatus.FAIL.getKey());
|
registry.setRegistryStatus(RegistryStatus.FAIL.getKey());
|
||||||
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
registry.setRegistryInstrumentType(RegistryInstrumentType.S.getKey());
|
||||||
registryImdg.insert(registry);
|
registryImdg.insert(registry);
|
||||||
|
|
||||||
ExecutionDeposit executionDeposit = new ExecutionDeposit();
|
ExecutionDeposit executionDeposit = new ExecutionDeposit();
|
||||||
executionDeposit.setMarket("333");
|
executionDeposit.setMarket("3333");
|
||||||
executionDeposit.setCompanyId(COMPANY_ID);
|
executionDeposit.setCompanyId(COMPANY_ID);
|
||||||
executionDeposit.setTradingDate(LocalDate.now());
|
executionDeposit.setTradingDate(LocalDate.now());
|
||||||
executionDeposit.setSessionId(sessionId_2);
|
executionDeposit.setSessionId(sessionId_2);
|
||||||
|
|
@ -540,6 +546,52 @@ public class ReportServiceTest_KS {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(9)
|
||||||
|
public void createReportTest_KSListSessionReport() throws IOException, CsvValidationException {
|
||||||
|
clearTestDir();
|
||||||
|
|
||||||
|
Session session_1 = new Session();
|
||||||
|
session_1.setCreated(Instant.ofEpochSecond(1777777777L));
|
||||||
|
session_1.setUpdated(Instant.ofEpochSecond(2777777777L));
|
||||||
|
session_1.setSection(Section.MKR.getKey());
|
||||||
|
session_1.setSessionType(SessionType.FINL.getKey());
|
||||||
|
session_1.setWorkflowStatus(WorkflowStatus.Active.getKey());
|
||||||
|
session_1.setClearingDate(LocalDate.now());
|
||||||
|
sessionImdg.insert(session_1);
|
||||||
|
|
||||||
|
Session session_2 = new Session();
|
||||||
|
session_2.setCreated(Instant.ofEpochSecond(3777777777L));
|
||||||
|
session_2.setUpdated(Instant.ofEpochSecond(4777777777L));
|
||||||
|
session_2.setSection(Section.FOND.getKey());
|
||||||
|
session_2.setSessionType(SessionType.IPO0.getKey());
|
||||||
|
session_2.setWorkflowStatus(WorkflowStatus.Blocked.getKey());
|
||||||
|
session_2.setClearingDate(LocalDate.now());
|
||||||
|
sessionImdg.insert(session_2);
|
||||||
|
|
||||||
|
ReportRequest reportRequest = new ReportRequest();
|
||||||
|
reportRequest.setReportId(ReportBuilderType.KS_SESSION_LIST.getKey());
|
||||||
|
|
||||||
|
String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L);
|
||||||
|
|
||||||
|
TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(),
|
||||||
|
Consts.CREATE_REPORT,
|
||||||
|
reportRequestCnt++,
|
||||||
|
0,
|
||||||
|
jsonString);
|
||||||
|
|
||||||
|
TestUtils.waitingSendAndCheckRecord(0L, producer);
|
||||||
|
|
||||||
|
File outFile = outFolder.listFiles()[0];
|
||||||
|
File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/ks/KS_SESSION_LIST_expected.csv").getFile());
|
||||||
|
compareCSVFiles(expectedFile, outFile, List.of("ID"));
|
||||||
|
|
||||||
|
sessionImdg.delete(session_1);
|
||||||
|
sessionImdg.delete(session_2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void compareCSVFiles(File expectedFile, File actualFile, List<String> columnsForSkip) throws IOException, CsvValidationException {
|
private void compareCSVFiles(File expectedFile, File actualFile, List<String> columnsForSkip) throws IOException, CsvValidationException {
|
||||||
if (columnsForSkip == null) columnsForSkip = Collections.emptyList();
|
if (columnsForSkip == null) columnsForSkip = Collections.emptyList();
|
||||||
CSVParser csvParser = new CSVParserBuilder().withSeparator(',').withQuoteChar('\"').build();
|
CSVParser csvParser = new CSVParserBuilder().withSeparator(',').withQuoteChar('\"').build();
|
||||||
|
|
@ -599,6 +651,7 @@ public class ReportServiceTest_KS {
|
||||||
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||||
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
profileDocumentImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class);
|
||||||
|
marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clearTestDir() throws IOException {
|
private void clearTestDir() throws IOException {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
"ID","CREATED_AT","UPDATED_AT","SESSION_DATE","SESSION_TYPE","WORKFLOW_STATUS"
|
||||||
|
"2","03.05.2026T03:09:37","09.01.2058T04:56:17","MKR","FINL","ACTV"
|
||||||
|
"3","17.09.2089T06:42:57","27.05.2121T08:29:37","FOND","IPO0","BLKD"
|
||||||
|
|
|
@ -17,6 +17,7 @@ public enum ReportBuilderType implements IEnumKey {
|
||||||
KS_REP_CASH_NETTO("ks_rep_cash_netto"),
|
KS_REP_CASH_NETTO("ks_rep_cash_netto"),
|
||||||
KS_REP_DEPO_NETTO("ks_rep_depo_netto"),
|
KS_REP_DEPO_NETTO("ks_rep_depo_netto"),
|
||||||
KS_REP_FIRM_DETAILS("ks_rep_firm_details"),
|
KS_REP_FIRM_DETAILS("ks_rep_firm_details"),
|
||||||
|
KS_SESSION_LIST("ks_session_list"),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final String key;
|
private final String key;
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ public enum ReportKeys implements IEnumKey {
|
||||||
KS_REP_CASH_NETTO("KS_REP_CASH_NETTO"),
|
KS_REP_CASH_NETTO("KS_REP_CASH_NETTO"),
|
||||||
KS_REP_DEPO_NETTO("KS_REP_DEPO_NETTO"),
|
KS_REP_DEPO_NETTO("KS_REP_DEPO_NETTO"),
|
||||||
KS_REP_FIRM_DETAILS("KS_REP_FIRM_DETAILS"),
|
KS_REP_FIRM_DETAILS("KS_REP_FIRM_DETAILS"),
|
||||||
|
KS_SESSION_LIST("KS_SESSION_LIST"),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final String key;
|
private final String key;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import java.util.List;
|
||||||
|
|
||||||
public class SendReportRequest {
|
public class SendReportRequest {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long sessionId;
|
private List<Long> sessionId;
|
||||||
|
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private String type;
|
private String type;
|
||||||
|
|
@ -14,11 +14,11 @@ public class SendReportRequest {
|
||||||
@JsonProperty
|
@JsonProperty
|
||||||
private List<ReportPart> reports;
|
private List<ReportPart> reports;
|
||||||
|
|
||||||
public Long getSessionId() {
|
public List<Long> getSessionId() {
|
||||||
return sessionId;
|
return sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSessionId(Long sessionId) {
|
public void setSessionId(List<Long> sessionId) {
|
||||||
this.sessionId = sessionId;
|
this.sessionId = sessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue