report create methods
This commit is contained in:
parent
c76aee2428
commit
47fbbabb1b
3 changed files with 127 additions and 3 deletions
|
|
@ -0,0 +1,46 @@
|
|||
package ru.spcex.clearing.reports.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import ru.spcex.clearing.reports.reports.*;
|
||||
import ru.spcex.clearing.reports.reports.bp.*;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Configuration
|
||||
public class ReportBuildersConfig {
|
||||
@Bean("reportBuildersWithoutParams")
|
||||
public Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<EmptyParams>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.SUMMARY_LIABILITIES_CLAIMS, new SummaryLiabilitiesClaimsReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.SUMMARY_MONEY_CHANGE, new SummaryMoneyChangeReportBuilder(imdgProvider));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithSessionIdParam")
|
||||
public Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<SessionIdParam>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.OPERATIONAL_LIABILITIES_CLAIMS, new OperationalLiabilitiesClaimsReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.OPERATIONAL_MONEY_CHANGE, new OperationalMoneyChangeReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.EXECUTED_DEAL_REPORT, new ExecutedDealReportBuilder(imdgProvider));
|
||||
resultMap.put(ReportType.UNFULFILLED_DEAL_REPORT, new UnfulfilledDealReportBuilder(imdgProvider));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithSessionIdListParam")
|
||||
public Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<SessionIdListParams>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_LIABILITIES_CLAIMS, new PeriodLiabilitiesClaimsReportBuilder(imdgProvider));
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@Bean("reportBuildersWithPeriodParams")
|
||||
public Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams(ImdgProvider imdgProvider) {
|
||||
Map<ReportType, CSVReportBuilder<PeriodParams>> resultMap = new HashMap<>();
|
||||
resultMap.put(ReportType.PERIOD_MONEY_CHANGE, new PeriodMoneyChangeReportBuilder(imdgProvider));
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,8 @@ package ru.spcex.clearing.reports.services;
|
|||
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.producer.Producer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -13,16 +15,23 @@ import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWith
|
|||
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionIdList;
|
||||
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
|
||||
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||
import ru.spcex.clearing.reports.config.element.ReportsServiceSettings;
|
||||
import ru.spcex.clearing.reports.reports.*;
|
||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
||||
import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||
import ru.spcex.platform.enumeration.ReportType;
|
||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||
import ru.spcex.platform.utils.validation.IValidator;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Service
|
||||
public class ReportService extends QueueConsumer implements InitializingBean {
|
||||
private final Logger log = LoggerFactory.getLogger(getClass());
|
||||
private final ImdgProvider imdgProvider;
|
||||
private final IMessageResolver messageResolver;
|
||||
private final UserRoleVerification userRoleVerification;
|
||||
|
|
@ -31,6 +40,12 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
private final Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator;
|
||||
private final Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator;
|
||||
private final Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator;
|
||||
private final Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams;
|
||||
private final Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam;
|
||||
private final Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParam;
|
||||
private final Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams;
|
||||
|
||||
private final File outFolder;
|
||||
|
||||
public ReportService(Consumer<String, Object> kafkaQueue,
|
||||
Producer<String, Object> kafkaResponseQueue,
|
||||
|
|
@ -38,14 +53,23 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
IMessageResolver messageResolver,
|
||||
UserRoleVerification userRoleVerification,
|
||||
ValidationHelper validationHelper,
|
||||
ReportsServiceSettings reportsServiceSettings,
|
||||
@Qualifier("reportBuildersWithoutParams")
|
||||
Map<ReportType, CSVReportBuilder<EmptyParams>> reportBuildersWithoutParams,
|
||||
@Qualifier("reportBuildersWithSessionIdParam")
|
||||
Map<ReportType, CSVReportBuilder<SessionIdParam>> reportBuildersWithSessionIdParam,
|
||||
@Qualifier("reportBuildersWithSessionIdListParam")
|
||||
Map<ReportType, CSVReportBuilder<SessionIdListParams>> reportBuildersWithSessionIdListParam,
|
||||
@Qualifier("reportBuildersWithPeriodParams")
|
||||
Map<ReportType, CSVReportBuilder<PeriodParams>> reportBuildersWithPeriodParams,
|
||||
@Qualifier("reportRequestValidator")
|
||||
Function<ReportRequest, IValidator> reportRequestValidator,
|
||||
@Qualifier("reportRequestWithSessionIdValidator")
|
||||
Function<ReportRequestWithSessionId, IValidator> reportRequestWithSessionIdValidator,
|
||||
@Qualifier("reportRequestWithSessionIdListValidator")
|
||||
@Qualifier("reportRequestWithSessionIdListValidator")
|
||||
Function<ReportRequestWithSessionIdList, IValidator> reportRequestWithSessionIdListValidator,
|
||||
@Qualifier("reportRequestWithPeriodValidator")
|
||||
Function<ReportRequestWithPeriod, IValidator> ReportRequestWithPeriodValidator) {
|
||||
Function<ReportRequestWithPeriod, IValidator> reportRequestWithPeriodValidator) {
|
||||
super(kafkaQueue, kafkaResponseQueue);
|
||||
this.imdgProvider = imdgProvider;
|
||||
this.messageResolver = messageResolver;
|
||||
|
|
@ -54,7 +78,13 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
this.reportRequestValidator = reportRequestValidator;
|
||||
this.reportRequestWithSessionIdValidator = reportRequestWithSessionIdValidator;
|
||||
this.reportRequestWithSessionIdListValidator = reportRequestWithSessionIdListValidator;
|
||||
reportRequestWithPeriodValidator = ReportRequestWithPeriodValidator;
|
||||
this.reportRequestWithPeriodValidator = reportRequestWithPeriodValidator;
|
||||
this.reportBuildersWithoutParams = reportBuildersWithoutParams;
|
||||
this.reportBuildersWithSessionIdParam = reportBuildersWithSessionIdParam;
|
||||
this.reportBuildersWithSessionIdListParam = reportBuildersWithSessionIdListParam;
|
||||
this.reportBuildersWithPeriodParams = reportBuildersWithPeriodParams;
|
||||
this.outFolder = new File(reportsServiceSettings.getReportModuleOut());
|
||||
assert outFolder.isDirectory();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -74,42 +104,89 @@ public class ReportService extends QueueConsumer implements InitializingBean {
|
|||
}
|
||||
|
||||
public RequestInfoUpdate createReport(BaseRequest<ReportRequest> userRequest) {
|
||||
log.debug("ReportRequest received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequest req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<EmptyParams> builder = reportBuildersWithoutParams.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
File outFile = builder.createReport(new EmptyParams(), outFolder);
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForSessionId(BaseRequest<ReportRequestWithSessionId> userRequest) {
|
||||
log.debug("ReportRequestWithSessionId received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequestWithSessionId req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<SessionIdParam> builder = reportBuildersWithSessionIdParam.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
SessionIdParam sessionIdParam = new SessionIdParam();
|
||||
sessionIdParam.setSessionId(req.getSessionId());
|
||||
File outFile = builder.createReport(sessionIdParam, outFolder);
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForSessionIdList(BaseRequest<ReportRequestWithSessionIdList> userRequest) {
|
||||
log.debug("ReportRequestWithSessionIdList received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdListValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequestWithSessionIdList req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<SessionIdListParams> builder = reportBuildersWithSessionIdListParam.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
SessionIdListParams sessionIdListParams = new SessionIdListParams();
|
||||
sessionIdListParams.setSessionIdList(req.getSessionIdList());
|
||||
File outFile = builder.createReport(sessionIdListParams, outFolder);
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
return null;
|
||||
}
|
||||
|
||||
public RequestInfoUpdate createReportForPeriod(BaseRequest<ReportRequestWithPeriod> userRequest) {
|
||||
log.debug("ReportRequestWithPeriod received");
|
||||
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithPeriodValidator);
|
||||
if (requestInfoUpdate != null) return null;
|
||||
|
||||
ReportRequestWithPeriod req = userRequest.getRequestPayload();
|
||||
log.debug("Create report type {}...", req.getReportId());
|
||||
|
||||
CSVReportBuilder<PeriodParams> builder = reportBuildersWithPeriodParams.get(
|
||||
IEnumKey.getEnumByKey(ReportType.class, req.getReportId())
|
||||
);
|
||||
PeriodParams periodParams = new PeriodParams();
|
||||
periodParams.setStartDate(req.getStartDate());
|
||||
periodParams.setEndDate(req.getEndDate());
|
||||
File outFile = builder.createReport(periodParams, outFolder);
|
||||
|
||||
log.debug("Report {} successfully created. Output file: {}", req.getReportId(), outFile.getAbsolutePath());
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,4 +27,5 @@ public enum ReportType implements IEnumKey {
|
|||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue