From c76aee2428e7275474592ca484621e0c681aba44 Mon Sep 17 00:00:00 2001 From: akulikov Date: Mon, 15 May 2023 18:06:02 +0300 Subject: [PATCH] report requests validators --- .../config/validation/ValidationConfig.java | 97 +++++++++++++++---- .../reports/services/ReportService.java | 40 ++++++-- .../ReportRequestWithSessionIdList.java | 4 +- 3 files changed, 112 insertions(+), 29 deletions(-) diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/validation/ValidationConfig.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/validation/ValidationConfig.java index 99cb5f87b..69af977cc 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/validation/ValidationConfig.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/config/validation/ValidationConfig.java @@ -6,9 +6,12 @@ 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.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.reports.errors.ReportError; import ru.spcex.clearing.validation.common.ValidationHelper; +import ru.spcex.clearing.validation.common.rules.EndDtAfterStartDtRule; import ru.spcex.clearing.validation.common.rules.EnumPresentRule; import ru.spcex.clearing.validation.common.rules.FieldRequiredRule; import ru.spcex.platform.classes.base.SpcexObjectBase; @@ -16,6 +19,7 @@ import ru.spcex.platform.enumeration.ReportType; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.validation.ImdgValidationContext; +import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.validation.IValidator; import ru.spcex.platform.utils.validation.ValidatorImpl; @@ -44,8 +48,32 @@ public class ValidationConfig { return new ValidationHelper(messageResolver); } - @Bean("reportRequestFromExecutionValidator") - public Function reportRequestFromExecutionValidator( + @Bean("reportRequestValidator") + public Function reportRequestValidator( + Map> imdgForValidation + ) { + return reportRequest -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(reportRequest); + + Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); + // todo add dictionary for check reportId + + return new ValidatorImpl<>(context, + EnumPresentRule.instance("reportId", + ReportRequest::getReportId, + new IEnumKey[]{ + ReportType.SUMMARY_LIABILITIES_CLAIMS, + ReportType.SUMMARY_MONEY_CHANGE + }, + ReportError.WrongFieldValue, + ReportError.RequiredFieldEmpty) + ); + }; + } + + @Bean("reportRequestWithSessionIdValidator") + public Function reportRequestWithSessionIdValidator( Map> imdgForValidation ) { return reportRequestWithSessionId -> { @@ -58,10 +86,9 @@ public class ValidationConfig { return new ValidatorImpl<>(context, EnumPresentRule.instance("reportId", ReportRequestWithSessionId::getReportId, - new ReportType[]{ + new IEnumKey[]{ ReportType.OPERATIONAL_LIABILITIES_CLAIMS, - ReportType.SUMMARY_LIABILITIES_CLAIMS, - ReportType.PERIOD_LIABILITIES_CLAIMS, + ReportType.OPERATIONAL_MONEY_CHANGE, ReportType.EXECUTED_DEAL_REPORT, ReportType.UNFULFILLED_DEAL_REPORT }, @@ -69,35 +96,71 @@ public class ValidationConfig { ReportError.RequiredFieldEmpty), FieldRequiredRule.instance("sessionId", ReportRequestWithSessionId::getSessionId, - ReportError.RequiredFieldEmpty) + ReportError.RequiredFieldEmpty, + sessionId -> sessionId > 0 ? null : ReportError.WrongFieldValue) ); }; } - @Bean("reportRequestFromRegistryValidator") - public Function reportRequestFromRegistryValidator( + @Bean("reportRequestWithSessionIdListValidator") + public Function reportRequestWithSessionIdListValidator( Map> imdgForValidation ) { - return reportRequest -> { - ImdgValidationContext context = new ImdgValidationContext<>(); - context.setValidatedObject(reportRequest); + return reportRequestWithSessionIdList -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(reportRequestWithSessionIdList); Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); // todo add dictionary for check reportId return new ValidatorImpl<>(context, EnumPresentRule.instance("reportId", - reportRequest::getReportId, - new ReportType[]{ - ReportType.OPERATIONAL_MONEY_CHANGE, - ReportType.SUMMARY_MONEY_CHANGE, - ReportType.PERIOD_MONEY_CHANGE + ReportRequestWithSessionIdList::getReportId, + new IEnumKey[]{ + ReportType.PERIOD_LIABILITIES_CLAIMS }, ReportError.WrongFieldValue, - ReportError.RequiredFieldEmpty) + ReportError.RequiredFieldEmpty), + FieldRequiredRule.instance("sessionIdList", + ReportRequestWithSessionIdList::getSessionIdList, + ReportError.RequiredFieldEmpty, + sessionIdList -> { + if (sessionIdList == null || sessionIdList.isEmpty()) + return ReportError.WrongFieldValue; + return null; + }) + ); + }; + } + + @Bean("reportRequestWithPeriodValidator") + public Function reportRequestWithPeriodValidator( + Map> imdgForValidation + ) { + return reportRequestWithPeriod -> { + ImdgValidationContext context = new ImdgValidationContext<>(); + context.setValidatedObject(reportRequestWithPeriod); + + Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); + // todo add dictionary for check reportId + + return new ValidatorImpl<>(context, + EnumPresentRule.instance("reportId", + ReportRequestWithPeriod::getReportId, + new IEnumKey[]{ + ReportType.PERIOD_MONEY_CHANGE, + }, + ReportError.WrongFieldValue, + ReportError.RequiredFieldEmpty), + EndDtAfterStartDtRule.instance("endDate", "startDate", + ReportRequestWithPeriod::getEndDate, + ReportRequestWithPeriod::getStartDate, + ReportError.RequiredFieldEmpty, + ReportError.WrongFieldValue) ); }; } } + diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java index 9e9c041f3..6e1911e25 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportService.java @@ -27,8 +27,10 @@ public class ReportService extends QueueConsumer implements InitializingBean { private final IMessageResolver messageResolver; private final UserRoleVerification userRoleVerification; private final ValidationHelper validationHelper; - private final Function reportRequestFromExecutionValidator; - private final Function reportRequestFromRegistryValidator; + private final Function reportRequestValidator; + private final Function reportRequestWithSessionIdValidator; + private final Function reportRequestWithSessionIdListValidator; + private final Function reportRequestWithPeriodValidator; public ReportService(Consumer kafkaQueue, Producer kafkaResponseQueue, @@ -36,17 +38,23 @@ public class ReportService extends QueueConsumer implements InitializingBean { IMessageResolver messageResolver, UserRoleVerification userRoleVerification, ValidationHelper validationHelper, - @Qualifier("reportRequestFromExecutionValidator") - Function reportRequestFromExecutionValidator, - @Qualifier("reportRequestFromRegistryValidator") - Function reportRequestFromRegistryValidator) { + @Qualifier("reportRequestValidator") + Function reportRequestValidator, + @Qualifier("reportRequestWithSessionIdValidator") + Function reportRequestWithSessionIdValidator, + @Qualifier("reportRequestWithSessionIdListValidator") + Function reportRequestWithSessionIdListValidator, + @Qualifier("reportRequestWithPeriodValidator") + Function ReportRequestWithPeriodValidator) { super(kafkaQueue, kafkaResponseQueue); this.imdgProvider = imdgProvider; this.messageResolver = messageResolver; this.userRoleVerification = userRoleVerification; this.validationHelper = validationHelper; - this.reportRequestFromExecutionValidator = reportRequestFromExecutionValidator; - this.reportRequestFromRegistryValidator = reportRequestFromRegistryValidator; + this.reportRequestValidator = reportRequestValidator; + this.reportRequestWithSessionIdValidator = reportRequestWithSessionIdValidator; + this.reportRequestWithSessionIdListValidator = reportRequestWithSessionIdListValidator; + reportRequestWithPeriodValidator = ReportRequestWithPeriodValidator; } @Override @@ -69,7 +77,7 @@ public class ReportService extends QueueConsumer implements InitializingBean { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); if (requestInfoUpdate != null) return null; - requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestFromRegistryValidator); + requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestValidator); if (requestInfoUpdate != null) return null; return null; @@ -79,17 +87,29 @@ public class ReportService extends QueueConsumer implements InitializingBean { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); if (requestInfoUpdate != null) return null; - requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestFromExecutionValidator); + requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdValidator); if (requestInfoUpdate != null) return null; return null; } public RequestInfoUpdate createReportForSessionIdList(BaseRequest userRequest) { + RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); + if (requestInfoUpdate != null) return null; + + requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithSessionIdListValidator); + if (requestInfoUpdate != null) return null; + return null; } public RequestInfoUpdate createReportForPeriod(BaseRequest userRequest) { + RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); + if (requestInfoUpdate != null) return null; + + requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, reportRequestWithPeriodValidator); + if (requestInfoUpdate != null) return null; + return null; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java index 3b85f542e..2202f7726 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionIdList.java @@ -14,11 +14,11 @@ public class ReportRequestWithSessionIdList extends ReportRequest { @JsonProperty protected List sessionId; - public List getSessionId() { + public List getSessionIdList() { return sessionId; } - public void setSessionId(List sessionId) { + public void setSessionIdList(List sessionId) { this.sessionId = sessionId; } }