report requests

This commit is contained in:
akulikov 2023-05-15 17:15:02 +03:00
parent 0e58782a4c
commit a2873620a3
7 changed files with 74 additions and 39 deletions

View file

@ -5,8 +5,8 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.clearing.classes.statics.data.company.Company;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestFromExecution;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestFromRegistry;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
import ru.spcex.clearing.reports.errors.ReportError;
import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
@ -45,19 +45,19 @@ public class ValidationConfig {
}
@Bean("reportRequestFromExecutionValidator")
public Function<ReportRequestFromExecution, IValidator> reportRequestFromExecutionValidator(
public Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return reportRequestFromExecution -> {
ImdgValidationContext<ReportRequestFromExecution> context = new ImdgValidationContext<>();
context.setValidatedObject(reportRequestFromExecution);
return reportRequestWithSessionId -> {
ImdgValidationContext<ReportRequestWithSessionId> context = new ImdgValidationContext<>();
context.setValidatedObject(reportRequestWithSessionId);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
// todo add dictionary for check reportId
return new ValidatorImpl<>(context,
EnumPresentRule.instance("reportId",
ReportRequestFromExecution::getReportId,
ReportRequestWithSessionId::getReportId,
new ReportType[]{
ReportType.OPERATIONAL_LIABILITIES_CLAIMS,
ReportType.SUMMARY_LIABILITIES_CLAIMS,
@ -68,26 +68,26 @@ public class ValidationConfig {
ReportError.WrongFieldValue,
ReportError.RequiredFieldEmpty),
FieldRequiredRule.instance("sessionId",
ReportRequestFromExecution::getSessionId,
ReportRequestWithSessionId::getSessionId,
ReportError.RequiredFieldEmpty)
);
};
}
@Bean("reportRequestFromRegistryValidator")
public Function<ReportRequestFromRegistry, IValidator> reportRequestFromRegistryValidator(
public Function<ReportRequest, IValidator> reportRequestFromRegistryValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) {
return reportRequestFromRegistry -> {
ImdgValidationContext<ReportRequestFromRegistry> context = new ImdgValidationContext<>();
context.setValidatedObject(reportRequestFromRegistry);
return reportRequest -> {
ImdgValidationContext<ReportRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(reportRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
// todo add dictionary for check reportId
return new ValidatorImpl<>(context,
EnumPresentRule.instance("reportId",
ReportRequestFromRegistry::getReportId,
reportRequest::getReportId,
new ReportType[]{
ReportType.OPERATIONAL_MONEY_CHANGE,
ReportType.SUMMARY_MONEY_CHANGE,

View file

@ -7,8 +7,10 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestFromExecution;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestFromRegistry;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithPeriod;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
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.util.security.UserRoleVerification;
@ -25,8 +27,8 @@ public class ReportService extends QueueConsumer implements InitializingBean {
private final IMessageResolver messageResolver;
private final UserRoleVerification userRoleVerification;
private final ValidationHelper validationHelper;
private final Function<ReportRequestFromExecution, IValidator> reportRequestFromExecutionValidator;
private final Function<ReportRequestFromRegistry, IValidator> reportRequestFromRegistryValidator;
private final Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator;
private final Function<ReportRequest, IValidator> reportRequestFromRegistryValidator;
public ReportService(Consumer<String, Object> kafkaQueue,
Producer<String, Object> kafkaResponseQueue,
@ -35,9 +37,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
UserRoleVerification userRoleVerification,
ValidationHelper validationHelper,
@Qualifier("reportRequestFromExecutionValidator")
Function<ReportRequestFromExecution, IValidator> reportRequestFromExecutionValidator,
Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator,
@Qualifier("reportRequestFromRegistryValidator")
Function<ReportRequestFromRegistry, IValidator> reportRequestFromRegistryValidator) {
Function<ReportRequest, IValidator> reportRequestFromRegistryValidator) {
super(kafkaQueue, kafkaResponseQueue);
this.imdgProvider = imdgProvider;
this.messageResolver = messageResolver;
@ -49,15 +51,21 @@ public class ReportService extends QueueConsumer implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
callback(ReportRequestFromRegistry.class)
.setConsumer(this::createReportFromRegistry)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FROM_REGISTRY, callbacks::put);
callback(ReportRequestFromExecution.class)
.setConsumer(this::createReportFromExecution)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FROM_EXECUTION, callbacks::put);
callback(ReportRequest.class)
.setFunction(this::createReport)
.forDestination(Consts.DESTINATION_CREATE_REPORT, callbacks::put);
callback(ReportRequestWithSessionId.class)
.setFunction(this::createReportForSessionId)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID, callbacks::put);
callback(ReportRequestWithSessionIdList.class)
.setFunction(this::createReportForSessionIdList)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FOR_SESSION_ID, callbacks::put);
callback(ReportRequestWithPeriod.class)
.setFunction(this::createReportForPeriod)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FOR_PERIOD, callbacks::put);
}
public RequestInfoUpdate createReportFromRegistry(BaseRequest<ReportRequestFromRegistry> userRequest) {
public RequestInfoUpdate createReport(BaseRequest<ReportRequest> userRequest) {
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return null;
@ -67,7 +75,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
return null;
}
public RequestInfoUpdate createReportFromExecution(BaseRequest<ReportRequestFromExecution> userRequest) {
public RequestInfoUpdate createReportForSessionId(BaseRequest<ReportRequestWithSessionId> userRequest) {
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return null;
@ -77,5 +85,13 @@ public class ReportService extends QueueConsumer implements InitializingBean {
return null;
}
public RequestInfoUpdate createReportForSessionIdList(BaseRequest<ReportRequestWithSessionIdList> userRequest) {
return null;
}
public RequestInfoUpdate createReportForPeriod(BaseRequest<ReportRequestWithPeriod> userRequest) {
return null;
}
}

View file

@ -71,8 +71,10 @@ public interface Consts {
String DESTINATION_BANK_ACCOUNT_UPDATE = "bank-account-update";
String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new";
String DESTINATION_CREATE_REPORT_FROM_REGISTRY = "destination-create-report-from-registry";
String DESTINATION_CREATE_REPORT_FROM_EXECUTION = "destination-create-report-from-execution";
String DESTINATION_CREATE_REPORT = "destination-create-report";
String DESTINATION_CREATE_REPORT_FOR_SESSION_ID = "destination-create-report-for-session-id";
String DESTINATION_CREATE_REPORT_FOR_SESSION_ID_LIST = "destination-create-report-for-session-id-list";
String DESTINATION_CREATE_REPORT_FOR_PERIOD = "destination-create-report-for-period";
@Deprecated
String ACCOUNT_NEW_SDF01 = "account-new-sdf01";

View file

@ -1,7 +0,0 @@
package ru.spcex.clearing.platform.messaging.domain.cud.reports;
/**
* Запрос на построение отчета на основе Registry
*/
public class ReportRequestFromRegistry extends ReportRequest {
}

View file

@ -11,7 +11,7 @@ import java.time.LocalDate;
/**
* Запрос отчёта с периодом report-service
*/
public class ReportWithPeriodRequest extends ReportRequest {
public class ReportRequestWithPeriod extends ReportRequest {
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty

View file

@ -3,9 +3,9 @@ package ru.spcex.clearing.platform.messaging.domain.cud.reports;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* Запрос на построение отчета на основе ExecutionDeposit/Fond
* Запрос на построение отчета по SessionId
*/
public class ReportRequestFromExecution extends ReportRequest {
public class ReportRequestWithSessionId extends ReportRequest {
/**
* Идентификатор сессии
*/

View file

@ -0,0 +1,24 @@
package ru.spcex.clearing.platform.messaging.domain.cud.reports;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
/**
* Запрос на построение отчета по списку SessionId
*/
public class ReportRequestWithSessionIdList extends ReportRequest {
/**
* Идентификатор сессии
*/
@JsonProperty
protected List<Long> sessionId;
public List<Long> getSessionId() {
return sessionId;
}
public void setSessionId(List<Long> sessionId) {
this.sessionId = sessionId;
}
}