From dea2954ec323ef255d54fa9f67ea8e4c5da1702d Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 24 May 2023 16:54:26 +0300 Subject: [PATCH 1/3] http://jira.mfd.msk:8088/browse/CLS-290 fix validators --- .../clearing/service/validation/Sdf57ValidationRule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java index b5c2414ae..cbb0a4c86 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf57ValidationRule.java @@ -33,7 +33,7 @@ public enum Sdf57ValidationRule implements IValidationRule context.storeObject(ValidationStored.Sdf57AccountCred, accountCred)); } if (accountDebFound.isEmpty() && accountCredFound.isEmpty()) { - return of(ClearingError.AccountNotPresent, String.format("accDeb = '%s'/ accDred = '%s'", + return of(ClearingError.AccountNotPresent, String.format("accDeb = '%s'/ accCred = '%s'", sdf57.getC_acc_deb(), sdf57.getC_acc_cred())); } return empty(); From f13fba18fd4ad00123f91298d2a0fa813110e86e Mon Sep 17 00:00:00 2001 From: AKurakin Date: Wed, 24 May 2023 17:41:19 +0300 Subject: [PATCH 2/3] =?UTF-8?q?securities-service=20http://jira.mfd.msk:80?= =?UTF-8?q?88/browse/CLS-258=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../securities/EquitySecurityController.java | 3 +- .../FixedIncomeSecurityController.java | 3 +- .../common/rules/EndDtAfterStartDtRule.java | 2 +- .../cud/MoneyMarketSecurityService.java | 10 ++++- ...BySecuritySymbolAndWorkflowStatusActv.java | 6 +-- .../MoneyMarketSecurityServiceTest.java | 41 +++++++++++++++++++ 6 files changed, 55 insertions(+), 10 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityController.java index 6a6542568..1a01f06a0 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityController.java @@ -77,8 +77,7 @@ public class EquitySecurityController extends AbstractQueueController { @ResponseBody public CommonGetAllResponse getAll() { Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_EquitySecurity, - EquitySecurity.class, - Map.of("workflowStatus", Status.Active.getKey())); + EquitySecurity.class); CommonGetAllResponse response = new CommonGetAllResponse(); response.fromEntity(all); return response; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityController.java index 527554d73..58f7b474b 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityController.java @@ -77,8 +77,7 @@ public class FixedIncomeSecurityController extends AbstractQueueController { @ResponseBody public CommonGetAllResponse getAll() { Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_FixedIncomeSecurity, - FixedIncomeSecurity.class, - Map.of("workflowStatus", Status.Active.getKey())); + FixedIncomeSecurity.class); CommonGetAllResponse response = new CommonGetAllResponse(); response.fromEntity(all); return response; diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java index 169e5589f..1403e9338 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EndDtAfterStartDtRule.java @@ -80,7 +80,7 @@ public record EndDtAfterStartDtRule( LocalDate startDt = getterStartDt.apply(validatedObject); if (endDt == null) return required ? of(errorEmptyRequiredValue, endDtFieldName) : Optional.empty(); if (startDt == null) return required ? of(errorEmptyRequiredValue, startDtFieldName) : Optional.empty(); - if (endDt.isAfter(startDt)) return of(errorEndDtAfterStartDt, startDtFieldName, endDtFieldName); + if (startDt.isAfter(endDt)) return of(errorEndDtAfterStartDt, startDtFieldName, endDtFieldName); return Optional.empty(); } } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java index 3b37d72a7..ecee7257f 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java @@ -102,8 +102,14 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial ImdgTransaction transaction = imdgProvider.newTransaction(); MoneyMarketSecurityNewRequest req = userRequest.getRequestPayload(); - RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.mmsNewValidator()); - if (requestInfoUpdate != null) return requestInfoUpdate; + { + RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); + if (requestInfoUpdate != null) return requestInfoUpdate; + } + { + RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, validation.mmsNewValidator()); + if (requestInfoUpdate != null) return requestInfoUpdate; + } log.debug("MoneyMarketSecurityNewRequest received"); MoneyMarketSecurity mms = new MoneyMarketSecurity(); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbolAndWorkflowStatusActv.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbolAndWorkflowStatusActv.java index a65516a81..397df369b 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbolAndWorkflowStatusActv.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/NotPresentBySecuritySymbolAndWorkflowStatusActv.java @@ -4,7 +4,7 @@ import org.springframework.util.StringUtils; import ru.spcex.clearing.securities.errors.SecuritiesError; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol; -import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.enumeration.WorkflowStatus; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.validation.ImdgValidationContext; import ru.spcex.platform.utils.enumeration.EnumMessage; @@ -30,11 +30,11 @@ public class NotPresentBySecuritySymbolAndWorkflowStatusActv imdg = context.obtainMap(mapName, clazz); if(!StringUtils.hasText(action.getSecuritySymbol())) { - return of(SecuritiesError.RequiredFieldIsEmpty, "securitySymbole"); + return of(SecuritiesError.RequiredFieldIsEmpty, "securitySymbol"); } T object = imdg.getSingleObjectByFieldValues(Map.of( "securitySymbol", action.getSecuritySymbol(), - "workflowStatus", Status.Active.getKey())); + "workflowStatus", WorkflowStatus.Active.getKey())); if (object != null) { return of(errorEnum); } else { diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java index 80f5141d0..8c574787e 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityServiceTest.java @@ -88,6 +88,47 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest { LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } +// @Test todo тест с проверкой валидатора +// public void testNewMoneyMarketSecurity2() { +// clearAllInImdg(moneyMarketSecurityMap); +// final String TOPIC = Consts.DESTINATION_MONEY_MARKET_SECURITY_NEW; +// +// final MoneyMarketSecurity moneyMarketSecurityPrediction = moneyMarketSecurityFactory +// .getMoneyMarketSecurity(); +// final MoneyMarketSecurityNewRequest keyRequest = moneyMarketSecurityFactory +// .getMoneyMarketSecurityNewRequest(); +// Listing listingPrediction = ListingBuilder.builder() +// .append(moneyMarketSecurityPrediction).append(keyRequest).build(); +// +// // Создание копии инструмента - не должен задублировать его +// MoneyMarketSecurity existMMS = new MoneyMarketSecurity(); +// existMMS.setId(123L); +// existMMS.setSecuritySymbol(keyRequest.getSecuritySymbol()); +// existMMS.setWorkflowStatus(WorkflowStatus.Active.getKey()); +// moneyMarketSecurityMap.insert(existMMS); +// +// //ACT +// String jsonString = getJsonStringForNew(keyRequest, ID); +// +// addRecordToKafka((MockConsumer) moneyMarketSecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); +// +// //ASSERT +// waitingWhenTryAddRecordAndCheckError(ID, mockProducer, +// "1010" //SecuritiesError.InstrumentAlreadyExists +// , Arrays.asList("")); +// waitingSendAndCheckRecord(ID, mockProducer); +// +// MoneyMarketSecurity moneyMarketSecurityResult = moneyMarketSecurityMap.getSingleObjectBySQL(String.format("fullName = %s", moneyMarketSecurityFactory.getFullName())); +// moneyMarketSecurityPrediction.setId(moneyMarketSecurityResult.getId()); +// moneyMarketSecurityPrediction.setSecurityId(moneyMarketSecurityResult.getSecurityId()); +// MONEY_MARKET_SECURITY_MATCHER.assertMatch(moneyMarketSecurityResult, moneyMarketSecurityPrediction); +// +// Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", moneyMarketSecurityPrediction.getId())); +// listingPrediction.setId(listingResult.getId()); +// listingPrediction.setSecurityId(listingResult.getSecurityId()); +// LISTING_MATCHER.assertMatch(listingResult, listingPrediction); +// } + /** * {@link MoneyMarketSecurityService#deleteMoneyMarket(BaseRequest)}
* Тест проверяет удаление сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.
From 4aa53c223be8dc25256b461261f99aa96fd149ed Mon Sep 17 00:00:00 2001 From: AKurakin Date: Wed, 24 May 2023 18:02:39 +0300 Subject: [PATCH 3/3] securities-service . --- .../securities/service/cud/MoneyMarketSecurityService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java index ecee7257f..d9f5bd9e2 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/MoneyMarketSecurityService.java @@ -171,6 +171,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial .setMessage(errorMsg); } MoneyMarketSecurity mms = validator.getStored(Stored.PresentById); + if (mms == null) log.error("Validator return null stored mms object."); Instant updateTime = Instant.now(); mms.setUpdated(updateTime); mms.setStartDate(req.getStartDate()); @@ -222,6 +223,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial } Instant updateTime = Instant.now(); MoneyMarketSecurity mms = validator.getStored(Stored.PresentById); + if (mms == null) log.error("Validator return null stored mms object."); mms.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); mms.setUpdated(updateTime); moneyMarketSecurityMap.update(mms);