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 org.springframework.context.annotation.Configuration;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.spcex.clearing.imdg.IMDGDistributedNames; 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.ReportRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestFromRegistry; import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestWithSessionId;
import ru.spcex.clearing.reports.errors.ReportError; import ru.spcex.clearing.reports.errors.ReportError;
import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.clearing.validation.common.ValidationHelper;
import ru.spcex.clearing.validation.common.rules.EnumPresentRule; import ru.spcex.clearing.validation.common.rules.EnumPresentRule;
@ -45,19 +45,19 @@ public class ValidationConfig {
} }
@Bean("reportRequestFromExecutionValidator") @Bean("reportRequestFromExecutionValidator")
public Function<ReportRequestFromExecution, IValidator> reportRequestFromExecutionValidator( public Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) { ) {
return reportRequestFromExecution -> { return reportRequestWithSessionId -> {
ImdgValidationContext<ReportRequestFromExecution> context = new ImdgValidationContext<>(); ImdgValidationContext<ReportRequestWithSessionId> context = new ImdgValidationContext<>();
context.setValidatedObject(reportRequestFromExecution); context.setValidatedObject(reportRequestWithSessionId);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
// todo add dictionary for check reportId // todo add dictionary for check reportId
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
EnumPresentRule.instance("reportId", EnumPresentRule.instance("reportId",
ReportRequestFromExecution::getReportId, ReportRequestWithSessionId::getReportId,
new ReportType[]{ new ReportType[]{
ReportType.OPERATIONAL_LIABILITIES_CLAIMS, ReportType.OPERATIONAL_LIABILITIES_CLAIMS,
ReportType.SUMMARY_LIABILITIES_CLAIMS, ReportType.SUMMARY_LIABILITIES_CLAIMS,
@ -68,26 +68,26 @@ public class ValidationConfig {
ReportError.WrongFieldValue, ReportError.WrongFieldValue,
ReportError.RequiredFieldEmpty), ReportError.RequiredFieldEmpty),
FieldRequiredRule.instance("sessionId", FieldRequiredRule.instance("sessionId",
ReportRequestFromExecution::getSessionId, ReportRequestWithSessionId::getSessionId,
ReportError.RequiredFieldEmpty) ReportError.RequiredFieldEmpty)
); );
}; };
} }
@Bean("reportRequestFromRegistryValidator") @Bean("reportRequestFromRegistryValidator")
public Function<ReportRequestFromRegistry, IValidator> reportRequestFromRegistryValidator( public Function<ReportRequest, IValidator> reportRequestFromRegistryValidator(
Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
) { ) {
return reportRequestFromRegistry -> { return reportRequest -> {
ImdgValidationContext<ReportRequestFromRegistry> context = new ImdgValidationContext<>(); ImdgValidationContext<ReportRequest> context = new ImdgValidationContext<>();
context.setValidatedObject(reportRequestFromRegistry); context.setValidatedObject(reportRequest);
Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
// todo add dictionary for check reportId // todo add dictionary for check reportId
return new ValidatorImpl<>(context, return new ValidatorImpl<>(context,
EnumPresentRule.instance("reportId", EnumPresentRule.instance("reportId",
ReportRequestFromRegistry::getReportId, reportRequest::getReportId,
new ReportType[]{ new ReportType[]{
ReportType.OPERATIONAL_MONEY_CHANGE, ReportType.OPERATIONAL_MONEY_CHANGE,
ReportType.SUMMARY_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 org.springframework.stereotype.Service;
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.reports.ReportRequestFromExecution; import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportRequestFromRegistry; 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.QueueConsumer;
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
import ru.spcex.clearing.util.security.UserRoleVerification; import ru.spcex.clearing.util.security.UserRoleVerification;
@ -25,8 +27,8 @@ public class ReportService extends QueueConsumer implements InitializingBean {
private final IMessageResolver messageResolver; private final IMessageResolver messageResolver;
private final UserRoleVerification userRoleVerification; private final UserRoleVerification userRoleVerification;
private final ValidationHelper validationHelper; private final ValidationHelper validationHelper;
private final Function<ReportRequestFromExecution, IValidator> reportRequestFromExecutionValidator; private final Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator;
private final Function<ReportRequestFromRegistry, IValidator> reportRequestFromRegistryValidator; private final Function<ReportRequest, IValidator> reportRequestFromRegistryValidator;
public ReportService(Consumer<String, Object> kafkaQueue, public ReportService(Consumer<String, Object> kafkaQueue,
Producer<String, Object> kafkaResponseQueue, Producer<String, Object> kafkaResponseQueue,
@ -35,9 +37,9 @@ public class ReportService extends QueueConsumer implements InitializingBean {
UserRoleVerification userRoleVerification, UserRoleVerification userRoleVerification,
ValidationHelper validationHelper, ValidationHelper validationHelper,
@Qualifier("reportRequestFromExecutionValidator") @Qualifier("reportRequestFromExecutionValidator")
Function<ReportRequestFromExecution, IValidator> reportRequestFromExecutionValidator, Function<ReportRequestWithSessionId, IValidator> reportRequestFromExecutionValidator,
@Qualifier("reportRequestFromRegistryValidator") @Qualifier("reportRequestFromRegistryValidator")
Function<ReportRequestFromRegistry, IValidator> reportRequestFromRegistryValidator) { Function<ReportRequest, IValidator> reportRequestFromRegistryValidator) {
super(kafkaQueue, kafkaResponseQueue); super(kafkaQueue, kafkaResponseQueue);
this.imdgProvider = imdgProvider; this.imdgProvider = imdgProvider;
this.messageResolver = messageResolver; this.messageResolver = messageResolver;
@ -49,15 +51,21 @@ public class ReportService extends QueueConsumer implements InitializingBean {
@Override @Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() throws Exception {
callback(ReportRequestFromRegistry.class) callback(ReportRequest.class)
.setConsumer(this::createReportFromRegistry) .setFunction(this::createReport)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FROM_REGISTRY, callbacks::put); .forDestination(Consts.DESTINATION_CREATE_REPORT, callbacks::put);
callback(ReportRequestFromExecution.class) callback(ReportRequestWithSessionId.class)
.setConsumer(this::createReportFromExecution) .setFunction(this::createReportForSessionId)
.forDestination(Consts.DESTINATION_CREATE_REPORT_FROM_EXECUTION, callbacks::put); .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); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return null; if (requestInfoUpdate != null) return null;
@ -67,7 +75,7 @@ public class ReportService extends QueueConsumer implements InitializingBean {
return null; return null;
} }
public RequestInfoUpdate createReportFromExecution(BaseRequest<ReportRequestFromExecution> userRequest) { public RequestInfoUpdate createReportForSessionId(BaseRequest<ReportRequestWithSessionId> userRequest) {
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest);
if (requestInfoUpdate != null) return null; if (requestInfoUpdate != null) return null;
@ -77,5 +85,13 @@ public class ReportService extends QueueConsumer implements InitializingBean {
return null; 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_UPDATE = "bank-account-update";
String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new"; String DESTINATION_BANK_ACCOUNT_NEW = "bank-account-new";
String DESTINATION_CREATE_REPORT_FROM_REGISTRY = "destination-create-report-from-registry"; String DESTINATION_CREATE_REPORT = "destination-create-report";
String DESTINATION_CREATE_REPORT_FROM_EXECUTION = "destination-create-report-from-execution"; 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 @Deprecated
String ACCOUNT_NEW_SDF01 = "account-new-sdf01"; 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 * Запрос отчёта с периодом report-service
*/ */
public class ReportWithPeriodRequest extends ReportRequest { public class ReportRequestWithPeriod extends ReportRequest {
@JsonSerialize(using = LocalDateSerializer.class) @JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty @JsonProperty

View file

@ -3,9 +3,9 @@ package ru.spcex.clearing.platform.messaging.domain.cud.reports;
import com.fasterxml.jackson.annotation.JsonProperty; 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;
}
}