http://jira.mfd.msk:8088/browse/CLS-795 (in progress)
This commit is contained in:
parent
0c75d61840
commit
f951575425
5 changed files with 395 additions and 1 deletions
|
|
@ -0,0 +1,175 @@
|
|||
package ru.spcex.clearing.reports.builders.bean;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import com.opencsv.bean.CsvBindByName;
|
||||
import com.opencsv.bean.CsvBindByPosition;
|
||||
import com.opencsv.bean.CsvDate;
|
||||
import com.opencsv.bean.CsvNumber;
|
||||
|
||||
public class KSRepLccValueReport {
|
||||
@CsvBindByName(column = "FIRM_ID")
|
||||
@CsvBindByPosition(position = 0)
|
||||
private String firmId;
|
||||
|
||||
@CsvBindByName(column = "REPORT_DATE")
|
||||
@CsvBindByPosition(position = 1)
|
||||
@CsvDate(value = "dd.MM.yyyy'T'HH:mm:ss")
|
||||
private LocalDateTime reportDate;
|
||||
|
||||
@CsvBindByName(column = "TKR")
|
||||
@CsvBindByPosition(position = 2)
|
||||
private String tkr;
|
||||
|
||||
@CsvBindByName(column = "SUM_VALUE")
|
||||
@CsvBindByPosition(position = 3)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal sumValue;
|
||||
|
||||
@CsvBindByName(column = "LOCK_VALUE")
|
||||
@CsvBindByPosition(position = 4)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal lockValue;
|
||||
|
||||
@CsvBindByName(column = "FREE_VALUE")
|
||||
@CsvBindByPosition(position = 5)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal freeValue;
|
||||
|
||||
@CsvBindByName(column = "SINGLE_LIMIT")
|
||||
@CsvBindByPosition(position = 6)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal singleLimit;
|
||||
|
||||
@CsvBindByName(column = "CURRENCY")
|
||||
@CsvBindByPosition(position = 7)
|
||||
private String currency;
|
||||
|
||||
@CsvBindByName(column = "NCC_REAL_ACCOUNT")
|
||||
@CsvBindByPosition(position = 8)
|
||||
private String nccRealAccount;
|
||||
|
||||
@CsvBindByName(column = "QUANTITY")
|
||||
@CsvBindByPosition(position = 9)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal quantity;
|
||||
|
||||
@CsvBindByName(column = "LOCK_QUANTITY")
|
||||
@CsvBindByPosition(position = 10)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal lockQuantity;
|
||||
|
||||
@CsvBindByName(column = "FREE_QUANTITY")
|
||||
@CsvBindByPosition(position = 10)
|
||||
@CsvNumber(value = "#0.00", writeFormat = "#0.00")
|
||||
private BigDecimal freeQuantity;
|
||||
|
||||
@CsvBindByName(column = "VALUE")
|
||||
@CsvBindByPosition(position = 11)
|
||||
private BigDecimal value;
|
||||
|
||||
|
||||
public String getFirmId() {
|
||||
return firmId;
|
||||
}
|
||||
|
||||
public void setFirmId(String firmId) {
|
||||
this.firmId = firmId;
|
||||
}
|
||||
|
||||
public LocalDateTime getReportDate() {
|
||||
return reportDate;
|
||||
}
|
||||
|
||||
public void setReportDate(LocalDateTime reportDate) {
|
||||
this.reportDate = reportDate;
|
||||
}
|
||||
|
||||
public String getTkr() {
|
||||
return tkr;
|
||||
}
|
||||
|
||||
public void setTkr(String tkr) {
|
||||
this.tkr = tkr;
|
||||
}
|
||||
|
||||
public BigDecimal getSumValue() {
|
||||
return sumValue;
|
||||
}
|
||||
|
||||
public void setSumValue(BigDecimal sumValue) {
|
||||
this.sumValue = sumValue;
|
||||
}
|
||||
|
||||
public BigDecimal getLockValue() {
|
||||
return lockValue;
|
||||
}
|
||||
|
||||
public void setLockValue(BigDecimal lockValue) {
|
||||
this.lockValue = lockValue;
|
||||
}
|
||||
|
||||
public BigDecimal getFreeValue() {
|
||||
return freeValue;
|
||||
}
|
||||
|
||||
public void setFreeValue(BigDecimal freeValue) {
|
||||
this.freeValue = freeValue;
|
||||
}
|
||||
|
||||
public BigDecimal getSingleLimit() {
|
||||
return singleLimit;
|
||||
}
|
||||
|
||||
public void setSingleLimit(BigDecimal singleLimit) {
|
||||
this.singleLimit = singleLimit;
|
||||
}
|
||||
|
||||
public String getCurrency() {
|
||||
return currency;
|
||||
}
|
||||
|
||||
public void setCurrency(String currency) {
|
||||
this.currency = currency;
|
||||
}
|
||||
|
||||
public String getNccRealAccount() {
|
||||
return nccRealAccount;
|
||||
}
|
||||
|
||||
public void setNccRealAccount(String nccRealAccount) {
|
||||
this.nccRealAccount = nccRealAccount;
|
||||
}
|
||||
|
||||
public BigDecimal getQuantity() {
|
||||
return quantity;
|
||||
}
|
||||
|
||||
public void setQuantity(BigDecimal quantity) {
|
||||
this.quantity = quantity;
|
||||
}
|
||||
|
||||
public BigDecimal getLockQuantity() {
|
||||
return lockQuantity;
|
||||
}
|
||||
|
||||
public void setLockQuantity(BigDecimal lockQuantity) {
|
||||
this.lockQuantity = lockQuantity;
|
||||
}
|
||||
|
||||
public BigDecimal getFreeQuantity() {
|
||||
return freeQuantity;
|
||||
}
|
||||
|
||||
public void setFreeQuantity(BigDecimal freeQuantity) {
|
||||
this.freeQuantity = freeQuantity;
|
||||
}
|
||||
|
||||
public BigDecimal getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(BigDecimal value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
package ru.spcex.clearing.reports.builders.ks;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.clearing.classes.statics.data.registry.Registry;
|
||||
import ru.clearing.classes.statics.data.security.Rates;
|
||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||
import ru.spcex.clearing.reports.builders.CSVReportBuilder;
|
||||
import ru.spcex.clearing.reports.builders.EmptyParams;
|
||||
import ru.spcex.clearing.reports.builders.bean.KSRepLccValueReport;
|
||||
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;
|
||||
|
||||
@Component
|
||||
public class KSRepLccValueReportBuilder extends CSVReportBuilder<EmptyParams, KSRepLccValueReport> {
|
||||
private final Imdg<Registry> registryImdg;
|
||||
private final Imdg<Rates> ratesImdg;
|
||||
|
||||
private List<KSRepLccValueReport> rows = null;
|
||||
|
||||
public KSRepLccValueReportBuilder(ImdgProvider imdgProvider) {
|
||||
registryImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
|
||||
ratesImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Rates, Rates.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<KSRepLccValueReport> getRows() {
|
||||
return rows;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportBuilderType getReportType() {
|
||||
return ReportBuilderType.KS_REP_LCC_NETTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReportKeys getReportKey() {
|
||||
return ReportKeys.KS_REP_LCC_NETTO_REPORT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<EmptyParams> getParamsClass() {
|
||||
return EmptyParams.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<KSRepLccValueReport> getReportClass() {
|
||||
return KSRepLccValueReport.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void collect(EmptyParams params) {
|
||||
// ImdgPredicateBuilder registryPB = registryImdg.predicateBuilder();
|
||||
// ImdgPredicate baseRegistriesPredicate = RegistryCodeSqlBuilder.getInstance(
|
||||
// RegistryTradingParams.AM_F,
|
||||
// RegistryTradingParams.OM_T,
|
||||
// RegistryTradingParams.TM_T
|
||||
// ).buildPredicate(registryPB);
|
||||
// Collection<Registry> baseRegistries = registryImdg.getCollectionObjectsByPredicate(baseRegistriesPredicate);
|
||||
//
|
||||
// Map<Long, List<Registry>> groupedByTKR = baseRegistries.stream()
|
||||
// .filter(registry -> {
|
||||
// if (registry.getTradingClearingRegistryId() == null) {
|
||||
// log.warn("Skip registry (id = {}): empty trading_clearing_registry_id", registry.getId());
|
||||
// return false;
|
||||
// }
|
||||
// if (registry.getSecurityId() == null) {
|
||||
// log.warn("Skip registry (id = {}): empty security_id", registry.getId());
|
||||
// return false;
|
||||
// }
|
||||
// return true;
|
||||
// })
|
||||
// .collect(Collectors.groupingBy(Registry::getTradingClearingRegistryId));
|
||||
//
|
||||
// Map<Long, Rates> currencyRates = new HashMap<>();
|
||||
// LocalDateTime nowTime = LocalDateTime.now();
|
||||
// LocalDate now = LocalDate.now();
|
||||
// for (Map.Entry<Long, List<Registry>> entryTKR : groupedByTKR.entrySet()) {
|
||||
// Long tradingClearingRegistryId = entryTKR.getKey();
|
||||
// List<Registry> registriesForTKR = entryTKR.getValue();
|
||||
//
|
||||
// Registry sampleRegistry = registriesForTKR.iterator().next();
|
||||
// String firmId = sampleRegistry.getTradingCode();
|
||||
// String tkr = sampleRegistry.getTradingClearingRegistry();
|
||||
// BigDecimal sumValue = BigDecimal.ZERO;
|
||||
// for (Registry registry : registriesForTKR) {
|
||||
// if (
|
||||
// registry.getRegistryDesignation().equals(RegistryDesignation.A.getKey()) &&
|
||||
// registry.getRegistryInstrumentType().equals(RegistryInstrumentType.M.getKey()) &&
|
||||
// registry.getRegistryUnit().equals(RegistryUnit.F.getKey())
|
||||
// ) {
|
||||
// if (registry.getBalance() == null) continue;
|
||||
// Long securityId = registry.getSecurityId();
|
||||
// Rates currencyRate = currencyRates.get(securityId);
|
||||
// if (currencyRate == null) {
|
||||
// ImdgPredicateBuilder ratesPB = ratesImdg.predicateBuilder();
|
||||
// Collection<Rates> rates = ratesImdg.getCollectionObjectsByPredicate(
|
||||
// ratesPB.and(
|
||||
// ratesPB.equals("currency_id", securityId),
|
||||
// ratesPB.notNull("value"),
|
||||
// ratesPB.equals("value_date", now)
|
||||
// )
|
||||
// );
|
||||
// if (!rates.isEmpty()) {
|
||||
// currencyRate = rates.iterator().next();
|
||||
// } else {
|
||||
// currencyRate = new Rates();
|
||||
// currencyRate.setValue(BigDecimal.ONE);
|
||||
// };
|
||||
// currencyRates.put(securityId, currencyRate);
|
||||
// }
|
||||
// sumValue = sumValue.add(registry.getBalance().multiply(currencyRate.getValue()));
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// Map<Long, List<Registry>> registriesForSecurityId = registriesForTKR.stream().collect(
|
||||
// Collectors.groupingBy(Registry::getSecurityId)
|
||||
// );
|
||||
//
|
||||
// List<KSRepLccValueReport> rowsForGroup = new ArrayList<>();
|
||||
// for (Map.Entry<Long, List<Registry>> entrySecurityId : registriesForSecurityId.entrySet()) {
|
||||
// KSRepLccValueReport ksRepLccValueReport = new KSRepLccValueReport();
|
||||
// ksRepLccValueReport.setFirmId(firmId);
|
||||
// ksRepLccValueReport.setReportDate(nowTime);
|
||||
// ksRepLccValueReport.setTkr(tkr);
|
||||
// ksRepLccValueReport.setSumValue(sumValue);
|
||||
//
|
||||
// Long securityId = entrySecurityId.getKey();
|
||||
// List<Registry> registries = entrySecurityId.getValue();
|
||||
// BigDecimal demandMoney = BigDecimal.ZERO;
|
||||
// BigDecimal obligMoney = BigDecimal.ZERO;
|
||||
// BigDecimal posMoney = BigDecimal.ZERO;
|
||||
// for (Registry registry : registries) {
|
||||
// if (
|
||||
// List.of(RegistryStatus.PROC, RegistryStatus.MNG).contains(
|
||||
// IEnumKey.getEnumByKey(RegistryStatus.class, registry.getRegistryStatus())
|
||||
// ) &&
|
||||
// registry.getRegistryInstrumentType().equals(RegistryInstrumentType.M.getKey()) &&
|
||||
// registry.getRegistryUnit().equals(RegistryUnit.T.getKey())
|
||||
// ) {
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// rowsForGroup.add(ksRepLccValueReport);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
|
||||
rows = new ArrayList<>();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -23,6 +23,7 @@ import ru.spcex.clearing.reports.builders.ks.KSRepDepoRegisterQuantitiesReportBu
|
|||
import ru.spcex.clearing.reports.builders.ks.KSRepDepoRegistersReportBuilder;
|
||||
import ru.spcex.clearing.reports.builders.ks.KSRepLccNettoReportBuilder;
|
||||
import ru.spcex.clearing.reports.builders.ks.KSRepLccTradesReportBuilder;
|
||||
import ru.spcex.clearing.reports.builders.ks.KSRepLccValueReportBuilder;
|
||||
import ru.spcex.clearing.reports.builders.ks.KSRepTradesReportBuilder;
|
||||
import ru.spcex.clearing.reports.builders.ks.KSSessionListReportBuilder;
|
||||
import ru.spcex.platform.enumeration.ReportBuilderType;
|
||||
|
|
@ -40,7 +41,8 @@ public class ReportBuildersConfig {
|
|||
KSSessionListReportBuilder ksSessionListReportBuilder,
|
||||
KSCommissionTradesReportBuilder ksCommissionTradesReportBuilder,
|
||||
KSRepLccTradesReportBuilder ksRepLccTradesReportBuilder,
|
||||
KSRepLccNettoReportBuilder ksRepLccNettoReportBuilder
|
||||
KSRepLccNettoReportBuilder ksRepLccNettoReportBuilder,
|
||||
KSRepLccValueReportBuilder ksRepLccValueReportBuilder
|
||||
) {
|
||||
Map<ReportBuilderType, List<CSVReportBuilder<EmptyParams, ?>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportBuilderType.KS_REP_CASH_REGISTERS, List.of(ksRepCashRegistersReportBuilder));
|
||||
|
|
@ -52,6 +54,7 @@ public class ReportBuildersConfig {
|
|||
resultMap.put(ReportBuilderType.KS_COMMISSION_TRADES, List.of(ksCommissionTradesReportBuilder));
|
||||
resultMap.put(ReportBuilderType.KS_REP_LCC_TRADES, List.of(ksRepLccTradesReportBuilder));
|
||||
resultMap.put(ReportBuilderType.KS_REP_LCC_NETTO, List.of(ksRepLccNettoReportBuilder));
|
||||
resultMap.put(ReportBuilderType.KS_REP_LCC_VALUE, List.of(ksRepLccValueReportBuilder));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
|
@ -162,4 +165,14 @@ public class ReportBuildersConfig {
|
|||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
@Bean("reportBuildersForCX84")
|
||||
public Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForCX84(
|
||||
KSRepLccValueReportBuilder ksRepLccValueReportBuilder
|
||||
) {
|
||||
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportBuilderType.KS_REP_LCC_VALUE, List.of(ksRepLccValueReportBuilder));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -173,6 +173,25 @@ public class ValidationConfig {
|
|||
);
|
||||
};
|
||||
}
|
||||
|
||||
// todo оставил бин валидатора на будущее, если в дальнейшем придется проверять запрос. в текущей версии, по факту,
|
||||
// запрос не проверяется: в случае если sessionId не указан отчеты не строятся
|
||||
@Bean("reportRequestCX84Validator")
|
||||
public Function<LauncherCommandRequest, IValidator> reportRequestCX84Validator(
|
||||
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
|
||||
) {
|
||||
return launcherCommandRequest -> {
|
||||
ImdgValidationContext<LauncherCommandRequest> context = new ImdgValidationContext<>();
|
||||
context.setValidatedObject(launcherCommandRequest);
|
||||
return new ValidatorImpl<>(context,
|
||||
FieldRequiredRule.instance(
|
||||
"sessionId",
|
||||
LauncherCommandRequest::getSessionId,
|
||||
ReportError.RequiredFieldEmpty,
|
||||
false)
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ public class ReportService extends QueueConsumerV2 implements InitializingBean {
|
|||
private final Function<LauncherCommandRequest, IValidator> reportRequestGRETValidator;
|
||||
private final Function<LauncherCommandRequest, IValidator> reportRequestGREFValidator;
|
||||
private final Function<LauncherCommandRequest, IValidator> reportRequestGRECValidator;
|
||||
private final Function<LauncherCommandRequest, IValidator> reportRequestCX84Validator;
|
||||
|
||||
private final Map<ReportBuilderType, List<CSVReportBuilder<EmptyParams, ?>>> reportBuildersWithoutParams;
|
||||
private final Map<ReportBuilderType, List<CSVReportBuilder<SessionIdParam, ?>>> reportBuildersWithSessionIdParam;
|
||||
|
|
@ -62,6 +63,7 @@ public class ReportService extends QueueConsumerV2 implements InitializingBean {
|
|||
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGREF;
|
||||
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGRET;
|
||||
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGREC;
|
||||
private final Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForCX84;
|
||||
|
||||
private final Imdg<Session> sessionImdg;
|
||||
|
||||
|
|
@ -88,6 +90,8 @@ public class ReportService extends QueueConsumerV2 implements InitializingBean {
|
|||
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGRET,
|
||||
@Qualifier("reportBuildersForGREC")
|
||||
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForGREC,
|
||||
@Qualifier("reportBuildersForCX84")
|
||||
Map<ReportBuilderType, List<CSVReportBuilder<?, ?>>> reportBuildersForCX84,
|
||||
|
||||
@Qualifier("reportRequestValidator")
|
||||
Function<ReportRequest, IValidator> reportRequestValidator,
|
||||
|
|
@ -102,6 +106,9 @@ public class ReportService extends QueueConsumerV2 implements InitializingBean {
|
|||
Function<LauncherCommandRequest, IValidator> reportRequestGREFValidator,
|
||||
@Qualifier("reportRequestGREFValidator")
|
||||
Function<LauncherCommandRequest, IValidator> reportRequestGRECValidator,
|
||||
@Qualifier("reportRequestCX84Validator")
|
||||
Function<LauncherCommandRequest, IValidator> reportRequestCX84Validator,
|
||||
|
||||
|
||||
ImdgProvider imdgProvider,
|
||||
SFTPReportsConfig.ReportsGateway reportsSftpGateway
|
||||
|
|
@ -117,10 +124,12 @@ public class ReportService extends QueueConsumerV2 implements InitializingBean {
|
|||
this.reportRequestGRETValidator = reportRequestGRETValidator;
|
||||
this.reportRequestGREFValidator = reportRequestGREFValidator;
|
||||
this.reportRequestGRECValidator = reportRequestGRECValidator;
|
||||
this.reportRequestCX84Validator = reportRequestCX84Validator;
|
||||
this.reportBuildersForGREP = reportBuildersForGREP;
|
||||
this.reportBuildersForGREF = reportBuildersForGREF;
|
||||
this.reportBuildersForGRET = reportBuildersForGRET;
|
||||
this.reportBuildersForGREC = reportBuildersForGREC;
|
||||
this.reportBuildersForCX84 = reportBuildersForCX84;
|
||||
this.reportsSftpGateway = reportsSftpGateway;
|
||||
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
|
||||
this.outFolder = new File(reportsServiceSettings.getReportsStore().getLocalTempDir());
|
||||
|
|
@ -154,6 +163,9 @@ public class ReportService extends QueueConsumerV2 implements InitializingBean {
|
|||
callback(LauncherCommandRequest.class)
|
||||
.setFunction(this::createReportForGREC)
|
||||
.forDestination(Task.createReport_GREC.topic(), callbacks::put);
|
||||
callback(LauncherCommandRequest.class)
|
||||
.setFunction(this::createReportForCX84)
|
||||
.forDestination(Task.CX84.topic(), callbacks::put);
|
||||
init();
|
||||
}
|
||||
|
||||
|
|
@ -342,6 +354,24 @@ public class ReportService extends QueueConsumerV2 implements InitializingBean {
|
|||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForCX84(BaseRequest<LauncherCommandRequest> userRequest) {
|
||||
log.debug("CX84 task received");
|
||||
|
||||
try {
|
||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestCX84Validator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
logUnknownProperties(userRequest);
|
||||
|
||||
Map<File, ReportInfo> outFiles = createReportsForTask(List.of(), reportBuildersForCX84.values());
|
||||
|
||||
sendReportsToGateway(List.of(), outFiles, ReportType.REPORT_KS_LCC.getKey());
|
||||
sendFilesToSftp(outFiles.keySet());
|
||||
} catch (Exception e) {
|
||||
log.error("Unexpected exception", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Map<File, ReportInfo> createReportsForTask(List<Long> sessionIds, Collection<List<CSVReportBuilder<?, ?>>> buildersForTask) {
|
||||
Map<File, ReportInfo> outFiles = new HashMap<>();
|
||||
int cntErrors = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue