From b67248a0af3e227d42c1971aab4c16cd05485a0f Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Thu, 27 Jun 2024 13:03:53 +0300 Subject: [PATCH] remove all comments --- .../validation/AccountValidationConfig.java | 43 +- .../BankAccountValidationConfig.java | 3 +- .../ClearingAccountValidationConfig.java | 11 +- .../DepoAccountValidationConfig.java | 11 +- .../validation/SameAccountValidationRule.java | 7 +- ...gClearingRegistryListValidationConfig.java | 23 +- ...adingClearingRegistryValidationConfig.java | 37 +- .../config/validation/ValidationConfig.java | 2 - .../clearing/account/errors/AccountError.java | 5 +- .../account/service/AccountHelper.java | 7 - .../account/service/AccountService.java | 7 +- .../account/service/BankAccountService.java | 1 - .../service/ClearingAccountService.java | 83 +-- .../account/service/ClientCodeService.java | 54 +- .../account/service/DepoAccountService.java | 13 +- .../service/InformationAccountService.java | 27 +- .../account/service/SDFProcessService.java | 26 +- .../TradingClearingRegistryListService.java | 56 +- .../TradingClearingRegistryService.java | 41 +- .../service/v2/facade/ClientCodeFacade.java | 42 -- .../facade/TradingClearingRegistryFacade.java | 43 +- .../listeners/ClientCodeMessageListener.java | 6 - .../validation/AccountValidationRule.java | 1 - .../BackendClientCodeValidationRule.java | 4 +- .../account/service/AccountServiceTest.java | 24 +- .../service/AccountSymbolsServiceTest.java | 15 +- .../service/BankAccountServiceTest.java | 83 +-- .../service/ClearingAccountServiceTest.java | 16 - .../service/ClientCodeServiceTest.java | 142 +--- .../InformationAccountServiceTest.java | 8 +- ...radingClearingRegistryListServiceTest.java | 59 +- .../TradingClearingRegistryServiceTest.java | 24 +- .../clearing/account/service/UtilsTest.java | 45 ++ .../backendapi/BackendApiApplication.java | 4 - .../config/BackEndApiImdgConfig.java | 11 +- .../clearing/backendapi/config/WebConfig.java | 1 - .../queue/AbstractQueueController.java | 3 - .../account/InformationAccountController.java | 13 +- .../queue/history/HistController.java | 11 +- .../history/condition/ConditionProvider.java | 1 - .../condition/HistorySubscription.java | 1 - .../queue/register/RegistryController.java | 24 +- ...TradingClearingRegistryListController.java | 17 +- .../queue/scheduler/LauncherController.java | 4 +- .../queue/securities/SecurityController.java | 11 +- .../controller/queue/user/UserController.java | 4 - .../queue/utilities/StatementController.java | 2 - .../TradingClearingRegistryListNewAction.java | 4 - .../CurrencyPairSecurityNewAction.java | 8 - .../CurrencyPairSecurityUpdateAction.java | 8 - .../entity/company/CompanyBackendGetAll.java | 19 - ...TradingClearingRegistryBackendGetById.java | 6 - .../response/system/RequestInfoResponse.java | 5 - .../backendapi/filter/ClearingCorsFilter.java | 24 +- .../filter/CorsAllowedOriginsService.java | 1 - .../backendapi/meta/ActionElement.java | 2 - .../backendapi/meta/CudMetaService.java | 3 - .../backendapi/meta/FieldExtracted.java | 6 +- .../backendapi/meta/GetResponseFactory.java | 90 +-- .../clearing/backendapi/meta/MetaServer.java | 51 +- .../clearing/backendapi/meta/RfHelper.java | 2 +- ...oakRestTemplateAuthenticationProvider.java | 21 +- .../backendapi/security/KeycloakUtils.java | 11 +- .../backendapi/security/LoginController.java | 31 +- .../security/RestTemplateConfig.java | 9 +- .../security/SimpleUserDetailService.java | 5 +- .../security/WebSecurityConfig.java | 7 +- .../backendapi/service/IOperator.java | 11 - .../backendapi/service/IStateLoader.java | 17 +- .../service/RequestInfoAccepter.java | 13 +- .../backendapi/service/UserAuthProcessor.java | 4 +- .../backendapi/service/impl/OperatorImpl.java | 8 - .../validation/ActionMetaValidation.java | 23 +- .../src/main/resources/meta/data.xml | 2 +- .../src/main/resources/meta/xsl/ddl.xsl | 2 +- .../src/main/resources/meta/xsl/java.xsl | 24 +- .../queue/AbstractControllerTest.java | 225 +++---- .../queue/account/AccountControllerTest.java | 37 +- .../account/AccountSymbolsControllerTest.java | 24 - .../account/BankAccountControllerTest.java | 121 +--- .../ClearingAccountControllerTest.java | 9 - .../account/ClientCodeControllerTest.java | 81 +-- .../account/DepoAccountControllerTest.java | 9 - .../InformationAccountControllerTest.java | 9 - .../ClearingMemberCategoryControllerTest.java | 44 -- .../queue/company/CompanyControllerTest.java | 27 - .../company/CompanyInfoControllerTest.java | 63 +- .../company/CompanyRoleSetControllerTest.java | 10 - .../company/CompanySymbolControllerTest.java | 29 - .../queue/company/ContactControllerTest.java | 41 -- .../ProfileDocumentControllerTest.java | 9 - .../queue/company/RelationControllerTest.java | 20 +- .../ExecutionDepositControllerTest.java | 9 - .../ExecutionFondControllerTest.java | 9 - .../InDocumentJournalControllerTest.java | 9 - .../ManagementJournalControllerTest.java | 9 - .../OutDocumentJournalControllerTest.java | 9 - .../queue/misc/CurrencyControllerTest.java | 9 - .../queue/misc/ErrorTextControllerTest.java | 7 - .../queue/misc/ListingControllerTest.java | 9 - .../queue/misc/MarketControllerTest.java | 9 - .../misc/NotificationControllerTest.java | 19 +- .../queue/misc/SCrossRateControllerTest.java | 9 - .../queue/misc/SessionControllerTest.java | 19 +- .../PaymentInstructionControllerTest.java | 21 +- ...ttedLiabilitiesRegisterControllerTest.java | 9 - .../ContractRegisterControllerTest.java | 9 - ...eredLiabilitiesRegisterControllerTest.java | 9 - .../DepoBalanceRegisterControllerTest.java | 9 - ...mentInstructionRegisterControllerTest.java | 9 - ...ludeLiabilitiesRegisterControllerTest.java | 9 - .../ExecutionRegisterControllerTest.java | 10 - .../register/GatewayResultControllerTest.java | 9 - .../LiabilitiesRegisterControllerTest.java | 10 - .../MoneyBalanceRegisterControllerTest.java | 10 - .../queue/register/PairSdfControllerTest.java | 9 - .../register/RegistryControllerTest.java | 13 +- .../ReportRegisterControllerTest.java | 9 - ...TradingClearingRegistryControllerTest.java | 72 +- .../ClearingCalendarControllerTest.java | 33 - .../scheduler/LauncherControllerTest.java | 104 +-- .../PlannerAllTodayControllerTest.java | 19 +- .../scheduler/PlannerControllerTest.java | 19 +- .../PlannerTemplateControllerTest.java | 33 - .../CouponPeriodControllerTest.java | 9 - .../EquitySecurityControllerTest.java | 37 +- .../FixedIncomeCashFlowControllerTest.java | 9 - .../FixedIncomeSecurityControllerTest.java | 37 +- .../MoneyMarketSecurityControllerTest.java | 37 +- .../securities/SecurityControllerTest.java | 9 - .../queue/user/UserControllerTest.java | 28 +- .../user/UserRoleSessionControllerTest.java | 9 - .../utilities/StatementControllerTest.java | 29 +- .../utilities/UserSettingsControllerTest.java | 19 +- .../cud/QueueSuccessResponseTest.java | 1 - .../GetResponseFactoryTestConfiguration.java | 4 - .../validation/ActionMetaValidationTest.java | 4 +- .../FieldNameMetaValidationTest.java | 2 - .../balance/config/SdfExecutorsConfig.java | 4 +- .../balance/config/ValidationConfig.java | 10 +- .../service/AccountBalanceService.java | 10 +- .../balance/service/AccountResult.java | 2 +- .../balance/service/Sdf08Service.java | 5 +- .../balance/service/Sdf09Executor.java | 176 ----- .../balance/service/Sdf16Executor.java | 6 +- .../balance/service/StatementService.java | 7 +- .../validation/Sdf09ValidationRule.java | 34 +- .../balance/service/AbstractServiceTest.java | 38 +- .../service/AccountBalanceServiceTest.java | 25 - .../balance/service/Sdf08ServiceTest.java | 22 +- .../balance/service/Sdf09ExecutorTest.java | 243 ------- .../balance/service/Sdf16ExecutorTest.java | 50 +- .../clearing/balance/utils/ImapEvent.java | 4 +- .../balance/utils/MatcherFactory.java | 5 - .../validation/Sdf16ValidationRuleTest.java | 4 +- .../clearing/classes/ConstSerializable.java | 3 - .../classes/objects/BusinessEvent.java | 17 +- .../classes/objects/BusinessObject.java | 3 - .../classes/statics/data/account/Account.java | 5 - .../statics/data/account/AccountBalance.java | 5 - .../data/account/AccountBalanceHistory.java | 5 - .../statics/data/account/AccountHistory.java | 6 +- .../statics/data/account/AccountSymbols.java | 5 - .../data/account/AccountSymbolsHistory.java | 5 - .../statics/data/account/BankAccount.java | 5 - .../data/account/BankAccountHistory.java | 6 +- .../statics/data/account/ClearingAccount.java | 5 - .../data/account/ClearingAccountHistory.java | 6 +- .../statics/data/account/ClientCode.java | 5 - .../data/account/ClientCodeHistory.java | 5 - .../statics/data/account/DepoAccount.java | 5 - .../data/account/DepoAccountHistory.java | 5 - .../data/account/InformationAccount.java | 5 - .../account/InformationAccountHistory.java | 6 +- .../data/company/ClearingMemberCategory.java | 5 - .../ClearingMemberCategoryHistory.java | 5 +- .../classes/statics/data/company/Company.java | 19 +- .../statics/data/company/CompanyHistory.java | 3 - .../statics/data/company/CompanyRoleSet.java | 3 - .../statics/data/company/CompanySymbols.java | 5 +- .../data/company/CompanySymbolsHistory.java | 3 - .../company/SettlementHouseProperties.java | 5 - .../SettlementHousePropertiesHistory.java | 5 - .../data/company/relation/Relation.java | 5 - .../company/relation/RelationHistory.java | 6 +- .../data/execution/ExecutionCurrency.java | 31 +- .../execution/ExecutionCurrencyHistory.java | 5 - .../execution/ExecutionDepositHistory.java | 5 - .../statics/data/execution/ExecutionFond.java | 5 - .../data/execution/ExecutionFondHistory.java | 5 - .../data/instrument/issue/CouponPeriod.java | 20 +- .../instrument/issue/CouponPeriodHistory.java | 3 - .../data/instrument/issue/EquitySecurity.java | 15 +- .../instrument/issue/FixedIncomeCashFlow.java | 5 - .../instrument/issue/FixedIncomeSecurity.java | 31 +- .../data/journal/InDocumentJournal.java | 5 - .../data/journal/OutDocumentJournal.java | 5 - .../statics/data/messages/ErrorText.java | 5 - .../statics/data/misc/CurrencyHistory.java | 6 +- .../classes/statics/data/misc/KeyRate.java | 5 - .../statics/data/misc/ListingHistory.java | 6 +- .../data/misc/MarketDataLiquidation.java | 5 - .../statics/data/misc/MarketHistory.java | 6 +- .../data/misc/NotificationHistory.java | 5 - .../classes/statics/data/misc/SCrossRate.java | 30 +- .../classes/statics/data/misc/STrades.java | 5 - .../statics/data/misc/SessionHistory.java | 5 - .../statics/data/payment/Operation.java | 5 - .../statics/data/profile/CompanyInfo.java | 23 +- .../classes/statics/data/profile/Contact.java | 5 +- .../statics/data/profile/ProfileDocument.java | 5 +- .../data/profile/ProfileDocumentHistory.java | 3 - .../register/AdmittedLiabilitiesRegister.java | 32 +- .../register/CoveredLiabilitiesRegister.java | 5 - .../data/register/DepoBalanceRegister.java | 26 +- .../DepoPaymentInstructionRegister.java | 26 +- .../register/ExcludeLiabilitiesRegister.java | 44 +- .../data/register/ExecutionRegister.java | 56 +- .../statics/data/register/GatewayResult.java | 5 - .../data/register/LiabilitiesRegister.java | 44 +- .../data/register/MoneyBalanceRegister.java | 5 - .../MoneyPaymentInstructionRegister.java | 26 +- .../statics/data/register/PairSdf.java | 7 +- .../statics/data/register/ReportRegister.java | 3 - .../statics/data/registry/Registry.java | 7 +- .../data/registry/RegistryHistory.java | 5 - .../registry/TradingClearingRegistry.java | 5 - .../TradingClearingRegistryHistory.java | 5 - .../registry/TradingClearingRegistryList.java | 5 - .../TradingClearingRegistryListHistory.java | 5 - .../data/scheduler/ClearingCalendar.java | 5 - .../statics/data/scheduler/Launcher.java | 5 - .../statics/data/scheduler/Planner.java | 5 - .../data/scheduler/PlannerAllToday.java | 5 - .../data/scheduler/PlannerTemplate.java | 5 - .../classes/statics/data/sdf/SDf01.java | 5 - .../classes/statics/data/sdf/SDf02.java | 5 - .../classes/statics/data/sdf/SDf03.java | 5 - .../classes/statics/data/sdf/SDf04.java | 5 - .../classes/statics/data/sdf/SDf05.java | 5 - .../classes/statics/data/sdf/SDf06.java | 8 +- .../classes/statics/data/sdf/SDf07.java | 5 - .../classes/statics/data/sdf/SDf08.java | 5 - .../classes/statics/data/sdf/SDf09.java | 5 - .../classes/statics/data/sdf/SDf10.java | 5 - .../classes/statics/data/sdf/SDf11.java | 5 - .../classes/statics/data/sdf/SDf12.java | 5 - .../classes/statics/data/sdf/SDf13.java | 5 - .../classes/statics/data/sdf/SDf14.java | 5 - .../classes/statics/data/sdf/SDf16.java | 5 - .../classes/statics/data/sdf/SDf17.java | 5 - .../classes/statics/data/sdf/SDf18.java | 5 - .../classes/statics/data/sdf/SDf20.java | 5 - .../classes/statics/data/sdf/SDf21.java | 5 - .../classes/statics/data/sdf/SDf51.java | 17 +- .../classes/statics/data/sdf/SDf52.java | 32 +- .../classes/statics/data/sdf/SDf53.java | 5 - .../classes/statics/data/sdf/SDf54.java | 5 - .../classes/statics/data/sdf/SDf55.java | 5 - .../classes/statics/data/sdf/SDf56.java | 5 - .../classes/statics/data/sdf/SDf57.java | 5 - .../data/security/CurrencyPairSecurity.java | 12 - .../security/CurrencyPairSecurityHistory.java | 5 - .../data/security/MoneyMarketSecurity.java | 5 - .../security/MoneyMarketSecurityHistory.java | 3 - .../statics/data/security/Security.java | 5 - .../data/security/SecurityHistory.java | 6 +- .../security/TradedMoneyMarketSecurity.java | 5 - .../statics/data/statement/Statement.java | 5 - .../classes/statics/data/user/User.java | 6 - .../statics/data/user/UserConnect.java | 5 - .../statics/data/user/UserConnectHistory.java | 6 +- .../statics/data/user/UserHistory.java | 5 - .../statics/data/user/UserRoleSession.java | 5 - .../statics/data/user/UserSettings.java | 5 - .../scheduler/PlannerAllTodayBuilder.java | 3 - .../clearing/config/ValidationConfig.java | 257 ++++--- .../config/element/SessionStageSettings.java | 1 - .../config/session/MachineTestService.java | 6 - .../config/session/StateActionAdapter.java | 5 - .../config/session/StateBnConfig.java | 36 +- .../spcex/clearing/error/ClearingError.java | 1 - .../spcex/clearing/service/AnltSearcher.java | 1 - .../ru/spcex/clearing/service/Clearing.java | 48 +- .../clearing/service/ClearingService.java | 1 - .../clearing/service/EventsReceiver.java | 153 +++-- .../service/LauncherCommandReceiver.java | 4 +- .../clearing/service/RegistryService.java | 114 ++-- .../spcex/clearing/service/Sdf12Creator.java | 4 +- .../spcex/clearing/service/Sdf54Creator.java | 68 +- .../service/SdfCreatorBySTLDPayment.java | 65 +- .../clearing/service/StatementService.java | 176 ++--- .../spcex/clearing/service/TcrSearcher.java | 1 - .../service/VerificationResultComponent.java | 65 +- .../LiabilitiesClaimsAssetsCreator.java | 27 +- .../LiabilitiesClaimsMoneyCreator.java | 2 +- .../builder/PaymentInstructionBuilder.java | 18 +- ...aymentInstructionBuilderFinalMkrDeals.java | 39 +- ...aymentInstructionBuilderForSecurities.java | 29 +- .../builder/PaymentInstructionBuilderV2.java | 6 +- .../builder/PaymentInstructionCreator.java | 630 +++++------------- .../service/builder/RegistryBuilder.java | 9 +- .../builder/RegistrySecurityBuilder.java | 23 +- .../service/builder/Sdf03Builder.java | 23 +- .../service/builder/Sdf11Builder.java | 72 -- .../execution/ExecutionCurrencyComponent.java | 81 +-- .../execution/ExecutionDepositComponent.java | 44 +- .../execution/ExecutionFondComponent.java | 66 +- .../service/executors/Sdf01Executor.java | 52 +- .../service/executors/Sdf04Executor.java | 2 - .../service/executors/Sdf06Executor.java | 44 +- .../service/executors/Sdf08Executor.java | 35 +- .../service/executors/Sdf10Executor.java | 41 +- .../service/executors/Sdf13Executor.java | 23 +- .../service/executors/Sdf20Executor.java | 49 +- .../service/executors/Sdf21Executor.java | 111 +-- .../service/executors/Sdf57Executor.java | 312 ++++----- .../service/executors/SdfLegacyExecutor.java | 20 +- .../service/order/ExecutionDepositSorter.java | 45 +- .../order/PaymentInstructionSorter.java | 4 +- .../PaymentInstructionOutboundService.java | 45 +- .../service/registry/AssetTBFProcessing.java | 48 +- .../clearing/service/registry/DmiService.java | 90 +-- .../service/registry/RegistryManager.java | 19 +- .../service/validation/AnltAccLoad.java | 10 +- .../ExecutionDepositValidationRule.java | 25 +- .../IdentificationFundsValidationRule.java | 2 +- .../validation/RefundDateValidationRule.java | 2 +- .../RegistryStep3ValidationRule.java | 19 +- .../ReturnDepositValidationRule.java | 47 +- .../validation/STradesValidationRule.java | 39 +- .../validation/Sdf06NewValidationRule.java | 27 +- .../validation/Sdf08NewValidationRule.java | 2 +- .../validation/Sdf10ValidationRule.java | 23 +- .../SplitDepositRequestValidationRule.java | 26 +- .../session/stage/AbstractSession.java | 5 - .../session/stage/CurrencySession.java | 33 +- .../session/stage/FinalMkrSession.java | 56 +- .../clearing/session/stage/ISessionStage.java | 1 - .../session/stage/IntermediateMkrSession.java | 49 +- .../stage/PrimaryAuctionB0Session.java | 64 +- .../stage/PrimaryAuctionBnSession.java | 72 +- .../stage/PrimaryAuctionT0Session.java | 66 +- .../session/stage/ReturnDepositSession.java | 37 +- .../stage/SecondaryAuctionT0Session.java | 34 +- .../session/stage/SessionManager.java | 4 +- .../clearing/session/stage/SessionStage.java | 1 - .../session/stage/SessionTerminator.java | 4 +- .../clearing/session/stage/TaskType.java | 36 - .../clearing/session/stage/UnitedSession.java | 42 +- .../session/stage/impl/BalanceRevise.java | 28 +- .../session/stage/impl/DealsPrepare.java | 2 +- .../stage/impl/EndStageNotification.java | 11 +- .../session/stage/impl/FinishingSession.java | 58 +- .../stage/impl/FormingPaymentInstruction.java | 155 +---- .../impl/FormingPaymentInstructionAssets.java | 139 ++-- ...ormingPaymentInstructionDealsFinalMkr.java | 100 +-- ...ormingPaymentInstructionDepositReturn.java | 126 ++-- .../FormingPaymentInstructionReturnMkr.java | 71 +- .../FormingPaymentInstructionSecondaryT0.java | 77 +-- .../FormingPaymentInstructionSecurities.java | 122 ++-- .../stage/impl/FormingRegistersOnOS.java | 21 +- .../stage/impl/GatewayBatchRequester.java | 1 - .../session/stage/impl/GatewayRequester.java | 1 - .../stage/impl/InclusionObligations.java | 10 - .../stage/impl/InspectionObligations.java | 22 +- .../InspectionObligationsDepositReturn.java | 77 +-- .../session/stage/impl/PlanBalanceCalc.java | 17 +- .../stage/impl/RegistryCurrBuilder.java | 26 - .../stage/impl/RegistryDepoBuilder.java | 2 - .../stage/impl/RegistryFondBuilder.java | 6 +- .../RequirementsAndObligationCreation.java | 105 ++- ...irementsAndObligationCreationCompound.java | 6 +- .../session/stage/impl/UnlockResources.java | 39 +- .../stage/monitor/SessionMonitorFactory.java | 41 +- .../stage/payment/group/PaymentGroup.java | 2 - ...mingPaymentInstructionDealsMkrPayload.java | 4 - .../stage/task/UnlockResourcesPayload.java | 17 - .../ru/spcex/clearing/statement/SdfGroup.java | 17 +- .../clearing/statement/SdfGroupManager.java | 29 +- .../statement/StatementServiceV2.java | 79 +-- .../clearing/service/ClearingServiceTest.java | 114 +--- .../service/PaymentUpdateBySdf04Test.java | 22 +- .../service/SdfCreatorBySTLDPaymentTest.java | 7 - .../clearing/service/SpecifUtilTest.java | 61 +- .../service/StatementServiceServiceTest.java | 107 --- .../VerificationResultComponentTest.java | 24 +- .../sql/RegistryCodeSqlBuilderTest.java | 43 -- .../ExecutionCurrencyComponentTest.java | 15 +- .../ExecutionDepositComponentTest.java | 12 +- .../service/executors/Sdf01ExecutorTest.java | 236 +------ .../spcex/clearing/utils/MatcherFactory.java | 5 - .../ru/spcex/clearing/utils/TestUtils.java | 4 +- clearing-parent/clearing-validation/pom.xml | 2 +- .../clearing/scheduler/ISchedulerChecker.java | 5 +- .../ru/spcex/clearing/util/package-info.java | 3 - .../util/services/IMDGMessageResolver.java | 9 +- .../clearing/util/services/RequestHelper.java | 47 +- .../exchangers/BiDirectionQueueExchanger.java | 43 +- .../validation/common/ValidationHelper.java | 12 +- .../common/rules/DateNotBeforeRule.java | 29 +- .../common/rules/DictionaryPresentRule.java | 63 +- .../common/rules/EndDtAfterStartDtRule.java | 73 +- .../common/rules/EnumPresentRule.java | 28 +- .../rules/FieldNotBlankRequiredRule.java | 38 +- .../common/rules/FieldRequiredRule.java | 42 +- .../common/rules/IdPresentRule.java | 103 +-- .../common/rules/IsLongValueRule.java | 30 +- .../common/rules/SpecialIdPresentRule.java | 28 +- .../common/rules/TimeNotBeforeRule.java | 29 +- .../specific/FieldRequiredSpecificRule.java | 42 +- .../rules/specific/IdPresentSpecificRule.java | 73 +- .../services/IMDGMessageResolverTest.java | 7 +- .../CompanyRoleSetValidationConfig.java | 44 +- .../CompanySymbolValidationConfig.java | 91 ++- .../validation/CompanyValidationConfig.java | 143 ++-- .../ProfileDocumentValidationConfig.java | 13 +- .../validation/RelationValidationConfig.java | 57 +- ...lementHousePropertiesValidationConfig.java | 2 +- .../clearing/company/error/CompanyErrors.java | 54 +- .../service/AccountNotificationHelper.java | 15 +- .../ClearingMemberCategoryService.java | 9 +- .../company/service/CompanyInfoService.java | 6 +- .../service/CompanyRoleSetService.java | 8 +- .../company/service/CompanyService.java | 38 +- .../company/service/CompanySymbolService.java | 7 +- .../company/service/ContactService.java | 2 - .../company/service/MultiCompanyService.java | 59 +- .../service/ProfileDocumentService.java | 10 +- .../company/service/RelationService.java | 157 ++--- .../SettlementHousePropertiesService.java | 8 +- .../validation/CompanySymbolNotExistRule.java | 7 +- ...ySymbolOfSymbolNewRequestNotExistRule.java | 7 +- .../ClearingMemberCategoryServiceTest.java | 28 - .../service/CompanyInfoServiceTest.java | 24 +- .../service/CompanyRoleSetServiceTest.java | 64 +- .../company/service/CompanyServiceTest.java | 38 +- .../service/CompanySymbolServiceTest.java | 14 - .../company/service/ContactServiceTest.java | 18 - .../service/MultiCompanyServiceTest.java | 2 +- .../service/ProfileDocumentServiceTest.java | 21 - .../company/service/RelationServiceTest.java | 19 +- .../SettlementHousePropertiesServiceTest.java | 51 +- .../src/main/resources/db/readme.txt | 2 +- .../exporter/config/KafkaSenderConfig.java | 17 +- .../dbf/exporter/config/SFTPConfig.java | 1 - .../exporter/logic/data/ResultContainer.java | 8 +- .../dbf/exporter/logic/data/enums/Table.java | 9 - .../logic/stages/ExportFromHazelcast.java | 15 +- .../dbf/exporter/logic/stages/Journal.java | 10 - .../exporter/logic/stages/PrepareDBFFile.java | 9 +- .../dbf/exporter/services/CommandService.java | 4 +- .../services/converters/DFConverter.java | 6 +- .../services/converters/S_DF07_Converter.java | 2 +- .../services/converters/S_DF51_Converter.java | 4 +- .../services/converters/S_DF56_Converter.java | 4 +- .../dbf/exporter/AbstractServiceTest.java | 1 - .../data/enums/FilenameTemplateTest.java | 4 - .../dbf/exporter/services/S_DF02_Test.java | 7 +- .../dbf/exporter/services/S_DF03_Test.java | 7 +- .../dbf/exporter/services/S_DF05_Test.java | 7 +- .../dbf/exporter/services/S_DF07_Test.java | 7 +- .../dbf/exporter/services/S_DF51_Test.java | 7 +- .../dbf/exporter/services/S_DF53_Test.java | 7 +- .../dbf/exporter/services/S_DF54_Test.java | 7 +- .../dbf/exporter/services/S_DF56_Test.java | 7 +- .../dbf/importer/config/SFTPConfig.java | 1 - .../dbf/importer/config/settings/Store.java | 1 - .../importer/logic/data/ResultContainer.java | 3 - .../importer/logic/data/enums/ColumnType.java | 4 - .../logic/data/tables/AbstractTable.java | 3 +- .../logic/data/tables/SDf52Table.java | 2 +- .../logic/data/tables/SDf57Table.java | 2 +- .../logic/stages/DbfImportKafkaMessenger.java | 5 - .../dbf/importer/logic/stages/ImportToDB.java | 5 +- .../importer/logic/stages/ValidateFields.java | 6 - .../importer/services/DBFImporterService.java | 2 - .../dbf/importer/services/FileChecker.java | 2 +- .../services/LauncherCommandReceiver.java | 19 +- .../logic/data/tables/SDf06TableTest.java | 4 +- .../logic/data/tables/SDf52TableTest.java | 11 +- .../logic/data/tables/SDf57TableTest.java | 11 +- .../dictionary/AccountTypeDictionary.java | 5 - .../dictionary/AllowedDictionary.java | 3 - .../BalanceDimensionDictionary.java | 6 +- .../dictionary/BondTypeDictionary.java | 5 - .../ClearingAccountTypeDictionary.java | 5 - .../ClearingCategoryDictionary.java | 3 - .../dictionary/ClearingStatusDictionary.java | 5 - .../dictionary/CompanyRoleDictionary.java | 3 - .../dictionary/CompanySymbolDictionary.java | 4 - .../dictionary/ConnectionStateDictionary.java | 5 - .../dictionary/ContactTypeDictionary.java | 3 - .../CorporationSoleTypeDictionary.java | 3 - .../dictionary/CountryCodeDictionary.java | 3 - .../dictionary/CourierTypeDictionary.java | 5 - .../dictionary/CurrencyCodeDictionary.java | 5 - .../dictionary/CurrencyPairDictionary.java | 5 - .../CurrencySettlementTypeDictionary.java | 5 - .../dictionary/DayStatusDictionary.java | 5 - .../dictionary/DepoAccountTypeDictionary.java | 5 - .../platform/dictionary/Dictionary.java | 3 - .../dictionary/DocumentTypeDictionary.java | 3 - .../dictionary/ErrorCodeDictionary.java | 5 - .../dictionary/EventTypeDictionary.java | 5 - .../GatewayResultStatusDictionary.java | 5 - .../dictionary/InOutDirectionDictionary.java | 5 - .../dictionary/InOutSDfTypeDictionary.java | 5 - .../dictionary/InstrumentTypeDictionary.java | 5 - .../dictionary/LegalKindDictionary.java | 3 - .../dictionary/MajorSignDictionary.java | 5 - .../ManagementJournalPurposeDictionary.java | 5 - .../ManagementJournalStatusDictionary.java | 5 - .../ManagementJournalTypeDictionary.java | 5 - .../dictionary/MarketCodeDictionary.java | 5 - .../dictionary/MarketTypeDictionary.java | 5 - .../dictionary/MoneyFlowSideDictionary.java | 5 - .../NotificationStatusDictionary.java | 5 - .../dictionary/ObjectTypeDictionary.java | 5 - .../dictionary/OperationStatusDictionary.java | 5 - .../dictionary/OperationTypeDictionary.java | 5 - .../OrganizationTypeDictionary.java | 3 - .../platform/dictionary/ParentDictionary.java | 5 - .../dictionary/PriorityDictionary.java | 6 +- .../RegistryCapacityDictionary.java | 5 - .../dictionary/RegistryCodeDictionary.java | 5 - .../RegistryDesignationDictionary.java | 5 - .../RegistryInstrumentTypeDictionary.java | 5 - .../dictionary/RegistryStatusDictionary.java | 5 - .../dictionary/RegistryUnitDictionary.java | 5 - .../dictionary/ResultStatusDictionary.java | 5 - .../dictionary/SectionDictionary.java | 5 - .../dictionary/ServiceDictionary.java | 5 - .../dictionary/ServiceProductDictionary.java | 5 - .../dictionary/ServiceStatusDictionary.java | 5 - .../dictionary/SessionStatusDictionary.java | 5 - .../dictionary/SessionTypeDictionary.java | 5 - .../dictionary/ShareTypeDictionary.java | 3 - .../platform/dictionary/SideDictionary.java | 5 - .../dictionary/StatementTypeDictionary.java | 5 - .../platform/dictionary/TaskDictionary.java | 5 - .../dictionary/TaskStatusDictionary.java | 5 - .../dictionary/TermTypeDictionary.java | 5 - ...radingClearingRegistryLevelDictionary.java | 5 - ...dingClearingRegistryPurposeDictionary.java | 5 - ...TradingClearingRegistryTypeDictionary.java | 5 - .../TransactionStatusDictionary.java | 5 - .../dictionary/UserRoleDictionary.java | 5 - .../dictionary/WorkflowStatusDictionary.java | 3 - .../importer/error/ExtDBImporterError.java | 2 +- .../services/ExtDBImporterService.java | 9 +- .../services/LauncherCommandReceiver.java | 4 +- .../config/DbTestConnectionConfig.java | 1 - .../services/ExtDBImporterServiceTest.java | 33 +- .../config/RestTemplateErrorHandler.java | 2 +- .../controller/GatewayController.java | 6 - .../inbound/request/company/Company.java | 31 +- .../outbound/request/OutboundRequest.java | 3 +- .../service/CodeStatusComparator.java | 8 +- .../service/IssueCompanyService.java | 15 +- .../gatewayapi/service/SecurityService.java | 6 - .../adapter/CompanyRequestAdapter.java | 5 +- .../CurrencyPairSecurityRequestAdapter.java | 5 - .../adapter/SecurityRequestAdapter.java | 19 - .../processor/ListingCurrProcessor.java | 6 +- .../gatewayapi/config/TestConfig.java | 9 +- .../controller/AbstractControllerTest.java | 19 +- .../controller/GatewayControllerTest.java | 44 +- .../service/CodeStatusComparatorTest.java | 19 +- .../service/GatewayServiceTest.java | 50 +- .../config/HistoryPoolMapConfigs.java | 4 +- .../config/element/ControllerSettings.java | 3 - .../historyimdg/index/SearchProxySession.java | 3 - .../mapstores/AbstractSliceMapLoader.java | 4 +- .../mapstores/HistoryMapConfig.java | 47 -- .../mapstores/SearchSessionMapStore.java | 2 +- .../services/HazelcastLifecycleSupport.java | 65 -- .../clearing/imdg/base/AutoconfiguredMap.java | 8 - .../imdg/base/BusinessObjectMapStore.java | 10 - .../imdg/base/DictionaryMapStore.java | 5 - .../imdg/base/DictionaryTMapStore.java | 3 - .../imdg/base/ObjectBaseMapStore.java | 4 +- .../imdg/base/SimpleObjectMapStore.java | 20 +- .../imdg/base/TemplateEventMapStore.java | 19 +- .../imdg/base/TemplateHistoryMapStore.java | 39 +- .../clearing/imdg/base/TemplateMapStore.java | 25 +- .../ASecurityHistoryMapStore.java | 45 +- .../businessevent/CompanyHistoryMapStore.java | 75 +-- .../RegistryHistoryMapStore.java | 4 +- .../SecurityHistoryMapStore.java | 35 +- .../businessobject/ASecurityMapStore.java | 71 +- .../imdg/businessobject/CompanyMapStore.java | 82 +-- .../EquitySecurityMapStore.java | 3 +- .../MoneyMarketSecurityMapStore.java | 12 - .../imdg/businessobject/RelationMapStore.java | 21 +- .../imdg/businessobject/SecurityMapStore.java | 27 +- .../imdg/config/HazelcastConfiguration.java | 21 +- .../clearing/imdg/config/PoolMapConfigs.java | 4 +- .../CurrencyPairDictionaryMapStore.java | 1 - .../imdg/object/CompanyRoleSetMapStore.java | 2 +- .../imdg/object/PlannerAllTodayMapStore.java | 32 +- .../AbstractHazelcastLifecycleSupport.java | 16 +- .../services/AbstractUpdateMapService.java | 5 +- .../services/HazelcastLifecycleSupport.java | 3 - .../imdg/services/UpdateMapService.java | 4 +- .../spcex/clearing/imdg/AllMapStoreTest.java | 11 +- .../imdg/config/DbTestConnectionConfig.java | 3 +- .../structure/CheckerBusinessMapStore.java | 3 +- .../structure/RunnableMapNamesForTesting.java | 350 +++++----- .../imdg/utils/AbstractHistoryRowMapper.java | 10 +- .../imdg/utils/BusinessEventRowMapper.java | 1 - .../clearing/imdg/utils/DbDataUtils.java | 61 +- .../clearing/imdg/utils/MatcherFactory.java | 5 - .../imdg/utils/SpcexObjectBaseRowMapper.java | 1 - .../lim/exporter/config/KafkaConfig.java | 2 +- .../lim/exporter/config/LimFormat.java | 2 - .../services/AbstractExporterService.java | 1 - .../services/LauncherCommandReceiver.java | 12 +- .../lim/exporter/AbstractServiceTest.java | 1 - .../services/AbstractExporterServiceTest.java | 7 - .../services/MoneyExporterServiceTest.java | 4 - .../services/SecurityExporterServiceTest.java | 6 - .../registry/RegistryServiceApplication.java | 5 - .../registry/conf/SFTPReportsConfig.java | 86 --- .../registry/conf/properties/AProperties.java | 2 +- .../conf/properties/ReportsStore.java | 1 - .../reports/bean/AllowedDictionary.java | 3 - .../registry/reports/bean/BusinessObject.java | 3 - .../registry/reports/bean/CompanySymbols.java | 3 - .../registry/reports/bean/Dictionary.java | 3 - .../reports/bean/ExecutionCommon.java | 1 - .../reports/bean/PaymentInstruction.java | 3 - .../reports/bean/RegistryHistory.java | 1 - .../bean/RegistryStatusDictionary.java | 5 - .../registry/reports/bean/Security.java | 4 - .../reports/bean/SessionTypeDictionary.java | 5 - .../reports/bean/TradingClearingRegistry.java | 5 - .../LiabilitiesRegistryReportBuilder.java | 2 +- .../MoneyBalanceRegisterReportBuilder.java | 8 - .../reports/builders/XLSXReportBuilder.java | 27 +- .../loaders/ExecutionCurrencyLoader.java | 34 +- .../loaders/ExecutionDepositLoader.java | 20 +- .../reports/loaders/ExecutionFondLoader.java | 20 +- .../registry/reports/loaders/IDBLoader.java | 9 +- .../reports/loaders/MoneyBalanceLoader.java | 5 +- .../reports/loaders/RegistryLoader.java | 14 +- .../reports/loaders/helpers/IEnumKey.java | 14 - .../service/RegisterUtilityRunner.java | 3 +- .../service/RegisterUtilityService.java | 2 +- .../clearing/registry/config/TestConfig.java | 4 +- .../registry/utils/MatcherFactory.java | 5 - .../clearing/registry/utils/TestUtils.java | 4 +- .../reports/ReportsServiceApplication.java | 17 - .../reports/builders/CSVReportBuilder.java | 60 +- .../reports/builders/EmptyParams.java | 3 - .../reports/builders/SessionIdParam.java | 3 - .../builders/ks/KSRepTradesReportBuilder.java | 1 - .../config/validation/ValidationConfig.java | 42 +- .../reports/notifications/DOCXService.java | 69 +- .../notifications/NotificationBuilder.java | 1 - .../reports/services/NotificationService.java | 1 - .../NCMPNotificationBuilderTest.java | 3 - .../NTCRNotificationBuilderTest.java | 1 - .../reports/services/DOCXServiceTest.java | 11 +- .../services/ReportServiceTest_BP.java | 41 +- .../services/ReportServiceTest_KS.java | 10 +- .../PlannerTemplateValidationConfig.java | 146 ++-- .../scheduler/error/ValidationError.java | 2 +- .../service/ClearingCalendarService.java | 8 +- .../scheduler/service/LauncherSender.java | 5 +- .../scheduler/service/LauncherService.java | 5 +- .../scheduler/service/PlannerService.java | 4 +- .../service/PlannerTemplateService.java | 2 - .../scheduler/service/TaskManager.java | 35 +- .../rules/common/DateAfterTodayRule.java | 18 +- .../rules/common/DateNotBeforeRule.java | 18 +- .../rules/common/DictionaryPresentRule.java | 26 +- .../rules/common/EnumPresentRule.java | 20 - .../rules/common/FieldRequiredRule.java | 14 +- .../rules/common/IdPresentRule.java | 34 +- .../rules/common/TimeNotBeforeRule.java | 35 +- .../scheduler/AbstractServiceTest.java | 1 - .../service/ClearingCalendarServiceTest.java | 43 -- .../service/LauncherServiceTest.java | 18 +- .../scheduler/service/PlannerServiceTest.java | 40 -- .../service/PlannerTemplateServiceTest.java | 30 - .../scheduler/service/TaskManagerTest.java | 27 +- .../securities/errors/SecuritiesError.java | 14 +- .../cud/CurrencyPairSecurityService.java | 13 - .../service/cud/CurrencyService.java | 2 +- .../service/cud/GatewaySecurityService.java | 70 +- .../service/cud/ListingService.java | 12 +- .../cud/MoneyMarketSecurityService.java | 7 +- .../validation/ValidationProvider.java | 180 ++--- .../rule/CouponPeriodNewValidationRule.java | 2 +- .../rule/HaveValidCodeByDictionary.java | 2 +- .../validation/rule/HaveValidCompanyId.java | 2 +- .../rule/MmsDeleteValidationRule.java | 1 - .../rule/MmsUpdateValidationRule.java | 1 - .../validation/rule/WorkflowStatusActv.java | 1 - .../service/CouponPeriodServiceTest.java | 19 - .../service/CurrencyServiceTest.java | 18 - .../service/EquitySecurityServiceTest.java | 52 +- .../FixedIncomeCashFlowServiceTest.java | 10 - .../FixedIncomeSecurityServiceTest.java | 53 +- .../service/MoneyMarketSecurityFactory.java | 6 +- .../MoneyMarketSecurityServiceTest.java | 93 +-- .../util/security/UserRoleVerification.java | 61 +- .../swt/exporter/config/KafkaConfig.java | 2 +- .../swt/exporter/config/SFTPConfig.java | 1 - .../settings/ExportSwtServiceSettings.java | 1 - .../services/AbstractExporterService.java | 18 +- .../services/LauncherCommandReceiver.java | 9 +- .../services/exportimpl/DF09Exporter.java | 1 - .../services/exportimpl/DF12Exporter.java | 11 +- .../services/exportimpl/DF14Exporter.java | 5 - .../services/AbstractExporterServiceTest.java | 1 - .../services/exportimpl/DF09ExporterTest.java | 26 +- .../services/exportimpl/DF11ExporterTest.java | 8 +- .../controller/LauncherCommandReceiver.java | 15 +- .../importer/logic/data/ResultContainer.java | 3 - .../importer/logic/data/enums/ColumnType.java | 4 - .../swt/importer/logic/stages/ImportToDB.java | 3 - .../logic/stages/SWTImportKafkaMessenger.java | 14 - .../importer/logic/stages/ValidateFields.java | 6 - .../importer/readers/AbstractTemplate.java | 9 +- .../swt/importer/readers/SWTRecord.java | 2 +- .../importer/services/SWTImporterService.java | 1 - .../importer/config/ImportSWTServiceTest.java | 2 +- .../importer/logic/stages/ImportToDBTest.java | 2 +- .../ru/spcex/clearing/test/ImapEvent.java | 4 +- .../spcex/clearing/test/MatcherFactory.java | 5 - .../clearing/test/TestObjectCreator.java | 22 +- .../ru/spcex/clearing/test/TestUtils.java | 20 +- .../clearing/test/config/ImdgTestConfig.java | 2 - .../clearing/test/config/KafkaTestConfig.java | 22 +- .../ru/spcex/clearing/test/json/JsonUtil.java | 5 - .../test/json/MatcherFactoryWithJson.java | 14 +- .../services/LauncherCommandReceiver.java | 4 +- .../services/TradeImporterService.java | 7 +- .../config/config/DbTestConnectionConfig.java | 1 - .../services/TradeImporterServiceTest.java | 20 +- .../ru/spcex/clearing/utility/Enum/Table.java | 11 - .../utility/service/KeyRateService.java | 2 +- .../utility/service/PairSdfService.java | 1 - .../clearing/utility/service/UserService.java | 1 - .../service/KeyRateServiceDisabled.java | 49 +- .../utility/service/PairSdfServiceTest.java | 2 +- .../utility/utils/MatcherFactory.java | 5 - .../classes/base/SpcexObjectBase.java | 3 - .../base/interfaces/IClearingFacade.java | 2 +- .../enumeration/BalanceAccountType.java | 2 +- .../spcex/platform/enumeration/BondType.java | 14 +- .../enumeration/ClearingCategory.java | 17 +- .../platform/enumeration/ClearingStatus.java | 2 +- .../platform/enumeration/ContactTypes.java | 25 +- .../platform/enumeration/CurrencyCode.java | 4 +- .../platform/enumeration/DocumentTypes.java | 49 +- .../platform/enumeration/InstrumentType.java | 11 +- .../spcex/platform/enumeration/Priority.java | 8 +- .../enumeration/RegistryCapacity.java | 4 +- .../enumeration/ReportBuilderType.java | 4 - .../platform/enumeration/ReportType.java | 4 - .../platform/enumeration/ResultStatuses.java | 9 +- .../ru/spcex/platform/enumeration/Sender.java | 6 +- .../platform/enumeration/ServiceProduct.java | 5 +- .../spcex/platform/enumeration/ShareType.java | 4 +- .../ru/spcex/platform/enumeration/Task.java | 104 +-- .../spcex/platform/enumeration/TermType.java | 6 +- .../TradingClearingRegistryType.java | 20 +- .../iml/hazelcast/adapter/ImdgHazelcast.java | 12 - .../adapter/ImdgTransactionalHazelcast.java | 11 +- .../service/HazelcastServiceBase.java | 57 +- .../iml/hazelcast/util/HazelcastHelper.java | 23 +- .../clearing/imdg/IMDGDistributedNames.java | 4 - .../java/ru/spcex/platform/imdg/api/Imdg.java | 15 - .../spcex/platform/imdg/api/ImdgProvider.java | 3 - .../platform/imdg/api/ImdgTransaction.java | 4 - .../predicate/specific/SecuritySelector.java | 2 +- .../sql/ImdgPredicateBuilderSqlMock.java | 7 +- .../validation/ImdgValidationContext.java | 3 - .../platform/imdg/validation/Stored.java | 6 - .../imdg/validation/rule/PresentById.java | 4 +- .../config/KafkaConsumerFactory.java | 2 - .../config/KafkaProducerFactory.java | 24 - .../messaging/domain/BaseRequest.java | 12 - .../platform/messaging/domain/Consts.java | 7 +- .../cud/account/BankAccountUpdateRequest.java | 20 +- .../cud/account/ClientCodeUpdateRequest.java | 2 +- .../account/sdf01/AccountSdf01Request.java | 3 - .../domain/cud/balance/StatementRequest.java | 2 - .../cud/clearing/Sdf56And51Request.java | 9 - .../domain/cud/company/CompanyNewRequest.java | 1 - .../company/CompanySymbolUpdateRequest.java | 2 +- .../ExecutionRegisterOnSaveRequest.java | 2 - ...TradingClearingRegistryListNewRequest.java | 1 - .../cud/reports/NotificationRequest.java | 6 - .../domain/cud/reports/ReportRequest.java | 7 - .../cud/reports/ReportRequestWithPeriod.java | 3 - .../reports/ReportRequestWithRegistryId.java | 6 - .../reports/ReportRequestWithSessionId.java | 6 - .../ReportRequestWithSessionIdList.java | 6 - ...CurrencyPairSecurityNewGatewayRequest.java | 1 - .../JournalEventExportedRequest.java | 4 - .../logic/functional/BuilderConsumerStep.java | 13 +- .../functional/ConsumerSpecificClass.java | 15 +- .../serialization/JsonDeserializer.java | 12 +- .../serialization/JsonSerializer.java | 20 +- .../messaging/serialization/LogFormatter.java | 9 - .../messaging/service/QueueConsumer.java | 30 +- .../messaging/service/sender/KafkaSender.java | 10 +- .../serialization/JsonDeserializerTest.java | 5 +- .../utils/enumeration/EnumMessage.java | 4 - .../platform/utils/enumeration/IEnumId.java | 16 +- .../platform/utils/enumeration/IEnumKey.java | 14 - .../SpringPropertiesMessageResolver.java | 3 - .../utils/error/ClearingBaseException.java | 5 - .../SpringPropertiesLocalizer.java | 14 - .../platform/utils/number/BigDecimalUtil.java | 24 - .../spcex/platform/utils/time/TimeUtil.java | 9 - .../utils/validation/IValidationRule.java | 13 - .../platform/utils/validation/IValidator.java | 22 - .../utils/validation/ValidatorImpl.java | 17 +- .../platform/utils/time/TimeUtilTest.java | 2 +- 824 files changed, 4303 insertions(+), 12853 deletions(-) create mode 100644 clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/UtilsTest.java diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/AccountValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/AccountValidationConfig.java index 2598d0054..f5d00e2a6 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/AccountValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/AccountValidationConfig.java @@ -52,12 +52,11 @@ public class AccountValidationConfig { addImdg.accept(IMDGDistributedNames.Map_Currency); return new ValidatorImpl<>(context, IdPresentRule.instance("companyId", - CorrespondentAccountNewRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - AccountError.RequiredFieldEmpty, - AccountError.CompanyNotFound -// company -> WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? null : AccountError.CompanyNotActive + CorrespondentAccountNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + AccountError.RequiredFieldEmpty, + AccountError.CompanyNotFound ), FieldRequiredSpecificRule.instance("account", CorrespondentAccountNewRequest::getAccount, @@ -81,16 +80,12 @@ public class AccountValidationConfig { return new EnumMessage(AccountError.AccountAlreadyExist, accounts.stream().findFirst().get().getAccount()); }), DictionaryPresentRule.instance("status", - CorrespondentAccountNewRequest::getStatus, - IMDGDistributedNames.Map_ServiceStatusDictionary, - ServiceStatusDictionary.class, - AccountError.RequiredFieldEmpty, - AccountError.DictionaryNotFound, - false -// , statusValue -> { -// if (ServiceStatus.Active.equalsByKey(statusValue.getCode())) return null; -// return AccountError.WrongFieldValue; -// } + CorrespondentAccountNewRequest::getStatus, + IMDGDistributedNames.Map_ServiceStatusDictionary, + ServiceStatusDictionary.class, + AccountError.RequiredFieldEmpty, + AccountError.DictionaryNotFound, + false ), DictionaryPresentRule.instance("accountType", CorrespondentAccountNewRequest::getAccountType, @@ -162,16 +157,12 @@ public class AccountValidationConfig { AccountError.DictionaryNotFound, false), DictionaryPresentRule.instance("accountType", - CorrespondentAccountUpdateRequest::getAccountType, - IMDGDistributedNames.Map_AccountTypeDictionary, - AccountTypeDictionary.class, - AccountError.RequiredFieldEmpty, - AccountError.DictionaryNotFound, - false -// accountType -> { -// if (AccountType.Corr.equalsByKey(accountType.getCode())) return null; -// return AccountError.WrongFieldValue; -// } + CorrespondentAccountUpdateRequest::getAccountType, + IMDGDistributedNames.Map_AccountTypeDictionary, + AccountTypeDictionary.class, + AccountError.RequiredFieldEmpty, + AccountError.DictionaryNotFound, + false ) ); }; diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/BankAccountValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/BankAccountValidationConfig.java index a708769cd..689e3ce4c 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/BankAccountValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/BankAccountValidationConfig.java @@ -106,11 +106,10 @@ public class BankAccountValidationConfig { bankAccount -> { Long accountId = bankAccount.getAccountId(); Imdg accountImdg = context.obtainMap( - IMDGDistributedNames.Map_Account, Account.class + IMDGDistributedNames.Map_Account, Account.class ); Account account = accountImdg.getSingleObjectByID(accountId); if (account == null) return AccountError.AccountNotFound; -// if (!AccountStatus.ACTIVE.equalsByKey(account.getStatus())) return AccountError.AccountNotActive; return null; }), DictionaryPresentRule.instance("currency", diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClearingAccountValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClearingAccountValidationConfig.java index afb13a6f5..b03645f6c 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClearingAccountValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ClearingAccountValidationConfig.java @@ -48,12 +48,11 @@ public class ClearingAccountValidationConfig { addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary); return new ValidatorImpl<>(context, IdPresentRule.instance("companyId", - ClearingAccountNewRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - AccountError.RequiredFieldEmpty, - AccountError.CompanyNotFound -// company -> !WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? AccountError.CompanyNotActive : null + ClearingAccountNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + AccountError.RequiredFieldEmpty, + AccountError.CompanyNotFound ), FieldNotBlankRequiredRule.instance("account", ClearingAccountNewRequest::getAccount, diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/DepoAccountValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/DepoAccountValidationConfig.java index f4cd9d3f9..e7fcc46fd 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/DepoAccountValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/DepoAccountValidationConfig.java @@ -42,12 +42,11 @@ public class DepoAccountValidationConfig { addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary); return new ValidatorImpl<>(context, IdPresentRule.instance("companyId", - DepoAccountNewRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - AccountError.RequiredFieldEmpty, - AccountError.CompanyNotFound -// company -> !WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? AccountError.CompanyNotActive : null + DepoAccountNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + AccountError.RequiredFieldEmpty, + AccountError.CompanyNotFound ), FieldNotBlankRequiredRule.instance("account", DepoAccountNewRequest::getAccount, diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/SameAccountValidationRule.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/SameAccountValidationRule.java index fed529fdf..69a2ea8dd 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/SameAccountValidationRule.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/SameAccountValidationRule.java @@ -21,7 +21,7 @@ class SameAccountValidationRule implements IValidationRule accountGetter; public SameAccountValidationRule(AccountType accountType, Function accountGetter) { - this.accountType = accountType.getKey(); // or req.getAccountType() + this.accountType = accountType.getKey(); this.accountGetter = accountGetter; Objects.requireNonNull(accountGetter); } @@ -32,9 +32,8 @@ class SameAccountValidationRule implements IValidationRule accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); ImdgPredicateBuilder pb = accountImdg.predicateBuilder(); ImdgPredicate query = pb.and( - pb.equals("account", accountGetter.apply(req)), // req.getAccount() -// pb.equals("accountType", accountType), имена всех счетов уникальны, вне зависимости от типа - pb.in("status", ServiceStatus.Active.getKey(), ServiceStatus.Reopened.getKey(), ServiceStatus.Appl.getKey()) + pb.equals("account", accountGetter.apply(req)), + pb.in("status", ServiceStatus.Active.getKey(), ServiceStatus.Reopened.getKey(), ServiceStatus.Appl.getKey()) ); Account existAccount = accountImdg.getFirstObjectByPredicate(query); if (existAccount != null) { diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java index 837836244..a1dd4f545 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryListValidationConfig.java @@ -113,7 +113,7 @@ public class TradingClearingRegistryListValidationConfig { .map(TradingClearingRegistryList::getAccountId) .filter(accountId::equals) .collect(Collectors.toSet()); - return new EnumMessage(AccountError.AccountForTradingClearingRegistryAlreadyUsed, duplicateAccounts, "accountId"); // (5023) «Счет %s уже используется» + return new EnumMessage(AccountError.AccountForTradingClearingRegistryAlreadyUsed, duplicateAccounts, "accountId"); } return null; }), @@ -189,12 +189,11 @@ public class TradingClearingRegistryListValidationConfig { } if (accounts.isEmpty()) { if (required) - return of(AccountError.RequiredFieldEmpty, fieldName); // обязательное поле + return of(AccountError.RequiredFieldEmpty, fieldName); else return Optional.empty(); } Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); - // Проверить существование счетов { for (Long accountId : accounts) { Account byIdObject = accountImdg.getSingleObjectByID(accountId); @@ -202,13 +201,11 @@ public class TradingClearingRegistryListValidationConfig { return of(AccountError.AccountNotFound, accountId, fieldName); if (!IEnumKey.contains(byIdObject.getAccountType(), AccountType.Clrn, AccountType.Info)) { return of(AccountError.AccountIsNotACurrency, accountId, - fieldName, "expected: CLRN/INFO but is " + byIdObject.getAccountType()); // Счет %S не + fieldName, "expected: CLRN/INFO but is " + byIdObject.getAccountType()); } if (CurrencyCode.isRub(byIdObject.getCurrency()) || StringUtils.isEmpty(byIdObject.getCurrency())) { - return of(AccountError.AccountIsNotACurrency, accountId, fieldName); // Счет %S не валютный + return of(AccountError.AccountIsNotACurrency, accountId, fieldName); } - - // Проверка отсутствия других TradingClearingRegistryList с этими счетами Imdg tradingClearingRegistryListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); ImdgPredicateBuilder pb = tradingClearingRegistryListImdg.predicateBuilder(); @@ -217,8 +214,8 @@ public class TradingClearingRegistryListValidationConfig { pb.equals("accountId", accountId), pb.equals("status", WorkflowStatus.Active.getKey()) )); - if (!listWithAccountId.isEmpty()){ - return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, byIdObject.getAccount(), fieldName); // (5023) «Данная счет %s уже используется» + if (!listWithAccountId.isEmpty()) { + return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, byIdObject.getAccount(), fieldName); } Long tkrId = tkrIdGetter.apply(validatedObject); ImdgPredicate query = pb.and( @@ -227,17 +224,13 @@ public class TradingClearingRegistryListValidationConfig { pb.equals("currency", byIdObject.getCurrency())); if (idGetter != null) { Long id = idGetter.apply(validatedObject); - if (id == null) // never + if (id == null) return of(AccountError.RequiredFieldEmpty, "id"); query = pb.and(query, pb.not(pb.equals("id", id))); } Collection inOtherLists = tradingClearingRegistryListImdg.getCollectionObjectsByPredicate(query); if (!inOtherLists.isEmpty()) { -// Collection duplicateAccounts = inOtherLists.stream() -// .map(tradingClearingRegistryList -> -// accountImdg.getSingleObjectByID(tradingClearingRegistryList.getAccountId()).getAccount()) -// .collect(Collectors.toSet()); - return of(AccountError.CurrencyForTradingClearingRegistryListAlreadyUsed, byIdObject.getCurrency(), fieldName); // (5023) «Данная валюта %s уже используется» + return of(AccountError.CurrencyForTradingClearingRegistryListAlreadyUsed, byIdObject.getCurrency(), fieldName); } } } diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java index fe1e099db..b02de9f0e 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/TradingClearingRegistryValidationConfig.java @@ -78,33 +78,17 @@ public class TradingClearingRegistryValidationConfig { AccountError.RequiredFieldEmpty, moneyAccountId -> { Imdg accountImdg = context.obtainMap( - IMDGDistributedNames.Map_Account, Account.class + IMDGDistributedNames.Map_Account, Account.class ); Account account = accountImdg.getSingleObjectByID(moneyAccountId); if (account == null) { return AccountError.AccountNotFound; } else { if (AccountType.Clrn.equalsByKey(account.getAccountType()) || AccountType.Info.equalsByKey(account.getAccountType())) { - // ok } else { - // неправильный тип return AccountError.AccountNotFound; } } -// Imdg clearingAccountImdg = context.obtainMap( -// IMDGDistributedNames.Map_ClearingAccount, ClearingAccount.class -// ); -// ClearingAccount clearingAccount = clearingAccountImdg.getSingleObjectByFieldValues( -// Map.of("accountId",moneyAccountId) -// ); -// if (clearingAccount == null) { -// Imdg informationAccountImdg = context.obtainMap( -// IMDGDistributedNames.Map_InformationAccount, InformationAccount.class -// ); -// InformationAccount infoAccount = informationAccountImdg.getSingleObjectByFieldValues( -// Map.of("accountId",moneyAccountId)); -// if (infoAccount == null) return AccountError.AccountNotFound; -// } return null; }), FieldRequiredRule.instance("depoAccountId", @@ -165,39 +149,34 @@ public class TradingClearingRegistryValidationConfig { public Optional validate(ImdgValidationContext context) { TradingClearingRegistryUpdateRequest validatedObject = context.getValidatedObject(); Long depoAccountId = validatedObject.getDepoAccountId(); - if (depoAccountId == null) // необязательное поле + if (depoAccountId == null) return empty(); - - // Проверка типа счёта ДЕПО, что существует Imdg depoAccountImdg = context.obtainMap(IMDGDistributedNames.Map_DepoAccount, DepoAccount.class); DepoAccount depoAccount = depoAccountImdg.getFirstObjectByFieldValues( - Map.of("accountId", depoAccountId) + Map.of("accountId", depoAccountId) ); if (depoAccount == null) return of(AccountError.AccountNotFound, depoAccountId); - - // Проверка компании ТКР и счёта Imdg tcrMap = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); Account account = accountImdg.getSingleObjectByID(validatedObject.getMoneyAccountId()); - if (account == null) { // never + if (account == null) { return of(AccountError.AccountNotFound, depoAccountId); } TradingClearingRegistry updateObject = tcrMap.getSingleObjectByID(validatedObject.getId()); if (!Objects.equals(account.getCompanyId(), updateObject.getCompanyId())) { - return of(AccountError.AccountNotFound, depoAccountId); // или UserVerifyDenial + return of(AccountError.AccountNotFound, depoAccountId); } - - // Проверка использования счёта в других ТКР ImdgPredicateBuilder pb = tcrMap.predicateBuilder(); ImdgPredicate query = pb.and(pb.equals("depoAccountId", validatedObject.getDepoAccountId()), - pb.not(pb.equals("id", validatedObject.getId())) + pb.not(pb.equals("id", validatedObject.getId())) ); Collection existTCR = tcrMap.getCollectionObjectsByPredicate(query); if (existTCR.isEmpty()) { return empty(); } else { - if (account == null && validatedObject.getDepoAccountId() != null) account = accountImdg.getSingleObjectByID(validatedObject.getDepoAccountId()); + if (account == null && validatedObject.getDepoAccountId() != null) + account = accountImdg.getSingleObjectByID(validatedObject.getDepoAccountId()); return of(AccountError.AccountForTradingClearingRegistryAlreadyUsed, account.getAccount()); } } diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java index 61465871d..2c835367d 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/config/validation/ValidationConfig.java @@ -54,8 +54,6 @@ public class ValidationConfig { addImdg.accept(IMDGDistributedNames.Map_AccountSymbols, AccountSymbols.class); addImdg.accept(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); addImdg.accept(IMDGDistributedNames.Map_Currency, Currency.class); - - //for ClientCodeValidationConfig addImdg.accept(IMDGDistributedNames.Map_ClientCode, ClientCode.class); return imdg; diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java index 23f3cfd0d..3425a0a93 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/errors/AccountError.java @@ -19,13 +19,12 @@ public enum AccountError implements IErrorEnumId { DepoAccountNotFound(5017L), MoneyAccountNotFound(5018L), ClearingCategoryNotFound(5019L), - ClearingCompanySymbolNotFound(5022L), // Для компании %s отсутствует клиринговый код». + ClearingCompanySymbolNotFound(5022L), AccountForTradingClearingRegistryAlreadyUsed(5023L), AccountFieldNotSet(5024L), AccountDepoTypeRequired(5025L), - AccountIsNotACurrency(5026L), // Счет %S не валютный + AccountIsNotACurrency(5026L), CompanyHasNotClearingMemberCategory(5027L), - //ошибки для трансляции в модуль gateway TCR_NOT_FOUND_GTW(5028L), ACCOUNT_NOT_FOUND_GTW(5029L), COMPANY_NOT_FOUND_GTW(5030L), diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountHelper.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountHelper.java index 510ba460c..2db71e09b 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountHelper.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountHelper.java @@ -42,11 +42,6 @@ public class AccountHelper { this.messageResolver = messageResolver; } - /** - * Заполняет поля relationId и companyId из соответствующей записи Relation - * - * @param requestId Идентификатор запроса для вывода лога - */ public RequestInfoUpdate fillAccountFromRelation(Account account, Long requestId, boolean checkClearingMemberCategory) { Long companyId = account.getCompanyId(); Collection relations; @@ -73,7 +68,6 @@ public class AccountHelper { } else { log.info("ClearingCategoryNotFound with clearingCategoryValue={} not implemented. Do not search Relation.", clearingCategoryValue); return null; - //return makeError(requestId, AccountError.ClearingCategoryNotFound, companyId, clearingCategoryValue + " (case not implemented)"); } finalRelationPredicate = relationPredicateBuilder.and(consumerIdPredicate, servicePredicate); relations = relationMap.getCollectionObjectsByPredicate(finalRelationPredicate); @@ -83,7 +77,6 @@ public class AccountHelper { } if (relations.isEmpty()) { - //return makeError(requestId, AccountError.WrongFieldValue, "companyId", finalRelationPredicate.toString()); log.info("Relation not found: {}", finalRelationPredicate.toString()); return null; } diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java index 669159287..fa17ac1f1 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/AccountService.java @@ -167,10 +167,8 @@ public class AccountService extends QueueConsumer implements InitializingBean { Long newId = null; if (AccountType.Corr.equalsByKey(account.getAccountType())) { - // default, дополнительные таблицы не требуются newId = accountMap.insert(account); } else { - // Транзакцией ImdgTransaction imdgTransaction = imdgProvider.newTransaction(); imdgTransaction.beginTransaction(); boolean txOk = false; @@ -179,7 +177,6 @@ public class AccountService extends QueueConsumer implements InitializingBean { newId = accountMap.insert(account); if (AccountType.Corr.equalsByKey(account.getAccountType())) { - // default, дополнительные таблицы не требуются } else if (AccountType.Info.equalsByKey(account.getAccountType())) makeInfoPart(imdgTransaction, account); else if (AccountType.Depo.equalsByKey(account.getAccountType())) @@ -231,7 +228,6 @@ public class AccountService extends QueueConsumer implements InitializingBean { if (account.getAccount() != null && account.getAccount().contains("BC")) { depoAcc.setDepoAccountType(DepoAccountType.C.getKey()); } else { - //todo в реквесте нет поля depoAcc.setDepoAccountType(req.getDepoAccountType()); } Long depoId = depoAccountMap.insert(depoAcc); log.debug("For account id={} make DepoAccount id={}", account.getId(), depoId); @@ -299,7 +295,7 @@ public class AccountService extends QueueConsumer implements InitializingBean { log.debug("AccountTerminationRequest received, id={}", userRequest.getId()); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); - if (requestInfoUpdate != null) return requestInfoUpdate; // never - system + if (requestInfoUpdate != null) return requestInfoUpdate; AccountTerminationRequest req = userRequest.getRequestPayload(); final Long companyId = req.getCompanyId(); @@ -311,7 +307,6 @@ public class AccountService extends QueueConsumer implements InitializingBean { try { tx.beginTransaction(); for (Account account : accounts) { - //Account account = accountMap.getSingleObjectByID(request.getId()); if (!ServiceStatus.Blocked.equalsByKey(account.getStatus())) { account.setStatus(ServiceStatus.Blocked.getKey()); account.setUpdated(Instant.now()); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java index ded1d1dec..939960d79 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/BankAccountService.java @@ -227,7 +227,6 @@ public class BankAccountService extends QueueConsumer implements InitializingBea account.setUpdated(Instant.now()); accountMap.update(account); - //без изменений bankAccountMap.update(bankAccount); log.debug("successfully block, existing bankAccount with id {}", bankAccount.getId()); return null; diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java index f289d9900..f676fb2ff 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClearingAccountService.java @@ -286,7 +286,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } catch (Throwable e) { AccountSdfToStatementRequestPart responsePart = new AccountSdfToStatementRequestPart(); responsePart.setSdfId(accountReq.getSdfId()); - responsePart.setErrorCode(AccountError.DictionaryNotFound.getId()); // see accountService.fillAccountFromRelation + responsePart.setErrorCode(AccountError.DictionaryNotFound.getId()); responsePart.setErrorText("couldn't extract currency from '%s' account".formatted(accountReq.getAccount())); accountToStatement.add(responsePart); log.info("sdf.id={} companyId={} accountType={} couldn't find currency for account {}", @@ -307,11 +307,11 @@ public class ClearingAccountService extends QueueConsumer implements Initializin account.setUpdated(now); RequestInfoUpdate requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), true); if (requestInfoUpdate != null) { - log.warn("Error fill new account from relation. {}", /*account.getId(),*/ requestInfoUpdate.getMessage()); + log.warn("Error fill new account from relation. {}", requestInfoUpdate.getMessage()); { AccountSdfToStatementRequestPart responsePart = new AccountSdfToStatementRequestPart(); responsePart.setSdfId(accountReq.getSdfId()); - responsePart.setErrorCode(AccountError.ClearingCategoryNotFound.getId()); // see accountService.fillAccountFromRelation + responsePart.setErrorCode(AccountError.ClearingCategoryNotFound.getId()); responsePart.setErrorText(requestInfoUpdate.getMessage()); accountToStatement.add(responsePart); continue accountsLoop; @@ -373,22 +373,14 @@ public class ClearingAccountService extends QueueConsumer implements Initializin return null; } - /** - * Логика похожа на SDF01 - * - * @param accountValue account - * @param companyId - * @param userRequestId для лога - * @return - */ private synchronized Account createSdf52Account(String accountValue, String acctType, Long companyId, Long userRequestId) { - { // Валидация + { boolean existClearingAccountTypeDictionary; if (!StringUtils.hasText(acctType)) { existClearingAccountTypeDictionary = false; } else { ClearingAccountTypeDictionary catd = clearingAccountTypeDictionaryImdg.getFirstObjectByFieldValues( - Map.of("code", acctType)); + Map.of("code", acctType)); existClearingAccountTypeDictionary = catd != null; } if (!existClearingAccountTypeDictionary) { @@ -398,7 +390,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } ClearingMemberCategory companyAnyCMC = clearingMemberCategoryImdg.getFirstObjectByFieldValues(Map.of( - "companyId", companyId + "companyId", companyId )); if (companyAnyCMC == null) { String errMsg = messageResolver.resolve(new EnumMessage(AccountError.CompanyHasNotClearingMemberCategory, companyId)); @@ -428,19 +420,19 @@ public class ClearingAccountService extends QueueConsumer implements Initializin account.setUpdated(now); RequestInfoUpdate requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequestId, true); if (requestInfoUpdate != null) { - log.warn("Error fill new account from relation. {}", /*account.getId(),*/ requestInfoUpdate.getMessage()); + log.warn("Error fill new account from relation. {}", requestInfoUpdate.getMessage()); return null; } Account existAccount = accountImdg.getFirstObjectBySQL("account = '%s' and accountType='%s'" - .formatted(accountValue, AccountType.Clrn.getKey())); + .formatted(accountValue, AccountType.Clrn.getKey())); if (existAccount != null) { log.debug("Sdf52: Account {} already exists", accountValue); if (companyId.equals(existAccount.getCompanyId())) { return existAccount; } else { log.debug("Sdf52: Account {} already exists for other companyId={}, do not apply for companyId={}", - accountValue, existAccount.getCompanyId(), companyId); + accountValue, existAccount.getCompanyId(), companyId); return null; } } @@ -471,7 +463,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin Long groupId = req.getGroupId(); if (SdfTable.SDF_52 != req.getTable()) { log.warn("Unsupported table {} received on accountUpdateSdf52. Expected only {}.", - req.getTable(), SdfTable.SDF_52); + req.getTable(), SdfTable.SDF_52); } Collection sdfs = sdfProcessService.sdfsByGroupId(groupId); if (sdfs.isEmpty()) { @@ -482,13 +474,13 @@ public class ClearingAccountService extends QueueConsumer implements Initializin List> toUpdate = new ArrayList<>(); List> toProcessSDF53 = new ArrayList<>(); - { // 1. Выборка данных + { for (SDf52 sDf52 : sdfs) { if (sdfProcessService.parseSdf52Status(sDf52.getStatus()) == null) { String msg = messageResolver.resolve(new EnumMessage(AccountError.WrongFieldValue, "status")); log.warn("By generationId={} s_df52[{}] error: {}", groupId, sDf52.getId(), msg); toProcessSDF53.add(new MutableTriple<>(sDf52, null, - makeSdfErrorText(AccountError.WrongFieldValue, SDFProcessService.SDF_STATUS_ERROR))); + makeSdfErrorText(AccountError.WrongFieldValue, SDFProcessService.SDF_STATUS_ERROR))); continue; } Company company = sDf52.getDeal() == null ? null : companyImdg.getSingleObjectByFieldValues(Map.of("tradingCode", sDf52.getDeal())); @@ -496,30 +488,30 @@ public class ClearingAccountService extends QueueConsumer implements Initializin String msg = messageResolver.resolve(new EnumMessage(AccountError.CompanyNotFound, sDf52.getDeal())); log.warn("By generationId={} s_df52[{}] error: {}", groupId, sDf52.getId(), msg); toProcessSDF53.add(new MutableTriple<>(sDf52, null, - makeSdfErrorText(AccountError.CompanyNotFound, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND))); + makeSdfErrorText(AccountError.CompanyNotFound, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND))); continue; } Map> accountQuery = Map.of( - "accountType", AccountType.Clrn.getKey(), - "account", sDf52.getAccount(), - "companyId", company.getId() + "accountType", AccountType.Clrn.getKey(), + "account", sDf52.getAccount(), + "companyId", company.getId() ); Account account = sDf52.getAccount() == null ? null : accountImdg.getFirstObjectByFieldValues(accountQuery); if (account == null) { if (SDFProcessService.SDF52_STATUS_3Open.equals(sDf52.getStatus())) { log.trace("By generationId={} s_df52[{}].status={}, account not found (query: {}). Try create new account.", - groupId, sDf52.getId(), sDf52.getStatus(), accountQuery); - account = createSdf52Account(sDf52.getAccount(),sDf52.getAcc_type(), company.getId(), systemRequest.getId()); + groupId, sDf52.getId(), sDf52.getStatus(), accountQuery); + account = createSdf52Account(sDf52.getAccount(), sDf52.getAcc_type(), company.getId(), systemRequest.getId()); if (account == null) { log.info("Can not create account: \"{}\", companyId={}. Ignore SDF52.id={}", - sDf52.getAccount(), company.getId(), sDf52.getId()); + sDf52.getAccount(), company.getId(), sDf52.getId()); continue; } } else { String msg = messageResolver.resolve(new EnumMessage(AccountError.AccountNotFound, sDf52.getAccount())); log.warn("By generationId={} s_df52[{}] (query: {}) error: {}", groupId, sDf52.getId(), accountQuery, msg); toProcessSDF53.add(new MutableTriple<>(sDf52, null, - makeSdfErrorText(AccountError.AccountNotFound, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND))); + makeSdfErrorText(AccountError.AccountNotFound, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND))); continue; } } @@ -530,27 +522,24 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } } log.debug("Selected to update {} account's", toUpdate.size()); - - // 4. to notification List notificationAccountIds = new ArrayList<>(); for (Pair item : toUpdate) { SDf52 sdf = item.getFirst(); Account account = item.getSecond(); AccountStatus newStatus = sdfProcessService.parseSdf52Status(sdf.getStatus()); - if (newStatus == null) { // never + if (newStatus == null) { throw new IllegalArgumentException("Can not parse sdf status " + sdf.getStatus()); } if (newStatus.equalsByKey(account.getStatus())) { - // одинаковых обычно не бывает. log.trace("In sDF_52[{}] for account [{}] status {} not changed.", sdf.getId(), account.getId(), newStatus); continue; } - if (AccountStatus.BLOCKED == newStatus || AccountStatus.CLOSE == newStatus) { // статус 0/2 + if (AccountStatus.BLOCKED == newStatus || AccountStatus.CLOSE == newStatus) { sendNotificationRequest(ObjectType.account_block, account, newStatus); notificationAccountIds.add(account.getId()); putNotificationWaiting(systemRequest, item.getFirst(), item.getSecond()); } - if (AccountStatus.ACTIVE == newStatus) { // статус 1/3 + if (AccountStatus.ACTIVE == newStatus) { sendNotificationRequest(ObjectType.account_active, account, newStatus); notificationAccountIds.add(account.getId()); putNotificationWaiting(systemRequest, item.getFirst(), item.getSecond()); @@ -561,7 +550,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin log.info("{} account's need wait accept over notification. GroupId={}", notificationAccountIds.size(), groupId); log.debug("successfully processed, grouping id={} with {} accounts.", - groupId, toUpdate.size()); + groupId, toUpdate.size()); return null; } @@ -589,32 +578,26 @@ public class ClearingAccountService extends QueueConsumer implements Initializin protected synchronized RequestInfoUpdate accountUpdateSdf52_part2(BaseRequest systemRequest1, SDf52 sdf, Account account, BaseRequest secondSystemRequest2) { - // 5. from notification: StatementRequest req = systemRequest1.getRequestPayload(); Long groupId = req.getGroupId(); log.info("Continue Sdf52 groupId={}, first request id={}, second request id={}", - groupId, systemRequest1 == null ? null : systemRequest1.getId(), secondSystemRequest2 == null ? null : secondSystemRequest2.getId()); + groupId, systemRequest1 == null ? null : systemRequest1.getId(), secondSystemRequest2 == null ? null : secondSystemRequest2.getId()); int countOfUpdated = 0; - - // 2. обновление данных Instant now = Instant.now(); AccountStatus newStatus = sdfProcessService.parseSdf52Status(sdf.getStatus()); if (newStatus == null) { throw new IllegalArgumentException("Can not parse sdf status " + sdf.getStatus()); } - // За долгое время ожидания пользователя счёт мог быть обновлён, прочитать его ещё раз account = accountImdg.getSingleObjectByID(account.getId()); if (!newStatus.equalsByKey(account.getStatus())) { - // Обновление счёта String oldStatus = account.getStatus(); account.setStatus(newStatus.getKey()); account.setUpdated(now); accountImdg.update(account); log.trace("S_DF52[{}] do update status to {} for account[{}]", - sdf.getId(), newStatus.getKey(), account.getId()); - if (AccountStatus.ACTIVE.equalsByKey(oldStatus) && AccountStatus.ACTIVE != newStatus) { // счёт заблокировали - значит блокируем ТКР, наоборот не надо. - // Отправка в ТКР + sdf.getId(), newStatus.getKey(), account.getId()); + if (AccountStatus.ACTIVE.equalsByKey(oldStatus) && AccountStatus.ACTIVE != newStatus) { TradingClearingRegistryUpdateRequest tcrReq = new TradingClearingRegistryUpdateRequest(); tcrReq.setMoneyAccountId(account.getId()); tcrReq.setCompanyId(account.getCompanyId()); @@ -639,7 +622,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } log.debug("successfully processed, grouping id={}. Updated {} accounts.", - groupId, countOfUpdated); + groupId, countOfUpdated); return null; } @@ -659,7 +642,7 @@ public class ClearingAccountService extends QueueConsumer implements Initializin request.setAccountCreationResults(results); request.setFromAccount(true); request.setContinueSdf(true); - request.setTable(SdfTable.SDF_01); // по нему запрос получили + request.setTable(SdfTable.SDF_01); log.debug("Send message to kafka \"{}\": {}", destination, LogFormatter.toStringWrapper(request)); kafkaSender.sendRequestToQueue(destination, request); } @@ -683,14 +666,10 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } - /** - * Формирование уведомления о добавлении счёта - */ public Long sendNotificationAccountNewRequest(Account account) { String message = String.format("Добавлен новый счет %s", account.getAccount()); final String destination = Consts.NOTIFICATION_NEW; NotificationNewRequest request = new NotificationNewRequest(); - //request.setObjectId(account.getId()); request.setObjectType(ObjectType.rgst.getKey()); request.setPriority(Priority.HIGH.getKey()); request.setComment(message); @@ -701,7 +680,6 @@ public class ClearingAccountService extends QueueConsumer implements Initializin } - // --------- notification apply system ----------- public static class SDF52WaitingData { public BaseRequest systemRequest; public SDf52 sdf; @@ -735,9 +713,6 @@ public class ClearingAccountService extends QueueConsumer implements Initializin return true; } - /** - * @return triggered SDF52WaitingData or null - */ public SDF52WaitingData onNotificationResponse(NotificationFeedbackRequest onNotification) { if (onNotification.getNotificationId() == null) { log.trace("notificationId was empty"); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java index e49dc9e21..26b2c6ed1 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/ClientCodeService.java @@ -80,7 +80,6 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean protected TradingClearingRegistryService tradingClearingRegistryService; protected ConfigurableApplicationContext context; private final KafkaSender kafkaSender; - //protected TradingClearingRegistryListService tradingClearingRegistryListService; @Autowired public ClientCodeService(Consumer kafkaQueue, @@ -91,7 +90,7 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean IMessageResolver messageResolver, RequestHelper requestHelper, TradingClearingRegistryService tradingClearingRegistryService, - ConfigurableApplicationContext context, //TradingClearingRegistryListService tradingClearingRegistryListService, + ConfigurableApplicationContext context, UserRoleVerification userRoleVerification, @Qualifier("clientCodeNewRequestValidator") Function clientCodeNewRequestValidator, @Qualifier("clientCodeUpdateRequestValidator") Function clientCodeUpdateRequestValidator, @@ -115,20 +114,12 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean this.messageResolver = messageResolver; this.userRoleVerification = userRoleVerification; this.tradingClearingRegistryService = tradingClearingRegistryService; - this.context = context; // TradingClearingRegistryListService + this.context = context; } @Override public void afterPropertiesSet() { imdgProvider.waitAvailable(); - -// callback(ClientCodeNewRequest.class) -// .setFunction(this::clientCodeNew) -// .forDestination(Consts.DESTINATION_CLIENT_CODE_NEW, callbacks::put); - //note переехало в ClientCodeMessageListener[новая версия сервиса] -// callback(TkrAccountsGatewayRequest.class) -// .setFunction(this::clientCodeNewFromGateway) -// .forDestination(Consts.DESTINATION_CLIENT_CODE_NEW_FROM_GATEWAY, callbacks::put); callback(ClientCodeNewRequest.class) .setFunction(this::clientCodeNewFromApiUmCompany) .forDestination(Consts.DESTINATION_CLIENT_CODE_NEW_UM_COMPANY, callbacks::put); @@ -143,19 +134,8 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean } - /** - * Проверки - * 3.5.1 если не была найдена запись в tradingClearingRegistry по companyId, moneyAccountId, depoAccountId и tradingClearingRegistryType=B (п 3.5.1) - * 3.5.2 если не заполнены поля moneyAccountId ИЛИ moneyAccountId и depoAccountId - * - * @param userRequest - * @param moneyAccountId req.getMoneyAccountId() - * @param depoAccountId req.getDepoAccountId() - * @param companyId req.getCompanyId() - * @return - */ RequestInfoUpdate crossValidate(BaseRequest userRequest, Long moneyAccountId, Long depoAccountId, Long companyId) { - if (moneyAccountId == null) { // Если не заполнены moneyAccountId ИЛИ moneyAccountId и depoAccountId + if (moneyAccountId == null) { EnumMessage error = null; if (companyId == null) { error = new EnumMessage(AccountError.RequiredFieldEmpty, "companyId"); @@ -182,7 +162,6 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean if (requestInfoUpdate != null) return requestInfoUpdate; ClientCodeNewRequest req = userRequest.getRequestPayload(); - // дополнительная проверка requestInfoUpdate = crossValidate(userRequest, req.getMoneyAccountId(), req.getDepoAccountId(), req.getCompanyId()); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -204,10 +183,9 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean ClientCode newClientCode = buildClientCode(req); clientCodeMap.insert(newClientCode); log.debug("successfully processed, new clientCode id {}", newClientCode.getId()); - } else {//fixme transaction! + } else { if (!fromTCRList) { - if (req.getMoneyAccountId() != null /*&& currencyAccountId != null*/) { - // Для каждого счета из списка (currencyAccountList) должна быть создана отдельная запись объекте clientCode с данным счетом для данного клиента + if (req.getMoneyAccountId() != null) { TradingClearingRegistry tcr = selectTradingClearingRegistry(req.getCompanyId(), req.getMoneyAccountId(), req.getDepoAccountId()); TradingClearingRegistryListNewRequest tcrListNewR = new TradingClearingRegistryListNewRequest(); @@ -261,7 +239,6 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean ClientCodeNewRequest req = userRequest.getRequestPayload(); - // дополнительная проверка requestInfoUpdate = crossValidate(userRequest, req.getMoneyAccountId(), req.getDepoAccountId(), req.getCompanyId()); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -283,10 +260,9 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean ClientCode newClientCode = buildClientCode(req); clientCodeMap.insert(newClientCode); log.debug("successfully processed, new clientCode id {}", newClientCode.getId()); - } else {//fixme transaction! + } else { if (!fromTCRList) { - if (req.getMoneyAccountId() != null /*&& currencyAccountId != null*/) { - // Для каждого счета из списка (currencyAccountList) должна быть создана отдельная запись объекте clientCode с данным счетом для данного клиента + if (req.getMoneyAccountId() != null) { TradingClearingRegistry tcr = selectTradingClearingRegistry(req.getCompanyId(), req.getMoneyAccountId(), req.getDepoAccountId()); TradingClearingRegistryListUpdateRequest tcrListUpdateR = new TradingClearingRegistryListUpdateRequest(); @@ -333,7 +309,6 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, clientCodeUpdateRequestValidator); if (requestInfoUpdate != null) return requestInfoUpdate; - // дополнительная проверка requestInfoUpdate = crossValidate(userRequest, req.getMoneyAccountId(), req.getDepoAccountId(), req.getCompanyId()); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -359,7 +334,6 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean } updateClientCode(clientCode, req); - //fixme спросить, у нас при апдейте передаётся clientCode.id которого надо изменять. А тут список currencyAccountList приходит - в нём что будет - только 1 счёт для него и его же менять? clientCodeMap.update(clientCode); log.debug("successfully processed update, id {}", clientCode.getId()); @@ -407,7 +381,6 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean } private boolean checkNeedCreateTCR(Long companyId, Long moneyAccountId, Long depoAccountId) { - // moneyAccountId обязателен, depoAccountId опционален if (moneyAccountId == null) { return false; } @@ -431,11 +404,8 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean requestPayload.setCompanyId(companyId); requestPayload.setMoneyAccountId(moneyAccountId); requestPayload.setDepoAccountId(depoAccountId); -// requestPayload.setStatus(WorkflowStatus.Active.getKey()); requestPayload.setTradingClearingRegistryType(TradingClearingRegistryType.Client_B.getKey()); request.setRequestPayload(requestPayload); - - // Следующий вызываемый метод обязательно должен быть synchronized. RequestInfoUpdate reply = tradingClearingRegistryService.tradingClearingRegistryNew(request); if (reply != null && Status.Error.equals(reply.getStatus())) { log.warn("tradingClearingRegistryService return error: " + reply.getMessage()); @@ -465,11 +435,6 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean } - /** - * @param queue Consts.* - * @param message BaseRequest - * @return - */ private Long sendMessage(String queue, BaseRequest message) { Long sentRequestId = message.getId(); if (sentRequestId == null) { @@ -493,13 +458,8 @@ public class ClientCodeService extends QueueConsumer implements InitializingBean return null; } - /** - * @param req требуется заполнить tradingClearingRegistryId по tradingClearingRegistry.code - * @return - */ private ClientCode buildClientCode(ClientCodeNewRequest req) { ClientCode clientCode = new ClientCode(); -// clientCode.setId(idSequence.newId()); add in insert clientCode.setCreated(Instant.now()); clientCode.setUpdated(clientCode.getCreated()); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java index b3ab1e5ba..70838e0a0 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/DepoAccountService.java @@ -157,8 +157,6 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea accountsLoop: for (AccountSdfRequestPart accountReq : req.getAccounts()) { -// DepoAccountNewRequest req = userRequest.getRequestPayload(); - Instant now = Instant.now(); Account account = new Account(); account.setAccount(accountReq.getAccount()); @@ -169,11 +167,11 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea account.setUpdated(now); RequestInfoUpdate requestInfoUpdate = accountService.fillAccountFromRelation(account, userRequest.getId(), true); if (requestInfoUpdate != null) { - log.warn("Error fill new account from relation. {}", /*account.getId(),*/ requestInfoUpdate.getMessage()); + log.warn("Error fill new account from relation. {}", requestInfoUpdate.getMessage()); { AccountSdfToStatementRequestPart responsePart = new AccountSdfToStatementRequestPart(); responsePart.setSdfId(accountReq.getSdfId()); - responsePart.setErrorCode(AccountError.ClearingCategoryNotFound.getId()); // see accountService.fillAccountFromRelation + responsePart.setErrorCode(AccountError.ClearingCategoryNotFound.getId()); responsePart.setErrorText(requestInfoUpdate.getMessage()); accountToStatement.add(responsePart); continue accountsLoop; @@ -208,7 +206,6 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea depoAccountId = depoAccountImdg.insert(depoAccount); - log.debug("New account {}, depoAccount {} was created.", accountId, depoAccountId); { @@ -247,19 +244,15 @@ public class DepoAccountService extends QueueConsumer implements InitializingBea request.setContinueSdf(true); request.setAccountCreationResults(results); request.setFromAccount(true); - request.setTable(SdfTable.SDF_08); // по нему запрос получили + request.setTable(SdfTable.SDF_08); log.debug("Send message to kafka \"{}\": {}", Consts.STATEMENT_PROCESS, LogFormatter.toStringWrapper(request)); kafkaSender.sendRequestToQueue(Consts.STATEMENT_PROCESS, request); } - /** - * Формирование уведомления о добавлении счёта - */ public Long sendNotificationAccountNewRequest(Account account) { String message = String.format("Добавлен новый счет %s", account.getAccount()); final String destination = Consts.NOTIFICATION_NEW; NotificationNewRequest request = new NotificationNewRequest(); - //request.setObjectId(account.getId()); request.setObjectType(ObjectType.rgst.getKey()); request.setPriority(Priority.HIGH.getKey()); request.setComment(message); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java index 1a98c6b2c..a34893883 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/InformationAccountService.java @@ -60,10 +60,6 @@ public class InformationAccountService extends QueueConsumer implements Initiali private final Function infoAccountNewRequestValidator; private final Imdg informationAccountImdg; private final Imdg accountImdg; - /** - * Кэш-счётчик сквозных номеров счетов. - * См. accountNextId() - */ protected Map infoCounterByCurrency = new HashMap<>(); @Autowired @@ -116,7 +112,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali if (requestInfoUpdate != null) return requestInfoUpdate; InformationAccountNewRequest req = userRequest.getRequestPayload(); - String currency = req.getCurrency() == null ? CurrencyCode.RUB.getKey() : req.getCurrency(); //userRequest.getRequestPayload().getCurrency(); + String currency = req.getCurrency() == null ? CurrencyCode.RUB.getKey() : req.getCurrency(); Long newId = informationAccountImdg.nextIDSequenceFor(); Long infoSequenceId = accountNextId(currency, 810L); @@ -194,12 +190,10 @@ public class InformationAccountService extends QueueConsumer implements Initiali log.debug("InformationAccountNewRequest received (system), request id={}", userRequest.getId()); RequestInfoUpdate requestInfoUpdate; -// RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, infoAccountNewRequestValidator); -// if (requestInfoUpdate != null) return requestInfoUpdate; final Long forCompanyId = userRequest.getRequestPayload().getCompanyId(); ImdgPredicateBuilder pb = accountImdg.predicateBuilder(); - { // Проверка существования счёта + { Collection accountsAnlt = accountImdg.getCollectionObjectsByFieldValues(Map.of( "companyId", forCompanyId, "accountType", AccountType.Info.getKey() @@ -216,7 +210,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali if (currency == null) currency = CurrencyCode.RUB.getKey(); Long newId = informationAccountImdg.nextIDSequenceFor(); - Long infoSequenceId = accountNextId(currency, 810L); // требуется последовательность n+1 + Long infoSequenceId = accountNextId(currency, 810L); String accountValue = generateInfoAccount(810L, infoSequenceId); log.trace("New info-account id={}, sequenceId={}, account={}", newId, infoSequenceId, accountValue); @@ -283,17 +277,12 @@ public class InformationAccountService extends QueueConsumer implements Initiali imdgTransaction.rollbackTransaction(); } } - - // send to kafka sendNotificationToReport(informationAccount, account); return null; } - /** - * Формирование уведолмения о регистрации УК - */ protected void sendNotificationToReport(InformationAccount informationAccount, Account account) { NotificationRequest request = new NotificationRequest(); request.setConsumerId(account.getCompanyId()); @@ -309,16 +298,10 @@ public class InformationAccountService extends QueueConsumer implements Initiali return accountNextId(currency, 810L); } - /** - * Сквозной номер инфо-счетов - * - * @param - * @return infoCounter++ - */ public synchronized Long accountNextId(String currency, Long currencyCodeId) { String idWithTrailingZero = String.format("%03d", currencyCodeId); if (currency == null) - currency = CurrencyCode.RUB.getKey(); // default + currency = CurrencyCode.RUB.getKey(); AtomicLong infoCounter = infoCounterByCurrency.get(currency); if (infoCounter == null) synchronized (this) { if (infoCounter == null) { @@ -342,7 +325,7 @@ public class InformationAccountService extends QueueConsumer implements Initiali Pattern accPattern = Pattern.compile("39911%s([0-9]{8})7000".formatted(idWithTrailingZero)); int maxN = 1; int parsedCount = 0; - String lastAccount = null; // for debug + String lastAccount = null; for (Account acc : allInfoAcc) { try { String number = acc.getAccount(); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java index e22cfa248..4271fc4e5 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/SDFProcessService.java @@ -27,12 +27,12 @@ import ru.spcex.platform.imdg.api.ImdgTransaction; @Service public class SDFProcessService { - public static final String SDF_STATUS_OK = "OK"; // (Операция выполнена успешно) - если account обновлена по sDf52; - public static final String SDF_STATUS_ERROR_REPEAT = "1"; // (Ошибка. Попытка повторно исполнить операцию) - public static final String SDF_STATUS_ERROR_COMPANY_NOT_FOUND = "2"; // (Ошибка. Участник не найден) - если получена ошибка (5013) "Компания %s не найдена" (т.е. account НЕ обновлена по sDf52); - public static final String SDF_STATUS_ERROR_LIMIT_SUMM = "3"; // (Ошибка. Сумма списания превышает сумму средств на торговом счете участника в ТС) - public static final String SDF_STATUS_ERROR_NO_TRADE = "4"; // (Ошибка. Торги не идут) - public static final String SDF_STATUS_ERROR = "9"; // (Другие ошибки, выявленные в КС) - если получены другие ошибки (т.е. account НЕ обновлена по sDf52). + public static final String SDF_STATUS_OK = "OK"; + public static final String SDF_STATUS_ERROR_REPEAT = "1"; + public static final String SDF_STATUS_ERROR_COMPANY_NOT_FOUND = "2"; + public static final String SDF_STATUS_ERROR_LIMIT_SUMM = "3"; + public static final String SDF_STATUS_ERROR_NO_TRADE = "4"; + public static final String SDF_STATUS_ERROR = "9"; protected static final Long SDF52_STATUS_0Blocked = 0L; protected static final Long SDF52_STATUS_1Unblocked = 1L; @@ -76,7 +76,7 @@ public class SDFProcessService { boolean txOk = false; imdgTransaction.beginTransaction(); HashSet fileNames = new HashSet<>(); - try { // 2. обновление данных, в транзакции + try { Imdg sdf53Imdg = imdgTransaction.getImdg(IMDGDistributedNames.Map_SDf53, SDf53.class); Instant now = Instant.now(); @@ -116,9 +116,9 @@ public class SDFProcessService { newSdf.setResult(result); newSdf.setGenerationTime(now); newSdf.setGenerationId(sdf52.getGenerationId()); - if (!Objects.equals(newGenerationId, newSdf.getGenerationId())) { // never + if (!Objects.equals(newGenerationId, newSdf.getGenerationId())) { log.warn("Different GenerationId={} for sdf53[{}] and GenerationId={} for group of sdf52", - newSdf.getGenerationId(), newSdf.getId(), newGenerationId + newSdf.getGenerationId(), newSdf.getId(), newGenerationId ); } newSdf.setInSDfId(sdf52.getId()); @@ -126,10 +126,6 @@ public class SDFProcessService { } - /** - * @param status sdf.getStatus() - * @return AccountStatus или null - */ public AccountStatus parseSdf52Status(Long status) { if (SDF52_STATUS_1Unblocked.equals(status) || SDF52_STATUS_3Open.equals(status)) { return AccountStatus.ACTIVE; @@ -144,9 +140,9 @@ public class SDFProcessService { void messageStatementToExport53(Long groupId, String fileName) { - final String destination = Consts.EXPORT_PROCESS; // dbf-exporter + final String destination = Consts.EXPORT_PROCESS; ExportToFileRequest request = new ExportToFileRequest(); - request.setNameOfTable("DF-53"); // SdfTable.SDF_53 + request.setNameOfTable("DF-53"); request.setSdfGroupId(groupId); request.setFileName(fileName); Long msgId = kafkaSender.sendRequestToQueue(destination, request); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryListService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryListService.java index 49d1b7ab4..e43eabbae 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryListService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryListService.java @@ -63,7 +63,6 @@ public class TradingClearingRegistryListService extends QueueConsumer implements private final Function tradingClearingRegistryListUpdateRequestValidator; private final RequestHelper requestHelper; private final Function tradingClearingRegistryListNewRequestValidator; -// private final Function tradingClearingRegistryListBlockRequestValidator; private final IMessageResolver messageResolver; private final Producer kafkaProducer; @@ -79,10 +78,10 @@ public class TradingClearingRegistryListService extends QueueConsumer implements IMessageResolver messageResolver, RequestHelper requestHelper, @Qualifier("tradingClearingRegistryListNewRequestValidator") - Function tradingClearingRegistryListNewRequestValidator, + Function tradingClearingRegistryListNewRequestValidator, @Qualifier("tradingClearingRegistryListUpdateRequestValidator") - Function tradingClearingRegistryListUpdateRequestValidator - ) { + Function tradingClearingRegistryListUpdateRequestValidator + ) { super(kafkaQueue, kafkaProducer); this.kafkaProducer = kafkaProducer; this.kafkaSender = kafkaSender; @@ -100,7 +99,6 @@ public class TradingClearingRegistryListService extends QueueConsumer implements this.relationImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); this.tradingClearingRegistryListNewRequestValidator = tradingClearingRegistryListNewRequestValidator; this.tradingClearingRegistryListUpdateRequestValidator = tradingClearingRegistryListUpdateRequestValidator; -// this.tradingClearingRegistryListBlockRequestValidator = tradingClearingRegistryListBlockRequestValidator; this.messageResolver = messageResolver; this.clientCodeService = clientCodeService; } @@ -109,11 +107,11 @@ public class TradingClearingRegistryListService extends QueueConsumer implements public void afterPropertiesSet() throws Exception { imdgProvider.waitAvailable(); callback(TradingClearingRegistryListNewRequest.class) - .setFunction(this::tradingClearingRegistryListNew) - .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_NEW, callbacks::put); + .setFunction(this::tradingClearingRegistryListNew) + .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_NEW, callbacks::put); callback(TradingClearingRegistryListUpdateRequest.class) - .setFunction(this::tradingClearingRegistryListUpdate) - .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_UPDATE, callbacks::put); + .setFunction(this::tradingClearingRegistryListUpdate) + .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_UPDATE, callbacks::put); init(); } @@ -123,7 +121,6 @@ public class TradingClearingRegistryListService extends QueueConsumer implements @Deprecated protected RequestInfoUpdate tradingClearingRegistryListNew0(BaseRequest userRequest, boolean innerCall) { - // fixme объединить с путом а то лист может быть пустой. и чистить... log.debug("TradingClearingRegistryListNewRequest received"); RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(userRequest); if (requestInfoUpdate != null) { @@ -143,8 +140,8 @@ public class TradingClearingRegistryListService extends QueueConsumer implements TradingClearingRegistryListNewRequest req = userRequest.getRequestPayload(); Instant now = Instant.now(); - List newIds=new ArrayList<>(); - for (Long currAccId: req.getCurrencyAccountList()) { + List newIds = new ArrayList<>(); + for (Long currAccId : req.getCurrencyAccountList()) { Long id = tradingClearingRegistryListImdg.nextIDSequenceFor(); TradingClearingRegistryList tradingClearingRegistryList = new TradingClearingRegistryList(); tradingClearingRegistryList.setId(id); @@ -167,7 +164,6 @@ public class TradingClearingRegistryListService extends QueueConsumer implements log.info("New TCRList.id={} has created.", newIds); if (!innerCall) { - // Для каждого счета из списка (currencyAccountList) должна быть создана отдельная запись объекте clientCode с данным счетом для данного клиента, т.е. у одного клиента может быть несколько валютных счетов. try { ClientCodeNewRequest cCodeReq = new ClientCodeNewRequest(); cCodeReq.setTradingClearingRegistryId(req.getTradingClearingRegistryId()); @@ -176,15 +172,14 @@ public class TradingClearingRegistryListService extends QueueConsumer implements cCodeReq.setCompanyId(tcr.getCompanyId()); cCodeReq.setCurrencyAccountList(req.getCurrencyAccountList()); cCodeReq.setStatus(req.getStatus()); - //todo cCodeReq.setCode(); BaseRequest request2 = new BaseRequest<>(); request2.setRequestPayload(cCodeReq); requestInfoUpdate = clientCodeService.clientCodeNew0(request2, true); if (requestInfoUpdate != null) return requestInfoUpdate; } catch (Exception e) { log.error("Can not wait creation of tradingClearingRegistryList. request id={}; {}", - userRequest.getId(), - ExceptionUtils.getStackTrace(e)); + userRequest.getId(), + ExceptionUtils.getStackTrace(e)); return requestHelper.makeErrorResponse(userRequest, AccountError.GeneralError, "Can not create TCR: " + e.getMessage()); } @@ -233,27 +228,6 @@ public class TradingClearingRegistryListService extends QueueConsumer implements log.info("New TCRList.id={} has created.", id); if (!innerCall) { - // Для каждого счета из списка (currencyAccountList) должна быть создана отдельная запись объекте clientCode с данным счетом для данного клиента, т.е. у одного клиента может быть несколько валютных счетов. -// try { -// TradingClearingRegistry tcr = tradingClearingRegistryImdg.getSingleObjectByID(req.getTradingClearingRegistryId()); -// ClientCodeNewRequest cCodeReq = new ClientCodeNewRequest(); -// cCodeReq.setTradingClearingRegistryId(req.getTradingClearingRegistryId()); -// cCodeReq.setDepoAccountId(tcr.getDepoAccountId()); -// cCodeReq.setMoneyAccountId(tcr.getMoneyAccountId()); -// cCodeReq.setCompanyId(tcr.getCompanyId()); -// cCodeReq.setCurrencyAccountList(Arrays.asList(req.getAccountId())); // todo rewrite API -// cCodeReq.setStatus(tradingClearingRegistryList.getStatus()); -// //todo cCodeReq.setCode(); -// BaseRequest request2 = new BaseRequest<>(); -// request2.setRequestPayload(cCodeReq); -// requestInfoUpdate = clientCodeService.clientCodeNew0(request2, true); -// if (requestInfoUpdate != null) return requestInfoUpdate; -// } catch (Exception e) { -// log.error("Can not wait creation of tradingClearingRegistryList. request id={}; {}", -// userRequest.getId(), -// ExceptionUtils.getStackTrace(e)); -// return requestHelper.makeErrorResponse(userRequest, AccountError.GeneralError, "Can not create TCR: " + e.getMessage()); -// } } @@ -289,8 +263,6 @@ public class TradingClearingRegistryListService extends QueueConsumer implements log.debug("Nothing to update TCRList.id={}.", tradingClearingRegistryList.getId()); } - //todo нужно ли слать уведомления sendNotificationToClearingSvc? - log.debug("successfully processed, id {}", tradingClearingRegistryList.getId()); return null; } @@ -298,12 +270,10 @@ public class TradingClearingRegistryListService extends QueueConsumer implements @Deprecated protected void sendNotificationToClearingSvc(List tradingClearingRegistries, TradingClearingRegistry tcr) { - for (Long tradingClearingRegistryId:tradingClearingRegistries) + for (Long tradingClearingRegistryId : tradingClearingRegistries) sendNotificationToClearingSvc(tradingClearingRegistryId, tcr); } - /** - * clearing-service сообщение на открытие клиринговых регистров; - */ + protected void sendNotificationToClearingSvc(Long tradingClearingRegistryId, TradingClearingRegistry tcr) { CreateRegistryRequest request = new CreateRegistryRequest(); request.setTcrListId(tradingClearingRegistryId); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java index 646decd21..a6568061e 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/TradingClearingRegistryService.java @@ -124,7 +124,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini this.clientCodeImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class); this.companySymbolsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); this.tradingClearingRegistryNewRequestValidator = tradingClearingRegistryNewRequestValidator; - this.tradingClearingRegistryAutoNewRequestValidator = tradingClearingRegistryNewRequestValidator; // без relation. + this.tradingClearingRegistryAutoNewRequestValidator = tradingClearingRegistryNewRequestValidator; this.tradingClearingRegistryUpdateRequestValidator = tradingClearingRegistryUpdateRequestValidator; this.tradingClearingRegistryBlockRequestValidator = tradingClearingRegistryBlockRequestValidator; this.messageResolver = messageResolver; @@ -133,7 +133,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini @Override public void afterPropertiesSet() throws Exception { imdgProvider.waitAvailable(); - callback(TradingClearingRegistryNewRequest.class) // todo deprecated - unused. + callback(TradingClearingRegistryNewRequest.class) .setFunction(this::tradingClearingRegistryAutoNew) .forDestination(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW, callbacks::put); callback(TradingClearingRegistryNewRequest.class) @@ -174,18 +174,13 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini Account depoAccountMain = req.getDepoAccountId() != null ? accountImdg.getSingleObjectByID(req.getDepoAccountId()) : null; DepoAccount depoAccount = depoAccountMain != null ? depoAccountImdg.getFirstObjectByFieldValues(Map.of("accountId", req.getDepoAccountId())) : null; - -// InformationAccount infoAccount = null; ClearingAccount clearingAccount = null; Account accountMain = null; if (req.getMoneyAccountId() != null) { clearingAccount = clearingAccountImdg.getFirstObjectByFieldValues(Map.of("accountId", req.getMoneyAccountId())); -// if (clearingAccount == null) infoAccount = informationAccountImdg.getSingleObjectByFieldValues(Map.of("accountId", req.getMoneyAccountId())); - Long accountId = req.getMoneyAccountId(); //clearingAccount != null ? clearingAccount.getAccountId() : infoAccount.getAccountId(); + Long accountId = req.getMoneyAccountId(); accountMain = accountImdg.getSingleObjectByID(accountId); } - - // кроссвалидация if (req.getMoneyAccountId() == null && (req.getMoneyAccountId() == null || req.getDepoAccountId() == null)) { TradingClearingRegistry registryByCompany = tradingClearingRegistryImdg.getFirstObjectByFieldValues(Map.of("companyId", req.getCompanyId())); if (registryByCompany == null) { @@ -225,7 +220,7 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini } if (accountId != null) { accountMain = accountImdg.getSingleObjectByID(accountId); - if (accountMain == null) { // never, только с инконсистентными данными + if (accountMain == null) { log.warn("Account {} not exist.", accountId); } else { tradingClearingRegistry.setMoneyAccountId(accountId); @@ -283,7 +278,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistry.setTradingClearingRegistryType(tradingRegistryType); TradingClearingRegistryPurpose registryPurpose = TradingClearingRegistryPurpose.C; - //http://jira.mfd.msk:8088/browse/CLS-631#comment-60200 tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey()); Company company = companyImdg.getSingleObjectByID(req.getCompanyId()); @@ -298,9 +292,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini tradingClearingRegistryImdg.insert(tradingClearingRegistry); log.debug("New TCR.id={} was created", tradingClearingRegistry.getId()); - -// sendNotificationToCompanySvc(tradingClearingRegistry); при автосоздании ТКР в company-service не отправлять. -// sendNotificationToClearingSvc(tradingClearingRegistry); sendNotificationToReportSvc(tradingClearingRegistry); sendNotificationToClearingSvc(tradingClearingRegistry); @@ -321,7 +312,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini } TradingClearingRegistryNewRequest req = userRequest.getRequestPayload(); - // Дополнительная проверка if (req.getMoneyAccountId() == null && (req.getMoneyAccountId() == null || req.getDepoAccountId() == null)) { TradingClearingRegistry registryByCompany = tradingClearingRegistryImdg.getFirstObjectByFieldValues(Map.of("companyId", req.getCompanyId())); if (registryByCompany == null) { @@ -359,8 +349,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini else tradingRegistryType = TradingClearingRegistryType.Owner_A.getKey(); } tradingClearingRegistry.setTradingClearingRegistryType(tradingRegistryType); - - //http://jira.mfd.msk:8088/browse/CLS-631#comment-60200 TradingClearingRegistryPurpose registryPurpose = TradingClearingRegistryPurpose.C; tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey()); @@ -435,15 +423,14 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini if (code.length() > 4) code = code.substring(code.length() - 4); code = "%4s".formatted(code).replace(' ', '0'); -// code += registryPurpose.getKey(); // C / M / ... - code += "C";//пока ставим всегда С, возможно придется откатить - String trType = tradingRegistryType + "T"; // 2 символа + code += "C"; + String trType = tradingRegistryType + "T"; code += trType; String sId = "%5s".formatted(id).replace(' ', '0'); if (sId.length() > 5) sId = sId.substring(sId.length() - 5); code += sId; - return code; // 12 символов + return code; } public RequestInfoUpdate tradingClearingRegistryUpdate(BaseRequest userRequest) { @@ -456,16 +443,13 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini TradingClearingRegistryUpdateRequest req = userRequest.getRequestPayload(); TradingClearingRegistry tradingClearingRegistry = tradingClearingRegistryImdg.getSingleObjectByID(req.getId()); - - // кроссвалидация - нельзя менять эти поля: if (req.getMoneyAccountId() != null && !req.getMoneyAccountId().equals(tradingClearingRegistry.getMoneyAccountId())) { return requestHelper.makeErrorResponse(userRequest, AccountError.WrongFieldValue, "MoneyAccountId", req.getMoneyAccountId()); } - if (tradingClearingRegistry.getDepoAccountId() != null && // но можно с null заменить + if (tradingClearingRegistry.getDepoAccountId() != null && req.getDepoAccountId() != null && !req.getDepoAccountId().equals(tradingClearingRegistry.getDepoAccountId())) { return requestHelper.makeErrorResponse(userRequest, AccountError.WrongFieldValue, "DepoAccountId", req.getDepoAccountId()); } -// tradingClearingRegistry.setMoneyAccountId(req.getMoneyAccountId()); if (req.getStatus() != null && !Objects.equals(req.getStatus(), tradingClearingRegistry.getStatus()) || req.getDepoAccountId() != null && !req.getDepoAccountId().equals(tradingClearingRegistry.getDepoAccountId()) @@ -630,9 +614,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini return Optional.empty(); } - /** - * company-service сообщение об успешном добавлении ТКР клиента с параметром tradingClearingRegistry.code - */ protected void sendNotificationToCompanySvc(TradingClearingRegistry tradingClearingRegistry) { ClientCodeNewRequest request = new ClientCodeNewRequest(); request.setTradingClearingRegistryId(tradingClearingRegistry.getId()); @@ -644,9 +625,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini kafkaSender.sendRequestToQueue(Consts.DESTINATION_CLIENT_CODE_NEW_UM_COMPANY, request); } - /** - * clearing-service сообщение на открытие клиринговых регистров; - */ protected void sendNotificationToClearingSvc(TradingClearingRegistry tradingClearingRegistry) { CreateRegistryRequest request = new CreateRegistryRequest(); request.setCompanyId(tradingClearingRegistry.getCompanyId()); @@ -655,9 +633,6 @@ public class TradingClearingRegistryService extends QueueConsumer implements Ini kafkaSender.sendRequestToQueue(Consts.REGISTRY_NEW, request); } - /** - * report-service сообщение на формирование уведомления о создании нового ТКР - */ protected void sendNotificationToReportSvc(TradingClearingRegistry tradingClearingRegistry) { NotificationRequest request = new NotificationRequest(); request.setConsumerId(tradingClearingRegistry.getCompanyId()); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/ClientCodeFacade.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/ClientCodeFacade.java index a0b7cd4ca..7b0110655 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/ClientCodeFacade.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/ClientCodeFacade.java @@ -36,9 +36,6 @@ public class ClientCodeFacade implements IClearingFacade { this.tradingClearingRegistryListFacade = tradingClearingRegistryListFacade; } - /** - * Создает clientCode, TCR и опционально TCRList, если указаны валюты. - */ public void createClientCode(ClientCodeNewRequest request, IValidator validator) { log.trace("Start process creating new client code"); TradingClearingRegistry tradingClearingRegistry; @@ -75,48 +72,9 @@ public class ClientCodeFacade implements IClearingFacade { } } -// public void createClientCode(ClientCodeBusiness businessRequest) { -// log.trace("Start process creating new client code"); -// TradingClearingRegistry tradingClearingRegistry; -// { -// log.debug("Trading Clearing Registry is not exist, creating..."); -// TradingClearingRegistryBusiness creationTcrRequest = new TradingClearingRegistryBusiness(); -// creationTcrRequest.setCompanyId(request.getCompanyId()); -// creationTcrRequest.setMoneyAccountId(request.getMoneyAccountId()); -// creationTcrRequest.setDepoAccountId(request.getDepoAccountId()); -// creationTcrRequest.setTradingClearingRegistryType(TradingClearingRegistryType.Client_B.getKey()); -// tradingClearingRegistry = tradingClearingRegistryFacade.createTradingClearingRegistry(creationTcrRequest, null); -// } -// { -// if (request.getCurrencyAccountList() != null && !request.getCurrencyAccountList().isEmpty()) { -// TradingClearingRegistryListNewRequest tcrListNew = new TradingClearingRegistryListNewRequest(); -// tcrListNew.setTradingClearingRegistryId(tradingClearingRegistry.getId()); -// tcrListNew.setCurrencyAccountList(request.getCurrencyAccountList()); -// List tkrListIds = tradingClearingRegistryListFacade.createTradingClearingRegistryList(tcrListNew, null); -// } -// } -// -// { -// ClientCode clientCode = new ClientCode(); -// clientCode.setCreated(Instant.now()); -// clientCode.setUpdated(clientCode.getCreated()); -// -// clientCode.setCompanyId(request.getCompanyId()); -// clientCode.setCode(request.getCode()); -// clientCode.setMoneyAccountId(request.getMoneyAccountId()); -// clientCode.setDepoAccountId(request.getDepoAccountId()); -// clientCode.setStatus(request.getStatus()); -// clientCodeImdg.insert(clientCode); -// log.debug("successfully processed, new clientCode id {}", clientCode.getId()); -// } -// } public void lock() { -// tradingClearingRegistryFacade.lock() -// tradingClearingRegistryListFacade.lock() } public void unlock() { -// tradingClearingRegistryFacade.lock() -// tradingClearingRegistryListFacade.lock() } } diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/TradingClearingRegistryFacade.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/TradingClearingRegistryFacade.java index 2a7b8c0f6..e234c2a5b 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/TradingClearingRegistryFacade.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/facade/TradingClearingRegistryFacade.java @@ -79,8 +79,6 @@ public class TradingClearingRegistryFacade { else tradingRegistryType = TradingClearingRegistryType.Owner_A.getKey(); } tradingClearingRegistry.setTradingClearingRegistryType(tradingRegistryType); - - //http://jira.mfd.msk:8088/browse/CLS-631#comment-60200 TradingClearingRegistryPurpose registryPurpose = TradingClearingRegistryPurpose.C; tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey()); @@ -113,42 +111,15 @@ public class TradingClearingRegistryFacade { businessRequest.getDepoAccount().ifPresent(depoAccount -> tradingClearingRegistry.setDepoAccountId(depoAccount.getId())); ; - if (businessRequest.getTradingClearingRegistryType().isEmpty()){ - if (businessRequest.getDepoAccount().isPresent()){ + if (businessRequest.getTradingClearingRegistryType().isEmpty()) { + if (businessRequest.getDepoAccount().isPresent()) { } } -// ClearingAccount clearingAccount = request.getMoneyAccountId() != null ? -// clearingAccountImdg.getFirstObjectByFieldValues(Map.of("accountId", request.getMoneyAccountId())) : null; -// -// if (request.getStatus() == null) { -// tradingClearingRegistry.setStatus(ServiceStatus.Active.getKey()); -// log.trace("TCR status in request not set. Use default: {}", tradingClearingRegistry.getStatus()); -// } else { -// tradingClearingRegistry.setStatus(request.getStatus()); -// log.trace("TCR status in request set: {}", tradingClearingRegistry.getStatus()); -// } -// -// String tradingRegistryType; -// if (request.getTradingClearingRegistryType() != null) { -// tradingRegistryType = request.getTradingClearingRegistryType(); -// } else if (depoAccount != null) { -// tradingRegistryType = depoAccount.getDepoAccountType(); -// } else { -// if (clearingAccount != null) tradingRegistryType = clearingAccount.getClearingAccountType(); -// else tradingRegistryType = TradingClearingRegistryType.Owner_A.getKey(); -// } -// tradingClearingRegistry.setTradingClearingRegistryType(tradingRegistryType); - - //http://jira.mfd.msk:8088/browse/CLS-631#comment-60200 TradingClearingRegistryPurpose registryPurpose = TradingClearingRegistryPurpose.C; tradingClearingRegistry.setTradingClearingRegistryPurpose(registryPurpose.getKey()); Company company = businessRequest.getCompany(); -// Long seqId = companySequenceNextId(company.getId(), registryPurpose, tradingRegistryType); -// String code = makeCode(company.getClearingCode(), registryPurpose, tradingRegistryType, seqId); -// log.debug("For new TCR.id={} of companyId={} next sequence={}; code={}", id, company.getId(), seqId, code); -// tradingClearingRegistry.setCode(code); Instant now = Instant.now(); tradingClearingRegistry.setCreated(now); @@ -217,15 +188,14 @@ public class TradingClearingRegistryFacade { if (code.length() > 4) code = code.substring(code.length() - 4); code = "%4s".formatted(code).replace(' ', '0'); -// code += registryPurpose.getKey(); // C / M / ... - code += "C";//пока ставим всегда С, возможно придется откатить - String trType = tradingRegistryType + "T"; // 2 символа + code += "C"; + String trType = tradingRegistryType + "T"; code += trType; String sId = "%5s".formatted(id).replace(' ', '0'); if (sId.length() > 5) sId = sId.substring(sId.length() - 5); code += sId; - return code; // 12 символов + return code; } private void sendNotificationToClearingSvc(TradingClearingRegistry tradingClearingRegistry) { @@ -236,9 +206,6 @@ public class TradingClearingRegistryFacade { kafkaSender.sendRequestToQueue(Consts.REGISTRY_NEW, request); } - /** - * report-service сообщение на формирование уведомления о создании нового ТКР - */ private void sendNotificationToReportSvc(TradingClearingRegistry tradingClearingRegistry) { NotificationRequest request = new NotificationRequest(); request.setConsumerId(tradingClearingRegistry.getCompanyId()); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java index ee8a81f81..38107daea 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/service/v2/listeners/ClientCodeMessageListener.java @@ -67,12 +67,9 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali @Override public void afterPropertiesSet() { imdgProvider.waitAvailable(); - - //from backend-api requests callback(ClientCodeNewRequest.class) .setFunction(this::clientCodeNewFromBackend) .forDestination(Consts.DESTINATION_CLIENT_CODE_NEW, callbacks::put); - //from gateway requests callback(TkrAccountsGatewayRequest.class) .setFunction(this::clientCodeNewFromGateway) .forDestination(Consts.DESTINATION_CLIENT_CODE_NEW_FROM_GATEWAY, callbacks::put); @@ -84,7 +81,6 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali private RequestInfoUpdate clientCodeNewFromGateway(BaseRequest tkrRequest) { clientCodeFacade.lock(); - //валидация запроса TkrAccountsGatewayRequest gatewayRequest = tkrRequest.getRequestPayload(); SendTkrRequest sendTkrRequest = new SendTkrRequest(); @@ -115,8 +111,6 @@ public class ClientCodeMessageListener extends QueueConsumer implements Initiali kafkaSender.sendRequestToQueue(Consts.ACCOUNTS_TO_GATEWAY, sendTkrRequest); return null; } - - //unwrap запроса for (Map.Entry entry : accountsAfterValidation.entrySet()) { ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest(); TkrAccount tkrAccount = entry.getKey(); diff --git a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/AccountValidationRule.java b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/AccountValidationRule.java index 50eff5996..c7f172973 100644 --- a/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/AccountValidationRule.java +++ b/clearing-parent/account-service/src/main/java/ru/spcex/clearing/account/validation/AccountValidationRule.java @@ -28,7 +28,6 @@ public enum AccountValidationRule implements IValidationRule ids = validatedObject.getCurrencyAccountList(); if (ids == null || ids.isEmpty()) { - return empty(); // необязательное поле + return empty(); } Imdg imdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); for (Long id : ids) { - if (id == null) { // null значения в массиве не ожидаются + if (id == null) { return of(AccountError.RequiredFieldEmpty, "accountId"); } Account byIdObject = imdg.getSingleObjectByID(id); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java index 7c8d046c1..8a9411903 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountServiceTest.java @@ -186,15 +186,11 @@ class AccountServiceTest { String jsonString = getJsonStringForUpdate(correspondentAccountUpdateRequest, 0); - - //ACT addRecordToKafka((MockConsumer) accountService.getConsumer(), - Consts.DESTINATION_CORRESPONDENT_ACCOUNT_UPDATE, - PARTITION, - 0, - jsonString); - - //ASSERT + Consts.DESTINATION_CORRESPONDENT_ACCOUNT_UPDATE, + PARTITION, + 0, + jsonString); waitingSendAndCheckRecord(0L, mockProducer); Account resultUpdating = accountImdg.getSingleObjectByID(accountId); @@ -224,15 +220,11 @@ class AccountServiceTest { commonDeleteRequest.setId(accountId); String jsonString = getJsonStringForDelete(commonDeleteRequest, 0); - - //ACT addRecordToKafka((MockConsumer) accountService.getConsumer(), - Consts.DESTINATION_CORRESPONDENT_ACCOUNT_BLOCK, - PARTITION, - 0, - jsonString); - - //ASSERT + Consts.DESTINATION_CORRESPONDENT_ACCOUNT_BLOCK, + PARTITION, + 0, + jsonString); waitingSendAndCheckRecord(0L, mockProducer); Account resultBlock = accountImdg.getSingleObjectByID(accountId); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountSymbolsServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountSymbolsServiceTest.java index 054d8c139..b4ce62905 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountSymbolsServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/AccountSymbolsServiceTest.java @@ -96,7 +96,6 @@ class AccountSymbolsServiceTest { @PreDestroy private void destroyTest() { - //clean test data Account account = accountImdg.getSingleObjectByID(accountId); if (account != null) accountImdg.delete(account); @@ -130,7 +129,7 @@ class AccountSymbolsServiceTest { predictableAccountSymbols.setId(resultNew.getId()); ACCOUNT_SYMBOL_MATCHER.assertMatch(resultNew, predictableAccountSymbols); - accountSymbolsImdg.delete(resultNew); // cleanup test + accountSymbolsImdg.delete(resultNew); newRequestCnt++; } @@ -146,15 +145,11 @@ class AccountSymbolsServiceTest { accountSymbolsDeleteRequest.setId(accountSymbolId); String jsonString = getJsonStringForDelete(accountSymbolsDeleteRequest, 0); - - //ACT addRecordToKafka((MockConsumer) accountSymbolsService.getConsumer(), - Consts.DESTINATION_DEPO_ACCOUNT_SYMBOLS_DELETE, - PARTITION, - 0, - jsonString); - - //ASSERT + Consts.DESTINATION_DEPO_ACCOUNT_SYMBOLS_DELETE, + PARTITION, + 0, + jsonString); waitingSendAndCheckRecord(0L, mockProducer); AccountSymbols resultUpdating = accountSymbolsImdg.getSingleObjectByID(accountSymbolId); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/BankAccountServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/BankAccountServiceTest.java index a19dd8b49..88e856356 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/BankAccountServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/BankAccountServiceTest.java @@ -127,23 +127,8 @@ public class BankAccountServiceTest { new TestObjectCreator(hazelcastServiceTest).createUserAdmin(1000L); } - /** - * {@link BankAccountService#bankAccountNew(BaseRequest request)}
- * Тест проверяет генерацию сущности {@link BankAccount} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link BankAccountNewRequest}:
- * {@link BankAccountNewRequest#bankIdentificationCode} - 99999
- * {@link BankAccountNewRequest#bankName} - ооо тинькофф
- * {@link BankAccountNewRequest#correspondentAccount} - 9294189285498598598
- * {@link BankAccountNewRequest#correspondentAccountName} - BIK OF
- * {@link BankAccountNewRequest#currency} - RUB
- * {@link BankAccountNewRequest#destination} - OOO ROGA I KOPITA
- * {@link BankAccountNewRequest#taxpayerIdentificationNumber} - 848484848484
- * {@link BankAccountNewRequest#taxRegistrationReasonCode} - 886886
- * {@link BankAccountNewRequest#account} - 123456789123
- */ @Test public void bankAccountNew() { - //ARRANGE BankAccount predictableBankAccount = getBankAccount(); Company company = getTestCompany(); @@ -168,8 +153,6 @@ public class BankAccountServiceTest { BankAccountNewRequest bankAccountNewRequest = getBankAccountNewRequest(predictableBankAccount); String jsonString = getJsonStringForNew(bankAccountNewRequest, ID); - - //ACT addRecordToKafka((MockConsumer) bankAccountService.getConsumer(), TOPIC_ACCOUNT_NEW, PARTITION, 0, jsonString); waitingSendAndCheckRecord(ID, mockProducer); @@ -178,26 +161,10 @@ public class BankAccountServiceTest { predictableBankAccount.setAccountId(accountResult.getId()); predictableBankAccount.setId(bankAccountResult.getId()); setSameValueToField(accountResult, predictableAccount); - - //ASSERT BANK_ACCOUNT_MATCHER.assertMatch(bankAccountResult, predictableBankAccount); ACCOUNT_MATCHER.assertMatch(accountResult, predictableAccount); } - /** - * {@link BankAccountService#bankAccountNew(BaseRequest request)}
- * Тест проверяет валидацию.
- * Входной запрос {@link BankAccountNewRequest}:
- * {@link BankAccountNewRequest#bankIdentificationCode} - 99999
- * {@link BankAccountNewRequest#bankName} - ооо тинькофф
- * {@link BankAccountNewRequest#correspondentAccount} - 9294189285498598598
- * {@link BankAccountNewRequest#correspondentAccountName} - BIK OF
- * {@link BankAccountNewRequest#currency} - RUB
- * {@link BankAccountNewRequest#destination} - OOO ROGA I KOPITA
- * {@link BankAccountNewRequest#taxpayerIdentificationNumber} - 848484848484
- * {@link BankAccountNewRequest#taxRegistrationReasonCode} - 886886
- * {@link BankAccountNewRequest#account} - 123456789123
- */ @Test public void validatedBankAccountNew() { clearImdg(accountImdg); @@ -207,8 +174,6 @@ public class BankAccountServiceTest { BankAccountNewRequest bankAccountNewRequest = getBankAccountNewRequest(predictableBankAccount); String errMsg; - //AccountValidationRule.RequiredFields - //WrongFieldValue bankAccountNewRequest.setCurrency(null); errMsg = messageResolver.resolve(new EnumMessage(AccountError.RequiredFieldEmpty, "null, currency")); checkError(errMsg, bankAccountNewRequest); @@ -233,17 +198,11 @@ public class BankAccountServiceTest { checkError(errMsg, bankAccountNewRequest); bankAccountNewRequest.setAccount(acc); - - //AccountValidationRule.CompanyPresent - //CompanyNotFound bankAccountNewRequest.setCompanyId(999924535239L); - errMsg = messageResolver.resolve(new EnumMessage(AccountError.CompanyNotFound, bankAccountNewRequest.getCompanyId()+", companyId")); + errMsg = messageResolver.resolve(new EnumMessage(AccountError.CompanyNotFound, bankAccountNewRequest.getCompanyId() + ", companyId")); checkError(errMsg, bankAccountNewRequest); bankAccountNewRequest.setCompanyId(company.getId()); - - //AccountValidationRule.AccountIsNew - //AccountAlreadyExist Account existAccount = getTestAccount(accountId, acc); accountImdg.insert(existAccount); errMsg = messageResolver.resolve(new EnumMessage(AccountError.AccountAlreadyExist, existAccount.getAccount())); @@ -252,7 +211,6 @@ public class BankAccountServiceTest { } private void checkError(String errorMsg, BankAccountNewRequest bankAccountNewRequest) { - //ARRANGE int currentTime = countRun.getAndIncrement(); long currentOffset = currentTime; BaseRequest predictableBaseRequest = new BaseRequest<>(); @@ -265,41 +223,19 @@ public class BankAccountServiceTest { predictableBaseRequest.setRequestPayload(requestInfoUpdate); String jsonString = getJsonStringForNew(bankAccountNewRequest, ID); - - //ACT addRecordToKafka((MockConsumer) bankAccountService.getConsumer(), TOPIC_ACCOUNT_NEW, PARTITION, currentOffset, jsonString); ArgumentCaptor producerRecord = getCaptor(mockProducer); - //waiting for kafka producer send message (finale event) verify(mockProducer, timeout(30_000L).times(currentTime)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); BaseRequest baseRequestResult = (BaseRequest) producerRecord.getValue().value(); - - //ASSERT assertEquals(Consts.REQUEST_INFO_UPDATE, producerRecord.getValue().topic()); BASE_REQUEST_MATCHER.assertMatch(baseRequestResult, predictableBaseRequest); } - /** - * {@link BankAccountService#bankAccountUpdate(BaseRequest)}
- * Тест проверяет обновление сущности {@link BankAccount} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link BankAccountUpdateRequest}:
- * {@link BankAccountUpdateRequest#bankIdentificationCode} - NEW BUNK NAME
- * {@link BankAccountUpdateRequest#bankName} - 88888
- * {@link BankAccountUpdateRequest#correspondentAccount} - 894984646541316
- * {@link BankAccountUpdateRequest#correspondentAccountName} - BIK OF NEW BUNK
- * {@link BankAccountUpdateRequest#currency} - EU
- * {@link BankAccountUpdateRequest#destination} - OOO NEW BUNK
- * {@link BankAccountUpdateRequest#taxpayerIdentificationNumber} - 65468461321
- * {@link BankAccountUpdateRequest#taxRegistrationReasonCode} - 532137
- * {@link BankAccountUpdateRequest#account} - 326984656514
- */ @Test void bankAccountUpdate() { clearImdg(accountImdg); - //ARRANGE -// Company company = getTestCompany(); -// companyImdg.insert(company); Account predictableAccount = getTestAccount(accountId, acc); accountImdg.insert(predictableAccount); @@ -332,11 +268,7 @@ public class BankAccountServiceTest { bankAccountUpdateRequest.setSwiftCode(predictableUpdateBankAccount.getSwiftCode()); String jsonString = getJsonStringForUpdate(bankAccountUpdateRequest, ID); - - //ACT addRecordToKafka((MockConsumer) bankAccountService.getConsumer(), TOPIC_ACCOUNT_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Account accountResult = accountImdg.getSingleObjectByID(predictableAccount.getId()); @@ -348,15 +280,8 @@ public class BankAccountServiceTest { ACCOUNT_MATCHER.assertMatch(accountResult, predictableAccount); } - /** - * {@link BankAccountService#bankAccountBlock(BaseRequest)} - * Тест проверяет удаление сущности {@link BankAccount} в Hazelcast при передаче из Apache Kafka. - * Входной запрос {@link CommonDeleteRequest}: - * {@link CommonDeleteRequest#id} - Идентификатор записи - */ @Test void bankAccountBlock() { - //ARRANGE BankAccount bankAccountExists = getBankAccount(); bankAccountImdg.insert(bankAccountExists); Account account = new Account(); @@ -367,11 +292,7 @@ public class BankAccountServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(ID); String jsonString = getJsonStringForDelete(commonDeleteRequest, ID); - - //ACT addRecordToKafka((MockConsumer) bankAccountService.getConsumer(), TOPIC_ACCOUNT_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Account bankAccount = accountImdg.getSingleObjectByID(accountId); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClearingAccountServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClearingAccountServiceTest.java index 21f959ee2..7a03c9e39 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClearingAccountServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClearingAccountServiceTest.java @@ -233,19 +233,8 @@ class ClearingAccountServiceTest { Assertions.assertEquals("2", clearingAccountService.makeSdfErrorText(null, SDFProcessService.SDF_STATUS_ERROR_COMPANY_NOT_FOUND)); } - /** - * {@link ClearingAccountService#accountNewSdf01(BaseRequest)}
- * Тест проверяет создание сущности {@link BaseRequest} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link AccountSdf01Request}:
- * {@link AccountSdfRequestPart#setSdfId} - текущий Id
- * {@link AccountSdfRequestPart#setAccount} - 123456789123
- * {@link AccountSdfRequestPart#setCompanyId} - текущий Id
- * {@link AccountSdf01Request#setGroupingSdf01Id} - текущий Id
- * {@link AccountSdf01Request#setAccounts} - Collections.singletonList(AccountSdfRequestPart)
- */ @Test void accountSdf01New() throws InterruptedException { - //ARRANGE clearImdg(accountImdg); setMockFuture(kafkaTemplate); Long firstID = currentID.getAndIncrement(); @@ -268,15 +257,10 @@ class ClearingAccountServiceTest { predictableAccount.setRelationId(relationId); ClearingAccount predictableClearingAccount = new ClearingAccount(); predictableClearingAccount.setCompanyId(companyId); -// predictableClearingAccount.setClearingAccountType(CLEARING_ACCOUNT_TYPE_DICT); - - //KAFKA addRecordToKafka((MockConsumer) clearingAccountService.getConsumer(), Consts.ACCOUNT_NEW_SDF01, PARTITION, 0, jsonString); waitingSendAndCheckRecord(0L, mockProducer); ImdgHazelcast accountImdg = (ImdgHazelcast) hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Account, Account.class); - - //ASSERT Account accountResult = accountImdg.getSingleObjectBySQL(String.format("account = %s", ACCOUNT_VALUE)); ClearingAccount resultClearingAccountNew = clearingAccountImdg.getFirstObjectByFieldValues(Map.of("accountId", accountResult.getId())); predictableAccount.setId(accountResult.getId()); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClientCodeServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClientCodeServiceTest.java index ff4ff204e..48efa8005 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClientCodeServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/ClientCodeServiceTest.java @@ -53,20 +53,20 @@ import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { - ClientCodeService.class, - ClientCodeValidationConfig.class, + ClientCodeService.class, + ClientCodeValidationConfig.class, - TradingClearingRegistryService.class, - TradingClearingRegistryValidationConfig.class, + TradingClearingRegistryService.class, + TradingClearingRegistryValidationConfig.class, - TradingClearingRegistryListService.class, - TradingClearingRegistryListValidationConfig.class, + TradingClearingRegistryListService.class, + TradingClearingRegistryListValidationConfig.class, - ValidationConfig.class, - BeanConfiguration.class, + ValidationConfig.class, + BeanConfiguration.class, - KafkaTestConfig.class, - ImdgTestConfig.class}) + KafkaTestConfig.class, + ImdgTestConfig.class}) class ClientCodeServiceTest { private static final int PARTITION = 0; @@ -90,16 +90,11 @@ class ClientCodeServiceTest { private Imdg clientCodeImdg; private Imdg tradingClearingRegistryListImdg; - - // ****************************-******************* - @PostConstruct private void init() { hazelcastServiceTest.waitAvailable(); clientCodeImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class); tradingClearingRegistryListImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); - - // Словари для теста, применяются в ValidationConfig putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV"); putToDictionary(IMDGDistributedNames.Map_ServiceStatusDictionary, new ServiceStatusDictionary(), ServiceStatus.Active.getKey()); putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC"); @@ -141,7 +136,7 @@ class ClientCodeServiceTest { moneyAccount.setId(131L); moneyAccount.setAccount("AAAA-4444"); moneyAccount.setStatus("ACTV"); - moneyAccount.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта + moneyAccount.setCompanyId(COMPANY_ID); accounts.insert(moneyAccount); ClearingAccount clsAcc = new ClearingAccount(); clsAcc.setId(moneyAccount.getId()); @@ -153,7 +148,7 @@ class ClientCodeServiceTest { depoAccount.setId(132L); depoAccount.setAccount("AAAB-44654"); depoAccount.setStatus("ACTV"); - depoAccount.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта + depoAccount.setCompanyId(COMPANY_ID); accounts.insert(depoAccount); DepoAccount depoAcc = new DepoAccount(); depoAcc.setId(depoAccount.getId()); @@ -165,7 +160,7 @@ class ClientCodeServiceTest { c2Account.setId(133L); c2Account.setAccount("AAAX-44654-CURR"); c2Account.setStatus("ACTV"); - c2Account.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта + c2Account.setCompanyId(COMPANY_ID); c2Account.setAccountType(AccountType.Curr.getKey()); accounts.insert(c2Account); @@ -196,14 +191,8 @@ class ClientCodeServiceTest { } - /** - * {@link ClientCodeService#clientCodeUpdate(BaseRequest)}
- * Тест проверяет создание {@link ClientCode} в IMDG при передаче из Apache Kafka (очередь 1).
- * Входной запрос {@link ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest}:
- **/ @Test void clientCodeNew1() { - //ARRANGE final String ccCode = "Lucky planet"; ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest(); clientCodeNewRequest.setCompanyId(COMPANY_ID); @@ -217,16 +206,9 @@ class ClientCodeServiceTest { predictableClientCode.setCode(ccCode); predictableClientCode.setStatus("ACTV"); predictableClientCode.setCompanyId(COMPANY_ID); -// predictableClientCode.setMoneyAccountId(131L); -// predictableClientCode.setDepoAccountId(132L); -// predictableClientCode.setTradingClearingRegistryId(TCR_ID); - - //ACT String jsonString = TestUtils.getJsonStringForNew(clientCodeNewRequest, ID); TestUtils.addRecordToKafka((MockConsumer) clientCodeService.getConsumer(), Consts.DESTINATION_CLIENT_CODE_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ClientCode resultNew = clientCodeImdg.getFirstObjectBySQL(String.format("code = '%s'", ccCode)); predictableClientCode.setId(resultNew.getId()); @@ -234,14 +216,8 @@ class ClientCodeServiceTest { assertNotNull(resultNew.getCreated()); } - /** - * {@link ClientCodeService#clientCodeUpdate(BaseRequest)}
- * Тест проверяет создание {@link ClientCode} в IMDG при передаче из Apache Kafka (очередь 2).
- * Входной запрос {@link ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest}:
- **/ @Test void clientCodeNew2() { - //ARRANGE final String ccCode = "Lucky planet"; ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest(); clientCodeNewRequest.setCompanyId(COMPANY_ID); @@ -255,17 +231,10 @@ class ClientCodeServiceTest { predictableClientCode.setCode(ccCode); predictableClientCode.setStatus("ACTV"); predictableClientCode.setCompanyId(COMPANY_ID); -// predictableClientCode.setMoneyAccountId(131L); -// predictableClientCode.setDepoAccountId(132L); -// predictableClientCode.setTradingClearingRegistryId(TCR_ID); - - //ACT String jsonString = TestUtils.getJsonStringForNew(clientCodeNewRequest, ID); TestUtils.addRecordToKafka((MockConsumer) clientCodeService.getConsumer(), Consts.DESTINATION_CLIENT_CODE_NEW_UM_COMPANY, PARTITION, 0, jsonString); - - //ASSERT - TestUtils.waitingSendAndCheckRecord(ID, mockProducer, producerRecord); + waitingSendAndCheckRecord(ID, mockProducer, producerRecord); ClientCode resultNew = clientCodeImdg.getFirstObjectBySQL(String.format("code = '%s'", ccCode)); predictableClientCode.setId(resultNew.getId()); CLIENT_CODE_MATCHER.assertMatch(resultNew, predictableClientCode); @@ -273,15 +242,8 @@ class ClientCodeServiceTest { } - /** - * {@link ClientCodeService#clientCodeUpdate(BaseRequest)}
- * Тест проверяет создание {@link ClientCode} в IMDG при передаче из Apache Kafka (очередь 1).
- * NEW с заполненными MoneyAccountId(131L), DepoAccountId(132L); - от этого будет создан ТКР. - * Входной запрос {@link ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest}:
- **/ @Test void clientCodeNew3() { - //ARRANGE final String ccCode = "Lucky planet2"; ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest(); clientCodeNewRequest.setCompanyId(COMPANY_ID); @@ -298,13 +260,9 @@ class ClientCodeServiceTest { predictableClientCode.setMoneyAccountId(131L); predictableClientCode.setDepoAccountId(132L); predictableClientCode.setTradingClearingRegistryId(TCR_ID); - - //ACT String jsonString = TestUtils.getJsonStringForNew(clientCodeNewRequest, ID); TestUtils.addRecordToKafka((MockConsumer) clientCodeService.getConsumer(), Consts.DESTINATION_CLIENT_CODE_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ClientCode resultNew = clientCodeImdg.getFirstObjectBySQL(String.format("code = '%s'", ccCode)); predictableClientCode.setId(resultNew.getId()); @@ -313,15 +271,8 @@ class ClientCodeServiceTest { } - /** - * {@link ClientCodeService#clientCodeUpdate(BaseRequest)}
- * Тест проверяет создание {@link ClientCode} в IMDG при передаче из Apache Kafka (очередь 4).
- * Входной запрос {@link ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeNewRequest}:
- * С дополнительным заполнением TradingClearingRegistryList id's. С одним. - **/ @Test void clientCodeNew4() { - //ARRANGE final String ccCode = "Lucky"; ClientCodeNewRequest clientCodeNewRequest = new ClientCodeNewRequest(); clientCodeNewRequest.setCompanyId(COMPANY_ID); @@ -340,13 +291,9 @@ class ClientCodeServiceTest { predictableClientCode.setDepoAccountId(132L); predictableClientCode.setCurrencyAccountId(133L); predictableClientCode.setTradingClearingRegistryId(TCR_ID); - - //ACT String jsonString = TestUtils.getJsonStringForNew(clientCodeNewRequest, ID); TestUtils.addRecordToKafka((MockConsumer) clientCodeService.getConsumer(), Consts.DESTINATION_CLIENT_CODE_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ClientCode resultNew = clientCodeImdg.getFirstObjectBySQL(String.format("code = '%s'", ccCode)); predictableClientCode.setId(resultNew.getId()); @@ -358,14 +305,8 @@ class ClientCodeServiceTest { assertEquals(TCR_ID, newTCRList.getTradingClearingRegistryId()); } - /** - * {@link ClientCodeService#clientCodeUpdate(BaseRequest)}
- * Тест проверяет обновление сущности {@link ClientCode} в IMDG при передаче из Apache Kafka.
- * Входной запрос {@link ru.spcex.clearing.platform.messaging.domain.cud.account.ClientCodeUpdateRequest}:
- **/ @Test void clientCodeUpdate() { - //ARRANGE ClientCode existsClientCode = new ClientCode(); existsClientCode.setId(ID); existsClientCode.setCompanyId(COMPANY_ID); @@ -393,13 +334,9 @@ class ClientCodeServiceTest { predictableClientCode.setMoneyAccountId(131L); predictableClientCode.setDepoAccountId(132L); predictableClientCode.setStatus("ACTV"); - - //ACT String jsonString = TestUtils.getJsonStringForUpdate(clientCodeUpdateRequest, ID); TestUtils.addRecordToKafka((MockConsumer) clientCodeService.getConsumer(), Consts.DESTINATION_CLIENT_CODE_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ClientCode resultUpdating = clientCodeImdg.getSingleObjectByID(ID); @@ -408,19 +345,12 @@ class ClientCodeServiceTest { } - /** - * {@link ClientCodeService#clientCodeUpdate(BaseRequest)}
- * Тест проверяет удаление {@link ClientCode} из IMDG при передаче из Apache Kafka.
- * Входной запрос {@link ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest}:
- **/ @Test void clientCodeDelete1() { - //ARRANGE ClientCode existsClientCode = new ClientCode(); existsClientCode.setId(ID); existsClientCode.setCompanyId(COMPANY_ID); existsClientCode.setCode("0000"); - // Если следующие поля заполнить, то дополнительно отправит сообщение в trading-clearing-registry-update: existsClientCode.setTradingClearingRegistryId(null); existsClientCode.setMoneyAccountId(null); existsClientCode.setDepoAccountId(null); @@ -431,56 +361,14 @@ class ClientCodeServiceTest { CommonDeleteRequest clientCodeDeleteRequest = new CommonDeleteRequest(); clientCodeDeleteRequest.setId(ID); - Assertions.assertNotNull(clientCodeImdg.getSingleObjectByID(ID)); // verify test data - - //ACT + assertNotNull(clientCodeImdg.getSingleObjectByID(ID)); String jsonString = TestUtils.getJsonStringForUpdate(clientCodeDeleteRequest, ID); TestUtils.addRecordToKafka((MockConsumer) clientCodeService.getConsumer(), Consts.DESTINATION_CLIENT_CODE_DELETE, PARTITION, 0, jsonString); - //ASSERT - waitingSendAndCheckRecord(ID, mockProducer); ClientCode resultUpdate = clientCodeImdg.getSingleObjectByID(ID); assertEquals(WorkflowStatus.Blocked.getKey(), resultUpdate.getStatus()); } -// /** -// * {@link ClientCodeService#clientCodeUpdate(BaseRequest)}
-// * Тест проверяет удаление {@link ClientCode} из IMDG при передаче из Apache Kafka.
-// * У ClientCode заполнены MoneyAccountId, DepoAccountId - по этому при удалении должно направиться дополнительное сообщение в очередь DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE
-// * Входной запрос {@link ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest}:
-// **/ -// @Test -// void clientCodeDelete2() { -// //ARRANGE -// ClientCode existsClientCode = new ClientCode(); -// existsClientCode.setId(ID); -// existsClientCode.setCompanyId(COMPANY_ID); -// existsClientCode.setCode("0000"); -// // Если следующие поля заполнить, то дополнительно отправит сообщение в trading-clearing-registry-update: -// existsClientCode.setTradingClearingRegistryId(TCR_ID); -// existsClientCode.setMoneyAccountId(131L); -// existsClientCode.setDepoAccountId(132L); -// existsClientCode.setStatus("ACTV"); -// -// clientCodeImdg.insert(existsClientCode); -// -// CommonDeleteRequest clientCodeDeleteRequest = new CommonDeleteRequest(); -// clientCodeDeleteRequest.setId(ID); -// -// Assertions.assertNotNull(clientCodeImdg.getSingleObjectByID(ID)); // verify test data -// -// //ACT -// String jsonString = getJsonStringForUpdate(clientCodeDeleteRequest, ID); -// -// addRecordToKafka((MockConsumer) clientCodeService.getConsumer(), Consts.DESTINATION_CLIENT_CODE_DELETE, PARTITION, 0, jsonString); -// -// //ASSERT -// -// waitingWhenAddedRecordAndCheckIt(ID, mockProducer, producerRecord); -// ClientCode resultUpdate = clientCodeImdg.getSingleObjectByID(ID); -// Assertions.assertNull(resultUpdate); -// } - } \ No newline at end of file diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/InformationAccountServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/InformationAccountServiceTest.java index 1cdc637a4..d1f2961ba 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/InformationAccountServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/InformationAccountServiceTest.java @@ -174,7 +174,7 @@ class InformationAccountServiceTest { @Test void accountIncrementSequence() { - Imdg accountInfoImdg = hazelcastServiceTest.getImdg( IMDGDistributedNames.Map_InformationAccount, InformationAccount.class ); + Imdg accountInfoImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class); { Account account = new Account(); @@ -192,14 +192,12 @@ class InformationAccountServiceTest { accountInfoImdg.insert(accountInfo); } UserRoleVerification userRoleVerification = Mockito.mock(UserRoleVerification.class); - InformationAccountService infoAccSvc=new InformationAccountService(null,null,null, - null, userRoleVerification, hazelcastServiceTest, null, null, null, null); + InformationAccountService infoAccSvc = new InformationAccountService(null, null, null, + null, userRoleVerification, hazelcastServiceTest, null, null, null, null); Long n = infoAccSvc.accountNextId(null); Assertions.assertEquals(13L, n); n = infoAccSvc.accountNextId(null); Assertions.assertEquals(14L, n); - - // Другие валюты n = infoAccSvc.accountNextId(CurrencyCode.RUB.getKey()); Assertions.assertEquals(15L, n); n = infoAccSvc.accountNextId("CNY"); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryListServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryListServiceTest.java index 5958be1b2..3fee5624d 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryListServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryListServiceTest.java @@ -55,19 +55,19 @@ import static ru.spcex.clearing.test.TestUtils.waitingSendAndCheckRecord; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { - TradingClearingRegistryListService.class, - TradingClearingRegistryListValidationConfig.class, - ClientCodeService.class, - ClientCodeValidationConfig.class, + TradingClearingRegistryListService.class, + TradingClearingRegistryListValidationConfig.class, + ClientCodeService.class, + ClientCodeValidationConfig.class, - TradingClearingRegistryService.class, - TradingClearingRegistryValidationConfig.class, + TradingClearingRegistryService.class, + TradingClearingRegistryValidationConfig.class, - ValidationConfig.class, - BeanConfiguration.class, + ValidationConfig.class, + BeanConfiguration.class, - KafkaTestConfig.class, - ImdgTestConfig.class}) + KafkaTestConfig.class, + ImdgTestConfig.class}) class TradingClearingRegistryListServiceTest { private static final int PARTITION = 0; private static final Long ID = 4L; @@ -91,16 +91,11 @@ class TradingClearingRegistryListServiceTest { private Imdg clientCodeImdg; private Imdg tradingClearingRegistryListImdg; - - // ****************************-******************* - @PostConstruct private void init() { hazelcastServiceTest.waitAvailable(); clientCodeImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ClientCode, ClientCode.class); tradingClearingRegistryListImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); - - // Словари для теста, применяются в ValidationConfig putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV"); putToDictionary(IMDGDistributedNames.Map_ServiceStatusDictionary, new ServiceStatusDictionary(), ServiceStatus.Active.getKey()); putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC"); @@ -142,7 +137,7 @@ class TradingClearingRegistryListServiceTest { moneyAccount.setId(131L); moneyAccount.setAccount("AAAA-4444"); moneyAccount.setStatus("ACTV"); - moneyAccount.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта + moneyAccount.setCompanyId(COMPANY_ID); accounts.insert(moneyAccount); ClearingAccount clsAcc = new ClearingAccount(); clsAcc.setId(moneyAccount.getId()); @@ -154,7 +149,7 @@ class TradingClearingRegistryListServiceTest { depoAccount.setId(132L); depoAccount.setAccount("AAAB-44654"); depoAccount.setStatus("ACTV"); - depoAccount.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта + depoAccount.setCompanyId(COMPANY_ID); accounts.insert(depoAccount); DepoAccount depoAcc = new DepoAccount(); depoAcc.setId(depoAccount.getId()); @@ -166,7 +161,7 @@ class TradingClearingRegistryListServiceTest { c2Account.setId(133L); c2Account.setAccount("AAAX-44654-CURR"); c2Account.setStatus("ACTV"); - c2Account.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта + c2Account.setCompanyId(COMPANY_ID); c2Account.setAccountType(AccountType.Info.getKey()); c2Account.setCurrency("USD"); accounts.insert(c2Account); @@ -175,7 +170,7 @@ class TradingClearingRegistryListServiceTest { c3Account.setId(134L); c3Account.setAccount("AAAX-12654-CURR"); c3Account.setStatus("ACTV"); - c3Account.setCompanyId(COMPANY_ID); // для валидации принадлежности счёта + c3Account.setCompanyId(COMPANY_ID); c3Account.setAccountType(AccountType.Info.getKey()); c3Account.setCurrency("USD"); accounts.insert(c3Account); @@ -192,14 +187,8 @@ class TradingClearingRegistryListServiceTest { } - /** - * {@link TradingClearingRegistryListService#tradingClearingRegistryListNew(BaseRequest)}
- * Тест проверяет создание {@link TradingClearingRegistryList} в IMDG при передаче из Apache Kafka (очередь 1).
- * Входной запрос {@link TradingClearingRegistryListNewRequest}:
- **/ @Test void tradingClearingRegistryListNew() { - //ARRANGE final String ccCode = null; TradingClearingRegistryListNewRequest tcrlNewRequest = new TradingClearingRegistryListNewRequest(); tcrlNewRequest.setTradingClearingRegistryId(TCR_ID); @@ -215,14 +204,10 @@ class TradingClearingRegistryListServiceTest { predictableTradingClearingRegistryList.setAccountId(134L); predictableTradingClearingRegistryList.setStatus("ACTV"); predictableTradingClearingRegistryList.setCurrency("USD"); - - //ACT String jsonString = TestUtils.getJsonStringForNew(tcrlNewRequest, ID); TestUtils.addRecordToKafka((MockConsumer) tradingClearingRegistryListService.getConsumer(), Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_NEW, PARTITION, 0, jsonString); - - //ASSERT - waitingSendAndCheckRecord(ID, mockProducer); + waitingSendAndCheckRecord(ID, mockProducer); ClientCode resultCCNew = clientCodeImdg.getFirstObjectBySQL(String.format("code = '%s'", ccCode)); predictableClientCode.setId(resultCCNew.getId()); CLIENT_CODE_MATCHER.assertMatch(resultCCNew, predictableClientCode); @@ -232,19 +217,11 @@ class TradingClearingRegistryListServiceTest { predictableClientCode.setId(resultTCRLNew.getId()); TRADING_CLEARING_REGISTRY_LIST_MATCHER.assertMatch(resultTCRLNew, predictableTradingClearingRegistryList); assertNotNull(resultTCRLNew.getCreated()); - - // CLEAN UP tradingClearingRegistryListImdg.delete(resultTCRLNew); } - /** - * {@link TradingClearingRegistryListService#tradingClearingRegistryListUpdate(BaseRequest)}
- * Тест проверяет обновление сущности {@link TradingClearingRegistryList} в IMDG при передаче из Apache Kafka.
- * Входной запрос {@link TradingClearingRegistryListUpdateRequest}:
- **/ @Test void tradingClearingRegistryListUpdate() { - //ARRANGE TradingClearingRegistryList existsTradingClearingRegistryList = new TradingClearingRegistryList(); existsTradingClearingRegistryList.setId(ID); existsTradingClearingRegistryList.setTradingClearingRegistryId(TCR_ID); @@ -264,20 +241,14 @@ class TradingClearingRegistryListServiceTest { predictableTradingClearingRegistryList.setCurrency("BTC"); predictableTradingClearingRegistryList.setAccountId(133L); predictableTradingClearingRegistryList.setStatus("ACTV"); - - //ACT String jsonString = TestUtils.getJsonStringForUpdate(tradingClearingRegistryListUpdateRequest, ID); TestUtils.addRecordToKafka((MockConsumer) tradingClearingRegistryListService.getConsumer(), Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); TradingClearingRegistryList resultUpdating = tradingClearingRegistryListImdg.getSingleObjectByID(ID); TRADING_CLEARING_REGISTRY_LIST_MATCHER.assertMatch(resultUpdating, predictableTradingClearingRegistryList); assertNotNull(resultUpdating.getUpdated()); - - // CLEAN UP tradingClearingRegistryListImdg.delete(resultUpdating); } diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java index 77b3ad360..6771fb1ef 100644 --- a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/TradingClearingRegistryServiceTest.java @@ -283,15 +283,11 @@ class TradingClearingRegistryServiceTest { tradingClearingRegistryUpdateRequest.setId(registryId); String jsonString = getJsonStringForUpdate(tradingClearingRegistryUpdateRequest, 0); - - //ACT addRecordToKafka((MockConsumer) tradingClearingRegistryService.getConsumer(), - Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, - PARTITION, - 0, - jsonString); - - //ASSERT + Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, + PARTITION, + 0, + jsonString); waitingSendAndCheckRecord(0L, mockProducer); TradingClearingRegistry resultUpdating = tradingClearingRegistryImdg.getSingleObjectByID(registryId); @@ -311,15 +307,11 @@ class TradingClearingRegistryServiceTest { tradingClearingRegistryDeleteRequest.setId(registryId); String jsonString = getJsonStringForDelete(tradingClearingRegistryDeleteRequest, 0); - - //ACT addRecordToKafka((MockConsumer) tradingClearingRegistryService.getConsumer(), - Consts.DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK, - PARTITION, - 0, - jsonString); - - //ASSERT + Consts.DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK, + PARTITION, + 0, + jsonString); waitingSendAndCheckRecord(0L, mockProducer); TradingClearingRegistry resultUpdating = tradingClearingRegistryImdg.getSingleObjectByID(registryId); diff --git a/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/UtilsTest.java b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/UtilsTest.java new file mode 100644 index 000000000..fbc1bcc98 --- /dev/null +++ b/clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/UtilsTest.java @@ -0,0 +1,45 @@ +package ru.spcex.clearing.account.service; + + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; +import org.junit.jupiter.api.Test; +import ru.clearing.classes.statics.data.account.Account; + +public class UtilsTest { + + @Test + public void testAccount() { + Long currencyCodeId = 1L; + String withTrailingZero = String.format("%03d", currencyCodeId); + String withTrailingZero2 = "%d%03d%08d%d".formatted(39911, currencyCodeId, 1, 7000); + List allInfoAcc = new ArrayList<>(); + Account account = new Account(); + account.setAccount("39911051000000027000"); + allInfoAcc.add(account); + Pattern accPattern = Pattern.compile("39911%s([0-9]{8})7000".formatted(withTrailingZero)); + int maxN = 1; + int parsedCount = 0; + String lastAccount = null; + for (Account acc : allInfoAcc) { + try { + String number = acc.getAccount(); + if (StringUtils.isEmpty(number)) continue; + lastAccount = number; + Matcher m = accPattern.matcher(number); + if (m.find()) { + String seqNumber = m.group(1); + if (StringUtils.isNotEmpty(seqNumber)) { + int accN = Integer.parseInt(seqNumber); + if (accN > maxN) maxN = accN; + } + parsedCount++; + } + } catch (Exception errParse) { + } + } + } +} diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/BackendApiApplication.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/BackendApiApplication.java index 2264ef140..51d73307d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/BackendApiApplication.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/BackendApiApplication.java @@ -26,7 +26,6 @@ public class BackendApiApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { setKeycloakConfigFile(); - // springApplicationBuilder.initializers(DfaConfig.get().getLoggingInitializer()); return builder.sources(BackendApiApplication.class); } @@ -35,9 +34,6 @@ public class BackendApiApplication extends SpringBootServletInitializer { return super.run(application); } - /** - * чтобы переместить настройки keycloak в keycloak.json вместо application.properties - */ private static void setKeycloakConfigFile() { System.setProperty("keycloak.configurationFile", "classpath:keycloak.json"); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java index 3134e6806..231cde310 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/BackEndApiImdgConfig.java @@ -47,9 +47,8 @@ public class BackEndApiImdgConfig { throw new IllegalArgumentException("Property \"backend-api.hazelcast.cluster-members\" not set"); } ImdgProvider imdg = new HazelcastService(taskExecutorHazelcastClientInitializer, - taskExecutorIdGeneratorAwaiter, - clientSetting.getHazelcast()); -// todo корректное ожидание готовности imdg.waitAvailable(); + taskExecutorIdGeneratorAwaiter, + clientSetting.getHazelcast()); return imdg; } @@ -62,12 +61,10 @@ public class BackEndApiImdgConfig { ) { if (clientSetting.getHazelcastSearch() == null || clientSetting.getHazelcastSearch().getClusterMembers() == null) { log.warn("Property \"backend-api.hazelcast-search.cluster-members\" not set!"); - // может работать без history, но history будет недоступна } ImdgProvider imdg = new HazelcastService(taskExecutorHazelcastClientInitializer, - taskExecutorIdGeneratorAwaiter, - clientSetting.getHazelcastSearch()); -// todo корректное ожидание готовности imdg.waitAvailable(); + taskExecutorIdGeneratorAwaiter, + clientSetting.getHazelcastSearch()); return imdg; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/WebConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/WebConfig.java index 5a4e2c0d8..28c747125 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/WebConfig.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/config/WebConfig.java @@ -22,7 +22,6 @@ import java.util.function.Consumer; @SuppressWarnings("Duplicates") @Configuration @EnableWebMvc -//todo remove? see ClearingCorsFilter @CrossOrigin public class WebConfig implements WebMvcConfigurer { private final MappingJackson2HttpMessageConverter customJsonHttpConverter; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java index 7c4452737..945e21697 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/AbstractQueueController.java @@ -22,9 +22,6 @@ public abstract class AbstractQueueController { return responseToClient; } - /** - * Для оптимизации передачи userId - */ protected CudResponse processRequest(String destination, IAction iAction, Long userId) throws ExecutionException, InterruptedException { CudResponse responseToClient = new CudResponse(); responseToClient.setPayload(operator.sendRequestToQueue(destination, iAction, userId)); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountController.java index 823b12dd5..f06c20d1c 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountController.java @@ -44,20 +44,9 @@ public class InformationAccountController extends AbstractQueueController { @ResponseBody public CommonGetAllResponse getAll() { Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_InformationAccount, - InformationAccount.class); + InformationAccount.class); CommonGetAllResponse response = new CommonGetAllResponse(); response.fromEntity(all); return response; } - - -// @ApiOperation(value = "Добавление информационного счета.") -// @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) -// @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) -// @ResponseBody -// public CudResponse add( -// @ApiParam(value = "Параметры команды в JSON формате.", required = true) -// @RequestBody AccountInformationNewAction accountNewInformationAction) throws ExecutionException, InterruptedException { -// return processRequest(Consts.DESTINATION_INFORMATION_ACCOUNT_NEW, accountNewInformationAction); -// } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java index c32ff3587..3e62a4b28 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/HistController.java @@ -66,10 +66,9 @@ public class HistController { } Optional> entityClass = responseFactory.classByDestination(destination); - //class may be added to HistorySubscription if needed if (entityClass.isEmpty()) { throw new ActionValidationException(new EnumMessage(BackEndError.ValidationError, - "destination " + "'" + destination + "' not supported (meta class not found)")); + "destination " + "'" + destination + "' not supported (meta class not found)")); } HistoryRequest req = new HistoryRequest(); @@ -82,10 +81,10 @@ public class HistController { conditionProvider.conditionForRequest(req).map(s -> subscr[0] = s, p -> prdct[0] = p); Collection> searchRes = stateLoader.getAllMetaTransform( - subscr[0].getSearchProxyMapName(), - subscr[0].getFullHistoryMapName(), - entityClass.get(), - prdct[0] + subscr[0].getSearchProxyMapName(), + subscr[0].getFullHistoryMapName(), + entityClass.get(), + prdct[0] ); CommonGetAllResponse response = new CommonGetAllResponse(); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java index f99e76c6b..caa4b3ca7 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/ConditionProvider.java @@ -58,7 +58,6 @@ public class ConditionProvider { ImdgPredicate result; if (predicates.size() == 0) { - //add boundary conditions? log.warn("destination '{}' zero predicates found", destination); result = pb.alwaysTrue(); } else if (predicates.size() == 1) { diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/HistorySubscription.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/HistorySubscription.java index d2fa9d4b6..360791658 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/HistorySubscription.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/history/condition/HistorySubscription.java @@ -9,7 +9,6 @@ public class HistorySubscription { private List conditions; private String searchProxyMapName; private String fullHistoryMapName; - //class public List getConditions() { diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryController.java index 8a9a88bba..c43cc269e 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryController.java @@ -52,25 +52,21 @@ public class RegistryController extends AbstractQueueController { @RequestMapping(method = RequestMethod.GET) @ResponseBody public CommonGetAllResponse getAll() { -// long t1 = System.currentTimeMillis(); ImdgPredicate filter = predicateBuilder.or( - predicateBuilder.equals("registryDesignation", RegistryDesignation.A.getKey()), - predicateBuilder.equals("registryDesignation", RegistryDesignation.D.getKey()), - predicateBuilder.and( - predicateBuilder.or( - predicateBuilder.equals("registryDesignation", RegistryDesignation.O.getKey()), - predicateBuilder.equals("registryDesignation", RegistryDesignation.T.getKey()) - ), - predicateBuilder.greatEqual("settlementDate", LocalDate.now()) - ) + predicateBuilder.equals("registryDesignation", RegistryDesignation.A.getKey()), + predicateBuilder.equals("registryDesignation", RegistryDesignation.D.getKey()), + predicateBuilder.and( + predicateBuilder.or( + predicateBuilder.equals("registryDesignation", RegistryDesignation.O.getKey()), + predicateBuilder.equals("registryDesignation", RegistryDesignation.T.getKey()) + ), + predicateBuilder.greatEqual("settlementDate", LocalDate.now()) + ) ); Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Registry, Registry.class, - filter); -// long t2 = System.currentTimeMillis(); -// log.info("Info select and format {} data {}", all.size(), t2 - t1); + filter); CommonGetAllResponse response = new CommonGetAllResponse(); response.fromEntity(all); -// log.info("Info select and format {} data {}", all.size(), System.currentTimeMillis() - t2); return response; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryListController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryListController.java index c0a854b60..3119de849 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryListController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryListController.java @@ -24,7 +24,6 @@ import java.util.Collection; import java.util.Map; import java.util.concurrent.ExecutionException; -// todo unittest for TradingClearingRegistryListController @Controller @RequestMapping("/trading-clearing-registries-list") public class TradingClearingRegistryListController extends AbstractQueueController { @@ -42,8 +41,8 @@ public class TradingClearingRegistryListController extends AbstractQueueControll @ResponseBody public CommonGetAllResponse getAll() { Collection> all = stateLoader.getAllMetaTransform( - IMDGDistributedNames.Map_TradingClearingRegistryList, - TradingClearingRegistryList.class); + IMDGDistributedNames.Map_TradingClearingRegistryList, + TradingClearingRegistryList.class); CommonGetAllResponse response = new CommonGetAllResponse(); response.fromEntity(all); return response; @@ -54,8 +53,8 @@ public class TradingClearingRegistryListController extends AbstractQueueControll @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public CudResponse add( - @ApiParam(value = "Параметры команды в JSON формате.", required = true) - @RequestBody TradingClearingRegistryListNewAction tradingClearingRegistryListNewAction) throws ExecutionException, InterruptedException { + @ApiParam(value = "Параметры команды в JSON формате.", required = true) + @RequestBody TradingClearingRegistryListNewAction tradingClearingRegistryListNewAction) throws ExecutionException, InterruptedException { return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_NEW, tradingClearingRegistryListNewAction); } @@ -64,10 +63,10 @@ public class TradingClearingRegistryListController extends AbstractQueueControll @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public CudResponse update( - @ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234") - @PathVariable("id") Long id, - @ApiParam(value = "Новые значения полей объекта.", required = true) - @RequestBody TradingClearingRegistryListUpdateAction tradingClearingRegistryListUpdateAction) throws ExecutionException, InterruptedException { + @ApiParam(value = "Идентификатор изменяемого объекта.", required = true, example = "1234") + @PathVariable("id") Long id, + @ApiParam(value = "Новые значения полей объекта.", required = true) + @RequestBody TradingClearingRegistryListUpdateAction tradingClearingRegistryListUpdateAction) throws ExecutionException, InterruptedException { tradingClearingRegistryListUpdateAction.setId(id); return processRequest(Consts.DESTINATION_TRADING_CLEARING_REGISTRIES_LIST_UPDATE, tradingClearingRegistryListUpdateAction); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java index cce7a8c40..706a8fe93 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherController.java @@ -86,8 +86,6 @@ public class LauncherController extends AbstractQueueController { } launcherCommand.setTask(dictionaryName); launcherCommand.setUserId(user.getId()); - //топики ограничиваются наличием в taskDictionary - //подписываются на разные топики в разных модулях, см. ru.spcex.platform.enumeration.Task#topic return processRequest(Consts.LAUNCHER_NEW, launcherCommand); } @@ -106,7 +104,7 @@ public class LauncherController extends AbstractQueueController { } if (!IEnumKey.contains(taskEnum.getCode(), Task.startOfClearing, Task.dbfExport_OUTV, Task.getAllBalance, Task.createRegistry_GBRR)) { log.warn(String.format("Task %s not support request with body", taskEnum.getCode())); - } // else В мете эти модели с дополнительными параметрами (OUTV). + } Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String username = KeycloakUtils.getUserNameFromAuthentication(authentication); User user = userImdg.getFirstObjectByFieldValues(Map.of("identifier", username)); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityController.java index bafe94db1..f73b61011 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityController.java @@ -20,9 +20,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Map; -/** - * SecurityController и MoneyMarketSecurityController разные контроллеры, не путать. - */ @Controller @RequestMapping("/securities") public class SecurityController { @@ -40,16 +37,16 @@ public class SecurityController { public CommonGetAllResponse getAll() { Collection> all = new ArrayList<>(); all.addAll(stateLoader.getAllMetaTransformSpecificClass( - IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class + IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class )); all.addAll(stateLoader.getAllMetaTransformSpecificClass( - IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class + IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class )); all.addAll(stateLoader.getAllMetaTransformSpecificClass( - IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class + IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class )); all.addAll(stateLoader.getAllMetaTransformSpecificClass( - IMDGDistributedNames.Map_CurrencyPairSecurity, EquitySecurity.class + IMDGDistributedNames.Map_CurrencyPairSecurity, EquitySecurity.class )); CommonGetAllResponse response = new CommonGetAllResponse(); response.fromEntity(all); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java index ca48a838f..9b1dc6e24 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/user/UserController.java @@ -90,10 +90,6 @@ public class UserController extends AbstractQueueController { log.warn("user {} sended update request for user {}", username, userUpdateAction.getUsername()); throw new IllegalStateException("cannot perform delete action for " + username); } -// User user = userImdg.getSingleObjectByFieldValues(Map.of("identifier", username)); -// if (user == null) { -// log.info("update user {} authenticated, but User object was not created", username); -// } return processRequest(Consts.USER_UPDATE, userUpdateAction); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementController.java index df1cd0349..4a4606b80 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementController.java @@ -58,8 +58,6 @@ public class StatementController extends AbstractQueueController { Optional statement = stateLoader.getById(id, IMDGDistributedNames.Map_Statement, Statement.class); CommonGetByIdResponse response = new CommonGetByIdResponse(); if (statement.isEmpty()) { - //можно так, либо response.setCode(404); response.setMessage("blabla"); но тогда еще нужно - //отдельно HTTP статус проставлять throw new NotFound404Exception(String.valueOf(id)); } Statement stmt = statement.get(); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/registry/TradingClearingRegistryListNewAction.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/registry/TradingClearingRegistryListNewAction.java index f63dc0abe..df1d62085 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/registry/TradingClearingRegistryListNewAction.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/registry/TradingClearingRegistryListNewAction.java @@ -15,16 +15,12 @@ public class TradingClearingRegistryListNewAction implements IAction effectiveOrigin={}", effectiveOrigin); if (effectiveOrigin != null) { setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_ORIGIN, effectiveOrigin); - -// String methods; -// if (meth.length > 0) { -// methods = String.join(", ", meth).toUpperCase(Locale.ROOT); -// } else { -// methods = "*"; -// } setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_METHODS, "*"); - -// String headers; -// if (head.length > 0) { -// headers = String.join(", ", head).toLowerCase(Locale.ROOT); -// } else { -// headers = "*"; -// } setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_HEADERS, "*"); setHeaderValue(httpServletResponse, H_ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CorsAllowedOriginsService.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CorsAllowedOriginsService.java index a6e40a570..90d294c51 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CorsAllowedOriginsService.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/filter/CorsAllowedOriginsService.java @@ -12,7 +12,6 @@ public class CorsAllowedOriginsService { private final List originPatterns = new ArrayList<>(); - //todo cors settings public CorsAllowedOriginsService() { for (String originRegex : new String[]{".*"}) { originPatterns.add(Pattern.compile(originRegex)); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionElement.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionElement.java index 8fa0523be..05e1aeeb3 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionElement.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionElement.java @@ -22,8 +22,6 @@ public class ActionElement { @JsonInclude(JsonInclude.Include.NON_EMPTY) private Boolean isArray = null; - // @JsonProperty(value = "fields", required = true) -// private List> fields = new LinkedList<>(); @JsonProperty(value = "fields", required = true) private List fields = new LinkedList<>(); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/CudMetaService.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/CudMetaService.java index 97b823e53..2aaa558e0 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/CudMetaService.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/CudMetaService.java @@ -10,9 +10,6 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; import java.util.HashMap; import java.util.Map; -/** - * todo временная заглушка: нужно добавить парсинг meta.xml и получать инфу оттуда - */ @Service public class CudMetaService { private final Map>> mapping; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/FieldExtracted.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/FieldExtracted.java index bb2bfe495..87b1c317a 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/FieldExtracted.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/FieldExtracted.java @@ -58,10 +58,6 @@ public abstract class FieldExtracted { if (result == null) break; } - - //fixme somehow externalize custom serialization for type - // тут нужно вернуть список id объектов а не список самих объектов для случая - // - add(r, "addresseeId", o.getAddressee() == null ? null : o.getAddressee().stream().map(ObjectBase::getId).collect(Collectors.toSet()), fieldFilter); if (result instanceof Set && ((Set) result).size() > 0) { try { Set t = new HashSet(); @@ -70,7 +66,7 @@ public abstract class FieldExtracted { t.add(citem.getMethod(RfHelper.GETTER_NAME_ID).invoke(item)); } result = t; - } catch (Throwable ignored) {// вернем сами объекты + } catch (Throwable ignored) { } } else if (result instanceof LocalDate) { result = result.toString(); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java index b94e4efba..604eda36a 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java @@ -31,13 +31,10 @@ public class GetResponseFactory { public Collection> responseFromObjectCollection(Collection o) { return o.stream() - .map(this::responseFromObject) - .collect(Collectors.toList()); + .map(this::responseFromObject) + .collect(Collectors.toList()); } - /** - * dictionaryName - это имя тэга внутри - */ public Map responseFromDictionary(String dictionaryName, Object o) { ObjectExtracted objectExtracted = meta.getEnumsExtractedByTagName().get(dictionaryName); if (objectExtracted == null) { @@ -54,16 +51,10 @@ public class GetResponseFactory { return responseFromObjectExtracted(o, objExtr); } - /** - * Варианты методов с Class сделаны для сценариев, когда хотим распарсить объект, - * по мете для родительского класса объекта - * Т.е. вместо извлечение класса o.getClass, берем clazz извне. clazz - base class для o - * - */ public Collection> responseFromObjectCollection(Collection o, Class clazz) { return o.stream() - .map((Function>) o1 -> responseFromObject(o1, clazz)) - .collect(Collectors.toList()); + .map((Function>) o1 -> responseFromObject(o1, clazz)) + .collect(Collectors.toList()); } public Map responseFromObject(Object o, Class clazz) { @@ -83,20 +74,18 @@ public class GetResponseFactory { continue; } currentField = field; -// if (fieldsToAdd.contains(field.getField().getCode())) { - try { - add(r, field, field.extractValue(o)); - } catch (Throwable e) { - log.trace(ExceptionUtils.getStackTrace( - new RuntimeException(String.format("Can't extract value for field='%s' of %s(%s): %s -> %s\n%s", - field.getField().getCode(), - o.getClass().getSimpleName(), objExtr.getClassName(), - e.getClass().getSimpleName(), e.getLocalizedMessage(), - currentField.toString() - ))) - ); - } -// } + try { + add(r, field, field.extractValue(o)); + } catch (Throwable e) { + log.trace(ExceptionUtils.getStackTrace( + new RuntimeException(String.format("Can't extract value for field='%s' of %s(%s): %s -> %s\n%s", + field.getField().getCode(), + o.getClass().getSimpleName(), objExtr.getClassName(), + e.getClass().getSimpleName(), e.getLocalizedMessage(), + currentField.toString() + ))) + ); + } } } catch (Exception e) { log.error(ExceptionUtils.getStackTrace(e)); @@ -145,48 +134,7 @@ public class GetResponseFactory { } private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter - .ofPattern("yyyy-MM-dd'T'HH:mm:ss+03:00") - .withLocale(Locale.US) - .withZone(ZoneId.of("Europe/Moscow")); - - -// public Map newX(Object o, Collection fieldFilter, String destination) { -// ObjectExtracted targetClazz = getTargetClazz(o, destination); -// if (targetClazz == null) -// throw new FrontendException(String.format("Unknown response class: %s", o.getClass().getName())); -// Collection fieldsToAdd = getFilteredFields(targetClazz, fieldFilter); -// Map r = new LinkedHashMap<>(); -// FieldExtracted currentField = null; -// try { -// for (FieldExtracted field : targetClazz.getFields()) { -// if (field.getField().isVirtual() != null && field.getField().isVirtual()) { -// continue; -// } -// currentField = field; -// if (fieldsToAdd.contains(field.getField().getCode())) { -// try { -// add(r, field.getField().getCode(), field.extractValue(o)); -// } catch (Throwable e) { -// log.warn(ExceptionUtils.getStackTrace( -// new FrontendException(String.format("Can't extract value for field='%s' of %s(%s): %s -> %s\n%s", -// field.getField().getCode(), -// o.getClass().getSimpleName(), targetClazz.getClazz().getSimpleName(), -// e.getClass().getSimpleName(), e.getLocalizedMessage(), -// JsonHelper.writeAnyClassToLog(currentField) -// ))) -// ); -// } -// } -// } -// } catch (FrontendException e) { -// throw e; -// } catch (Throwable e) { -// throw new FrontendException(String.format("Can't get field of %s(%s): %s -> %s\n%s", -// o.getClass().getSimpleName(), targetClazz.getClazz().getSimpleName(), -// e.getClass().getSimpleName(), e.getLocalizedMessage(), -// JsonHelper.writeAnyClassToLog(currentField) -// )); -// } -// return r; -// } + .ofPattern("yyyy-MM-dd'T'HH:mm:ss+03:00") + .withLocale(Locale.US) + .withZone(ZoneId.of("Europe/Moscow")); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java index ec8ee3223..84db44bd7 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/MetaServer.java @@ -39,10 +39,10 @@ public class MetaServer extends MetaBase { try { Map objects = getObjects(); log.info("Meta objects:\n{}", - objects.values() - .stream() - .map(ObjectElement::getName) - .collect(Collectors.joining(";", "[", "]"))); + objects.values() + .stream() + .map(ObjectElement::getName) + .collect(Collectors.joining(";", "[", "]"))); for (String key : objects.keySet()) { ObjectExtracted oe; ObjectElement objectElement = objects.get(key); @@ -85,8 +85,8 @@ public class MetaServer extends MetaBase { log.warn("META SERVER >>> {}", e.getLocalizedMessage()); continue; } - String actionDestination = // обычно бывают =null о этому эффективнее по имени класса а не по: objectElement.getSubscription().destination + "/"+ actionElement.getDestination(); - oe.getClassName(); + String actionDestination = + oe.getClassName(); actionObjectsExtracted.put(actionDestination, oe); } } @@ -104,20 +104,6 @@ public class MetaServer extends MetaBase { log.warn("{} {}", key, ExceptionUtils.getStackTrace(e)); continue; } - /** - * можно было бы хранить только для нестандартных словарей (где не только id, name, code) - */ -// List dictFields = oe.getFields(); -// boolean add = false; -// for (FieldExtracted dictField : dictFields) { -// if (!dictionaryDefaultFields.contains(dictField.getMemberName())) { -// add = true; -// break; -// } -// } -// if (add) { -// enumsExtractedByTagName.put(key, oe); -// } enumsExtractedByTagName.put(key, oe); } @@ -130,7 +116,6 @@ public class MetaServer extends MetaBase { if (!RfHelper.isAbstract(o.getClazz())) { try { Object instance = newInstance(o.getClassName()); - // создается успешно. } catch (Throwable e) { log.warn("META SERVER >>> Не удается создать класс {} !", o.getClassName()); } @@ -142,32 +127,8 @@ public class MetaServer extends MetaBase { throw new ClearingMetaServerValidationException(e.getLocalizedMessage()); } } -// -// for (ObjectExtracted o : this.actionObjectsExtracted.values()) { -// try { -// if (!RfHelper.isAbstract(o.getClazz())) { -// try { -// Object instance = newInstance(o.getClassName()); -// // создается успешно. -// } catch (Throwable e) { -// log.warn("META SERVER ACTION >>> Не удается создать класс {} !", o.getClassName()); -// } -// } -// validateGetterForObject(o); -// } catch (ClrxMetaServerGetterNotFoundException e) { -// throw e; -// } catch (Throwable e) { -// throw new ClearingMetaServerValidationException(e.getLocalizedMessage()); -// } -// } } - /** - * проверим наличие геттеров к полям - * - * @param o - * @throws ClassNotFoundException - */ private void validateGetterForObject(ObjectExtracted o) throws ClassNotFoundException { for (FieldExtracted field : o.getFields()) { Class c = o.getClazz(); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/RfHelper.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/RfHelper.java index 96aeed6b0..2b472f02d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/RfHelper.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/RfHelper.java @@ -47,7 +47,7 @@ public class RfHelper { Class raw = Class.forName(((ParameterizedType) t).getRawType().getTypeName()); if (BUSINESS_OBJECT_REF.equals(raw.getSimpleName())) { return Class.forName(((ParameterizedType) t).getActualTypeArguments()[0].getTypeName()); - } else if ("Set".equals(raw.getSimpleName())) { // множества пока не распаковываем + } else if ("Set".equals(raw.getSimpleName())) { return Class.forName(raw.getName()); } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakRestTemplateAuthenticationProvider.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakRestTemplateAuthenticationProvider.java index 9c1f3d891..8bf53d602 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakRestTemplateAuthenticationProvider.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakRestTemplateAuthenticationProvider.java @@ -85,7 +85,6 @@ public class KeycloakRestTemplateAuthenticationProvider implements Authenticatio throw new AuthenticationServiceException("keycloak direct access grant auth failed: bad token"); } AccessToken accessToken = AdapterTokenVerifier.verifyToken(accessTokenString, deployment); - //todo cors settings accessToken.setAllowedOrigins(Collections.singleton("*")); RefreshableKeycloakSecurityContext skSession = new RefreshableKeycloakSecurityContext(deployment, null, accessTokenString, accessToken, null, null, refreshTokenString); @@ -93,21 +92,21 @@ public class KeycloakRestTemplateAuthenticationProvider implements Authenticatio final KeycloakPrincipal principal = new KeycloakPrincipal<>(principalName, skSession); Set roles = AdapterUtils.getRolesFromSecurityContext(skSession); Set effectiveRoles = roles - .stream() - .map(s -> { - UserRole userRole = roleMapping.get(s); - return userRole != null ? userRole.getKey() : null; - }) - .filter(Objects::nonNull) - .collect(Collectors.toSet()); + .stream() + .map(s -> { + UserRole userRole = roleMapping.get(s); + return userRole != null ? userRole.getKey() : null; + }) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); List realmRoles = effectiveRoles.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList()); final KeycloakAccount account = new SimpleKeycloakAccount(principal, effectiveRoles, skSession); KeycloakAuthenticationToken keycloakAuthenticationToken = new KeycloakAuthenticationToken(account, false, realmRoles); keycloakAuthenticationToken.setAuthenticated(true); log.debug("login successful: login {}, roles from keycloak: {}; effective roles {}", - authentication.getName(), - String.join(";", roles), - String.join(";", effectiveRoles) + authentication.getName(), + String.join(";", roles), + String.join(";", effectiveRoles) ); return keycloakAuthenticationToken; diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakUtils.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakUtils.java index f80fe11dc..f00e63a71 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakUtils.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/KeycloakUtils.java @@ -10,20 +10,17 @@ import org.springframework.security.core.Authentication; public class KeycloakUtils { static Logger log = LoggerFactory.getLogger(KeycloakUtils.class); - /** - * Достать username из Keycloak имплементации Authentication - */ public static String getUserNameFromAuthentication(Authentication authentication) { if (authentication == null) return null; - if (!(authentication instanceof KeycloakAuthenticationToken)) { // AnonymousAuthenticationToken + if (!(authentication instanceof KeycloakAuthenticationToken)) { log.trace("Authentication token class {} is not KeycloakAuthenticationToken", authentication.getClass().getName()); return null; } KeycloakAuthenticationToken auth = (KeycloakAuthenticationToken) authentication; KeycloakAccount details = (KeycloakAccount) auth.getDetails(); return ((KeycloakPrincipal) details.getPrincipal()) - .getKeycloakSecurityContext() - .getToken() - .getPreferredUsername(); + .getKeycloakSecurityContext() + .getToken() + .getPreferredUsername(); } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/LoginController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/LoginController.java index b12d59ad4..335bdda40 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/LoginController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/LoginController.java @@ -20,11 +20,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; -/** - * при bearer only false - * клиент сюда не попадает - * срабатывает KeycloakAuthenticationProvider с редиректом на логин keycloak - */ @Controller @RequestMapping("/sso") public class LoginController { @@ -44,31 +39,31 @@ public class LoginController { String login = httpServletRequest.getHeader("clearing-login"); String password = httpServletRequest.getHeader("clearing-password"); HttpEntity> request = - new TokenRequest.Builder() - .username(login) - .password(password) - .build(); + new TokenRequest.Builder() + .username(login) + .password(password) + .build(); ResponseEntity response = restTemplate.postForEntity( - "http://10.200.200.147:8080/realms/master/protocol/openid-connect/token", - request, String.class); + "http://10.200.200.147:8080/realms/master/protocol/openid-connect/token", + request, String.class); return null; } @RequestMapping(value = "/login", method = RequestMethod.GET) @ResponseBody public KeycloakAuthResponse getExample(HttpServletRequest httpServletRequest, - HttpServletResponse httpServletResponse) throws JsonProcessingException { + HttpServletResponse httpServletResponse) throws JsonProcessingException { RefreshableKeycloakSecurityContext session = (RefreshableKeycloakSecurityContext) httpServletRequest.getSession().getAttribute(KeycloakSecurityContext.class.getName()); String login = httpServletRequest.getHeader("clearing-login"); String password = httpServletRequest.getHeader("clearing-password"); HttpEntity> request = - new TokenRequest.Builder() - .username(login) - .password(password) - .build(); + new TokenRequest.Builder() + .username(login) + .password(password) + .build(); ResponseEntity response = restTemplate.postForEntity( - "http://10.200.200.147:8080/realms/master/protocol/openid-connect/token", - request, String.class); + "http://10.200.200.147:8080/realms/master/protocol/openid-connect/token", + request, String.class); KeycloakAuthResponse authInfo = json.readValue(response.getBody(), KeycloakAuthResponse.class); return authInfo; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/RestTemplateConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/RestTemplateConfig.java index 9d738a5b4..715111858 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/RestTemplateConfig.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/RestTemplateConfig.java @@ -17,14 +17,11 @@ public class RestTemplateConfig { this.builder = builder; } - /** - * В настоящий момент используется для выгрузки AFS данных - */ @Bean("clearing-rest") public RestTemplate restTemplate() { return builder - .setConnectTimeout(Duration.ofMillis(10000)) - .setReadTimeout(Duration.ofMillis(40000)) - .build(); + .setConnectTimeout(Duration.ofMillis(10000)) + .setReadTimeout(Duration.ofMillis(40000)) + .build(); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/SimpleUserDetailService.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/SimpleUserDetailService.java index 484a15861..cb9964c56 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/SimpleUserDetailService.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/SimpleUserDetailService.java @@ -5,10 +5,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Component; @Component -public class SimpleUserDetailService -// implements UserDetailsService -{ -// @Override +public class SimpleUserDetailService { public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { return null; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/WebSecurityConfig.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/WebSecurityConfig.java index 2100f9166..a047450d3 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/WebSecurityConfig.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/security/WebSecurityConfig.java @@ -52,11 +52,7 @@ public class WebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter { protected void configure(HttpSecurity http) throws Exception { super.configure(http); ExpressionUrlAuthorizationConfigurer.AuthorizedUrl anyReq = http -// .formLogin() -// .loginProcessingUrl("/backend-api-login/perform-login") -// .and() - //todo remove? see ClearingCorsFilter - .cors() + .cors() .and() .csrf().disable() .authorizeRequests() @@ -84,7 +80,6 @@ public class WebSecurityConfig extends KeycloakWebSecurityConfigurerAdapter { @Bean public GrantedAuthorityDefaults grantedAuthorityDefaults() { - // Remove the ROLE_ prefix return new GrantedAuthorityDefaults(""); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java index 55257c2ac..570dddf09 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IOperator.java @@ -8,16 +8,5 @@ import java.util.concurrent.ExecutionException; public interface IOperator { QueueSuccessResponse sendRequestToQueue(String destination, IAction iAction, boolean appendUserId) throws ExecutionException, InterruptedException; - /** - * Для оптимизации проставления userId. - * Аналог sendRequestToQueue(String destination, IAction iAction, true) - * - * @param destination - * @param iAction - * @param userId совершивший запрос - * @return - * @throws ExecutionException - * @throws InterruptedException - */ QueueSuccessResponse sendRequestToQueue(String destination, IAction iAction, Long userId) throws ExecutionException, InterruptedException; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java index 6b403ccc2..2668c2251 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/IStateLoader.java @@ -7,19 +7,22 @@ import java.util.Collection; import java.util.Map; import java.util.Optional; -/** - * сделал чтобы не привязывать все контроллеры к Imdg API - */ public interface IStateLoader { Optional getById(Long id, String mapName, Class clazz); + Collection getAll(String mapName, Class clazz); + Collection> getAllMetaTransform(String mapName, Class clazz); + Collection> getAllMetaTransformSpecificClass(String mapName, Class clazz); + Collection> getAllMetaTransform(String mapName, Class clazz, Map> conditions); + Collection> getAllMetaTransform(String mapName, Class clazz, ImdgPredicate conditions); + Collection> getAllMetaTransform( - String searchMapName, - String mapName, - Class clazz, - ImdgPredicate conditions); + String searchMapName, + String mapName, + Class clazz, + ImdgPredicate conditions); } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java index b5a795465..6854b0268 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/RequestInfoAccepter.java @@ -14,10 +14,6 @@ import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -/** - * Сервис для сигнализирования результатов запросов клиентов. Ассинхронное обновление статуса. - * Клиент запрашивает периодически (или по событию) таблицу Map_RequestInfo и видит результат выполнения запросов. - */ @Service public class RequestInfoAccepter extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -33,23 +29,22 @@ public class RequestInfoAccepter extends QueueConsumer implements InitializingBe @Override public void afterPropertiesSet() throws Exception { callback(RequestInfoUpdate.class) - .setConsumer(this::updateRequestInfo) - .forDestination(Consts.REQUEST_INFO_UPDATE, callbacks::put); + .setConsumer(this::updateRequestInfo) + .forDestination(Consts.REQUEST_INFO_UPDATE, callbacks::put); init(); } private void updateRequestInfo(BaseRequest requestInfoUpdateBaseRequest) { - //will throw exception for any class other than RequestInfoUpdate RequestInfoUpdate statusInfo = requestInfoUpdateBaseRequest.getRequestPayload(); if (statusInfo == null || statusInfo.getId() == null) { log.warn("BaseRequest id={}, RequestPayload={}: requestInfo id was null", - requestInfoUpdateBaseRequest.getId(), statusInfo); + requestInfoUpdateBaseRequest.getId(), statusInfo); return; } RequestInfo requestInfo = requestInfoImdg.getSingleObjectByID(statusInfo.getId()); if (requestInfo == null) { log.warn("unknown requestInfo id={}; statusInfo: {}", - statusInfo.getId(), statusInfo); + statusInfo.getId(), statusInfo); return; } requestInfo.setStatus(statusInfo.getStatus()); diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java index ba9789792..6f961f8ed 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/UserAuthProcessor.java @@ -40,7 +40,7 @@ public class UserAuthProcessor { requestData.setUsername(identifier); requestData.setTime(Instant.now()); requestData.setRoles(new ArrayList<>(roles)); - requestData.setServerIp(serverIp + ":" + serverPort); //getServerAddress() + ":" + serverPort + requestData.setServerIp(serverIp + ":" + serverPort); requestData.setClientIp(userIp); requestData.setEmail(email); requestData.setName(name); @@ -48,7 +48,7 @@ public class UserAuthProcessor { requestData.setMiddleName(middleName); try { operator.sendRequestToQueue(Consts.USER_AUTH_SUCCESS, authEvent, false); - } catch (Throwable e) { //ExecutionException | InterruptedException + } catch (Throwable e) { log.error(ExceptionUtils.getStackTrace(e)); } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java index 69ce3c58d..50b11f657 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/impl/OperatorImpl.java @@ -62,10 +62,8 @@ public class OperatorImpl implements IOperator { if (user == null) { log.warn("UserID not found by login \"{}\"", username); return null; - //throw new IllegalStateException("cannot obtain userId from logged in user " + username); } return user.getId(); - // todo добавить кэш, с очисткой по времени } @Override @@ -78,7 +76,6 @@ public class OperatorImpl implements IOperator { if (appendUserId) { request.setUserId(currentUserId()); } - //сохраняет данные о запросе в хранилище saveRequestToStorage(destination, request); Future send = kafka.send(new ProducerRecord<>(destination, request)); send.get(); @@ -98,7 +95,6 @@ public class OperatorImpl implements IOperator { } else { request.setUserId(userId); } - //сохраняет данные о запросе в хранилище saveRequestToStorage(destination, request); Future send = kafka.send(new ProducerRecord<>(destination, request)); send.get(); @@ -114,12 +110,10 @@ public class OperatorImpl implements IOperator { } private void throwValidate(String destination, IAction iAction) { - //простая валидация - которую можно запилить прямо внутри класса (наличие полей, отношения между датами etc.) Collection validationErrors = iAction.validate(); if (validationErrors.size() > 0) { throw new ActionValidationException(validationErrors); } - // Валидация по мете (рекомендуется использовать её,а не iAction.validate(); IValidator metaValidator = actionMetaValidation.getValidator(destination, iAction); if (metaValidator != null) { metaValidator.tillFirstError().ifPresent(enumMessage -> { @@ -130,8 +124,6 @@ public class OperatorImpl implements IOperator { } }); } - - //валидация требующая IMDG поиска других сущностей и т.д. IValidator validator = validation.getValidator(destination, iAction); if (validator != null) { validator.tillFirstError().ifPresent(enumMessage -> { diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidation.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidation.java index 6dc75df90..b3a6cf8ce 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidation.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidation.java @@ -25,9 +25,6 @@ import java.util.Map; import java.util.Optional; import java.util.function.Function; -/** - * Проверка обязательности полей для IAction по мете - */ @Component public class ActionMetaValidation implements InitializingBean { protected static final Logger log = LoggerFactory.getLogger(ActionMetaValidation.class); @@ -55,8 +52,7 @@ public class ActionMetaValidation implements InitializingBean { public IValidator getValidator(String destination, Object action) { if (action == null) return null; - //if (destination == null) destination = action.getClass().getName(); - String actionDestination = action.getClass().getName(); // см. реализацию в MetaServer String actionDestination =... + String actionDestination = action.getClass().getName(); Function constructor = (Function) validators.get(actionDestination); if (constructor != null) return constructor.apply(action); @@ -64,21 +60,20 @@ public class ActionMetaValidation implements InitializingBean { } static boolean isTrue(Boolean b) { - return b!=null && b; + return b != null && b; } private Function validatorConstructor(ObjectExtracted metaAction) { if (!metaAction.getFields().stream().anyMatch(field -> isTrue(field.getField().isRequired()))) { log.debug("Action {}: no any required fields. Do not need validator.", metaAction.getClassName()); - // нет обязательных полей для валидации return null; } - // Тестирование getter { Object object; try { object = metaAction.getClazz().getDeclaredConstructor().newInstance(); - } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | + NoSuchMethodException e) { throw new RuntimeException("Error self-test validator on class " + metaAction.getClazz(), e); } for (FieldExtracted field : metaAction.getFields()) { @@ -90,10 +85,10 @@ public class ActionMetaValidation implements InitializingBean { String className = metaAction.getClazz().getName(); if (className.endsWith(".MoneyMarketSecurityUpdateAction") || className.endsWith(".ChangeRefundDateActionNew")) { log.warn("Expected warning self-test validator on class {} and field {}: {}", - className, field.getMemberName(), e.toString()); + className, field.getMemberName(), e.toString()); } else { log.warn("Error self-test validator on class {} and field {}: {}", - className, field.getMemberName(), ExceptionUtils.getStackTrace(e)); + className, field.getMemberName(), ExceptionUtils.getStackTrace(e)); } } } @@ -104,7 +99,6 @@ public class ActionMetaValidation implements InitializingBean { ctx.setValidatedObject(iAcc); ValidatorImpl> iValidator = new ValidatorImpl(ctx); iValidator.addRule(metaValidatorRule); - // в дальнейшем можно улучшить и разделить валидатор по полям return iValidator; }; } @@ -125,17 +119,14 @@ public class ActionMetaValidation implements InitializingBean { Object value = field.extractValue(object); if (value == null) return of(BackEndError.ValidationError, field.getMemberName()); -// if (value instanceof String && ((String)value).isEmpty()) // пустое поле, но не null -// return of(BackEndError.ValidationError, field.getMemberName()); } } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { if (object instanceof MoneyMarketSecurityUpdateAction) { - //todo в мете для moneyMarketSecurity / actions / put / для поля lotSize field="securityId" исключение - там надо оставить field, требуется для frontend if (((MoneyMarketSecurityUpdateAction) object).getLotSize() == null) return of(BackEndError.ValidationError, "LotSize"); } else { log.warn("Error apply meta-validator {} for {} : {}", - metaAction, object, e.toString()); + metaAction, object, e.toString()); } } } diff --git a/clearing-parent/backend-api/src/main/resources/meta/data.xml b/clearing-parent/backend-api/src/main/resources/meta/data.xml index e34d26163..2bfe42fb7 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/data.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/data.xml @@ -121,7 +121,7 @@ - + diff --git a/clearing-parent/backend-api/src/main/resources/meta/xsl/ddl.xsl b/clearing-parent/backend-api/src/main/resources/meta/xsl/ddl.xsl index b3e340e78..80cc9b9ca 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/xsl/ddl.xsl +++ b/clearing-parent/backend-api/src/main/resources/meta/xsl/ddl.xsl @@ -107,7 +107,7 @@ COMMENT ON COLUMN .. IS ' (linked to )'; - + diff --git a/clearing-parent/backend-api/src/main/resources/meta/xsl/java.xsl b/clearing-parent/backend-api/src/main/resources/meta/xsl/java.xsl index b2edb1613..9df732031 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/xsl/java.xsl +++ b/clearing-parent/backend-api/src/main/resources/meta/xsl/java.xsl @@ -36,7 +36,7 @@ -package ru.clearing.platform.dictionary; +package ru.clearing.platform.dictionary; select="@class"/> - only package--> /** @@ -95,7 +95,7 @@ public class DictionaryMapStore extends Dict - !! Нестандартное поле !! // FIXME Нестандартный словарь! Требуется писать код вручную. + !! Нестандартное поле !! @@ -104,7 +104,7 @@ public class DictionaryMapStore extends Dict // ------------------ - -package ; +package ; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; @@ -177,7 +177,7 @@ public class MapStore extends TemplateMapSto } // todo добавить класс History -package ; +package ; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessEvent; @@ -234,7 +234,7 @@ public class HistoryMapStore extends Templat @Override public String[] getFields() { - return new String[]{"ID","EVENT_TIME", "EVENT_USER_ID", "EVENT_TYPE", + return new String[]{"ID","EVENT_TIME", "EVENT_USER_ID", "EVENT_TYPE", _ }; } @@ -283,7 +283,7 @@ public class HistoryMapStore extends Templat ", .class)) ; -, +, @@ -306,10 +306,10 @@ public class HistoryMapStore extends Templat // DB field: - - + @@ -337,9 +337,9 @@ public class HistoryMapStore extends Templat - - - + + + public get() { @@ -451,7 +451,7 @@ public class HistoryMapStore extends Templat - + diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java index 9a98de0ba..672fa36a1 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/AbstractControllerTest.java @@ -81,89 +81,72 @@ import static ru.spcex.clearing.test.json.MatcherFactoryWithJson.usingIgnoringFi @ContextConfiguration(classes = { - //account - AccountController.class, - BankAccountController.class, - ClearingAccountController.class, - DepoAccountController.class, - //account misc - ClientCodeController.class, - AccountSymbolsController.class, - //company - CompanyRoleSetController.class, - CompanyController.class, - ClearingMemberCategoryController.class, - CompanyInfoController.class, - CompanySymbolController.class, - ContactController.class, - ProfileDocumentController.class, - RelationController.class, - //execution - ExecutionDepositController.class, - ExecutionFondController.class, - //journal - InDocumentJournalController.class, - ManagementJournalController.class, - OutDocumentJournalController.class, - //liabilities - //misc - CurrencyController.class, - ErrorTextController.class, - ListingController.class, - MarketController.class, - NotificationController.class, - SessionController.class, - SCrossRateController.class, - //payment - PaymentInstructionController.class, - //register - AdmittedLiabilitiesRegisterController.class, - CoveredLiabilitiesRegisterController.class, - DepoBalanceRegisterController.class, - DepoPaymentInstructionRegisterController.class, - ExcludeLiabilitiesRegisterController.class, - ExecutionRegisterController.class, - LiabilitiesRegisterController.class, - MoneyBalanceRegisterController.class, - ContractRegisterController.class, - ReportRegisterController.class, - GatewayResultController.class, - PairSdfController.class, - //registry - RegistryController.class, - TradingClearingRegistryController.class, - //scheduler - ClearingCalendarController.class, - LauncherController.class, - PlannerAllTodayController.class, - PlannerController.class, - PlannerTemplateController.class, - //securities - MoneyMarketSecurityController.class, - CouponPeriodController.class, - EquitySecurityController.class, - FixedIncomeCashFlowController.class, - FixedIncomeSecurityController.class, - InformationAccountController.class, - SecurityController.class, - //user - UserController.class, - UserRoleSessionController.class, - //utilities - StatementController.class, - UserSettingsController.class, - //******* common configs ******* - WebTestConfig.class, - IOperatorTest.class, - HazelcastServiceTestConfiguration.class, - StateLoaderImplTestConfig.class, - WebSecurityTestConfigurer.class, - MessagesTestConfig.class, - Jackson2HttpConverterTestConfig.class}) -//todo может быть указать пакедж а не список контроллеров + AccountController.class, + BankAccountController.class, + ClearingAccountController.class, + DepoAccountController.class, + ClientCodeController.class, + AccountSymbolsController.class, + CompanyRoleSetController.class, + CompanyController.class, + ClearingMemberCategoryController.class, + CompanyInfoController.class, + CompanySymbolController.class, + ContactController.class, + ProfileDocumentController.class, + RelationController.class, + ExecutionDepositController.class, + ExecutionFondController.class, + InDocumentJournalController.class, + ManagementJournalController.class, + OutDocumentJournalController.class, + CurrencyController.class, + ErrorTextController.class, + ListingController.class, + MarketController.class, + NotificationController.class, + SessionController.class, + SCrossRateController.class, + PaymentInstructionController.class, + AdmittedLiabilitiesRegisterController.class, + CoveredLiabilitiesRegisterController.class, + DepoBalanceRegisterController.class, + DepoPaymentInstructionRegisterController.class, + ExcludeLiabilitiesRegisterController.class, + ExecutionRegisterController.class, + LiabilitiesRegisterController.class, + MoneyBalanceRegisterController.class, + ContractRegisterController.class, + ReportRegisterController.class, + GatewayResultController.class, + PairSdfController.class, + RegistryController.class, + TradingClearingRegistryController.class, + ClearingCalendarController.class, + LauncherController.class, + PlannerAllTodayController.class, + PlannerController.class, + PlannerTemplateController.class, + MoneyMarketSecurityController.class, + CouponPeriodController.class, + EquitySecurityController.class, + FixedIncomeCashFlowController.class, + FixedIncomeSecurityController.class, + InformationAccountController.class, + SecurityController.class, + UserController.class, + UserRoleSessionController.class, + StatementController.class, + UserSettingsController.class, + WebTestConfig.class, + IOperatorTest.class, + HazelcastServiceTestConfiguration.class, + StateLoaderImplTestConfig.class, + WebSecurityTestConfigurer.class, + MessagesTestConfig.class, + Jackson2HttpConverterTestConfig.class}) @ExtendWith(SpringExtension.class) @WebMvcTest -//@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/backend-api/src/main/resources/") public abstract class AbstractControllerTest { protected static final MatcherFactoryWithJson.Matcher BASE_REQUEST_MATCHER = usingIgnoringFieldsComparatorForClass(BaseRequest.class,"userId"); protected static final MatcherFactoryWithJson.Matcher CUD_RESPONSE_MATCHER = usingIgnoringFieldsComparatorForClass(CudResponse.class); @@ -202,10 +185,9 @@ public abstract class AbstractControllerTest { @PostConstruct private void postConstruct() { mockMvc = MockMvcBuilders - .webAppContextSetup(webApplicationContext) - .addFilter(CHARACTER_ENCODING_FILTER) -// .apply(springSecurity()) - .build(); + .webAppContextSetup(webApplicationContext) + .addFilter(CHARACTER_ENCODING_FILTER) + .build(); TestUtils.FutureRecordMetadata future = spy(TestUtils.FutureRecordMetadata.class); doReturn(future).when(producer).send(producerRecord.capture()); userImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_User, User.class); @@ -229,16 +211,13 @@ public abstract class AbstractControllerTest { CudResponse expected = new CudResponse(); expected.setCode(0L); expected.setMessage("success"); - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.post(REST_URL) - .contentType(MediaType.APPLICATION_JSON) - .content(writeValue(action))) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - //.andExpect(content().json(writeValue(expected))) - .andReturn(); + .contentType(MediaType.APPLICATION_JSON) + .content(writeValue(action))) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); expected.setPayload(new QueueSuccessResponse(ActionType.NEW, cudResponseTest.getPayload().getId())); CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); @@ -249,17 +228,13 @@ public abstract class AbstractControllerTest { expected.setCode(0L); expected.setMessage("success"); expected.setPayload(new QueueSuccessResponse(ActionType.UPDATE, currentId.getAndIncrement())); - - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.put(REST_URL + existsId) - .contentType(MediaType.APPLICATION_JSON) - .content(writeValue(action))) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - //.andExpect(content().json(writeValue(expected))); - .andReturn(); + .contentType(MediaType.APPLICATION_JSON) + .content(writeValue(action))) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); expected.setPayload(new QueueSuccessResponse(ActionType.UPDATE, cudResponseTest.getPayload().getId())); CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); @@ -277,17 +252,13 @@ public abstract class AbstractControllerTest { expected.setCode(0L); expected.setMessage("success"); expected.setPayload(new QueueSuccessResponse(ActionType.UPDATE, currentId.getAndIncrement())); - - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.put(REST_URL) - .contentType(MediaType.APPLICATION_JSON) - .content(writeValue(action))) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - //.andExpect(content().json(writeValue(expected))); - .andReturn(); + .contentType(MediaType.APPLICATION_JSON) + .content(writeValue(action))) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); expected.setPayload(new QueueSuccessResponse(ActionType.UPDATE, cudResponseTest.getPayload().getId())); CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); @@ -300,15 +271,12 @@ public abstract class AbstractControllerTest { expected.setPayload(new QueueSuccessResponse(ActionType.DELETE, existsId)); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(existsId); - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.delete(REST_URL + existsId) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) -// .andExpect(content().json(writeValue(expected))); - .andReturn(); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); expected.setPayload(new QueueSuccessResponse(ActionType.DELETE, cudResponseTest.getPayload().getId())); CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); @@ -324,21 +292,18 @@ public abstract class AbstractControllerTest { protected void checkGettingAllFromRestApi(String imdgDistributedNames, T existsObj, String restUrl) throws Exception { Class clazz = (Class) existsObj.getClass(); Imdg testingImdg = hazelcastServiceTest.getImdg(imdgDistributedNames, clazz); - // ((ImdgHazelcast)testingImdg).clear(); // предварительная очистка testingImdg.insert(existsObj); Collection values = testingImdg.getAllValues(); Collection> all = responseFactory.responseFromObjectCollection(values); CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(restUrl) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - // ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } protected void clearAll(String imdgDistributedNames, Class clazz) { diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountControllerTest.java index 38c4f02de..c7a8cac30 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountControllerTest.java @@ -12,51 +12,28 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; class AccountControllerTest extends AbstractControllerTest { private static final String REST_URL = "/accounting/accounts/"; - /** - * {@link AccountController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
- * Входной запрос /accounting/accounts/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Account existBankAccount = new Account(); existBankAccount.setAccountType("99"); existBankAccount.setAccount("123456789123"); existBankAccount.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Account, existBankAccount, REST_URL); } - /** - * {@link AccountController#add(AccountNewAction)}
- * Тест проверяет получение сущности {@link AccountNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link AccountNewAction}:
- */ @Test void add() throws Exception { - //ARRANGE AccountNewAction accountNewAction = new AccountNewAction(); accountNewAction.setStatus("ACTV"); accountNewAction.setAccount("A11112222333"); accountNewAction.setCompanyId(5L); accountNewAction.setAccountType("BANK"); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, accountNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_CORRESPONDENT_ACCOUNT_NEW, accountNewAction); } - /** - * {@link AccountController#update(Long, AccountUpdateAction)}
- * Тест проверяет получение сущности {@link AccountUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link AccountUpdateAction}:
- */ @Test void update() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); AccountUpdateAction accountUpdateAction = new AccountUpdateAction(); accountUpdateAction.setId(id); @@ -65,29 +42,19 @@ class AccountControllerTest extends AbstractControllerTest { accountUpdateAction.setCompanyId(5L); accountUpdateAction.setAccountType("BANK"); Account account = getAccount(id); - - //ACT and ASSERT checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_Account, account, - REST_URL, accountUpdateAction, id); + REST_URL, accountUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_CORRESPONDENT_ACCOUNT_UPDATE, accountUpdateAction); } - /** - * {@link AccountController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /securities/account/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); Account account = getAccount(id); - - //ACT and ASSERT checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_Account, account, - REST_URL, id); + REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_CORRESPONDENT_ACCOUNT_BLOCK, deleteAction); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountSymbolsControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountSymbolsControllerTest.java index 72ee1cdcb..2efe6002d 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountSymbolsControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountSymbolsControllerTest.java @@ -12,54 +12,30 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; class AccountSymbolsControllerTest extends AbstractControllerTest { private static final String REST_URL = "/accounting/depo-accounts-symbols/"; - /** - * {@link AccountSymbolsController#add(AccountSymbolsNewAction)}
- * Тест проверяет получение сущности {@link AccountSymbolsNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link AccountSymbolsNewAction}: {111L, "VALUE-1234"} - */ @Test void add() throws Exception { - //ARRANGE AccountSymbolsNewAction accountSymbolsNewAction = new AccountSymbolsNewAction(); accountSymbolsNewAction.setAccountId(111L); accountSymbolsNewAction.setAccountSymbolValue("VALUE-1234"); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, accountSymbolsNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_DEPO_ACCOUNT_SYMBOLS_NEW, accountSymbolsNewAction); } - /** - * {@link AccountSymbolsController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /accounting/depo-accounts-symbols/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_DEPO_ACCOUNT_SYMBOLS_DELETE, deleteAction); } - /** - * {@link ClientCodeController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ClientCode.
- * Входной запрос /client-codes/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE AccountSymbols existAccountSymbols = new AccountSymbols(); existAccountSymbols.setAccountId(111L); existAccountSymbols.setAccountSymbolValue("AAABBBVVCD"); existAccountSymbols.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_AccountSymbols, existAccountSymbols, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java index 9f83a572d..af1d207f7 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/BankAccountControllerTest.java @@ -30,53 +30,22 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class BankAccountControllerTest extends AbstractControllerTest { private static final String REST_URL = "/accounting/bank-accounts/"; - /** - * {@link BankAccountController#add(BankAccountNewAction)}
- * Тест проверяет получение сущности {@link BankAccountNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link BankAccountNewRequest}:
- * {@link BankAccountNewRequest#bankIdentificationCode} - 044525776
- * {@link BankAccountNewRequest#bankName} - Beta Money Bank
- * {@link BankAccountNewRequest#correspondentAccount} - 30101111111111111776
- * {@link BankAccountNewRequest#correspondentAccountName} - correspondent
- * {@link BankAccountNewRequest#currency} - RUB
- * {@link BankAccountNewRequest#destination} - destination
- * {@link BankAccountNewRequest#taxpayerIdentificationNumber} - 3664011397
- * {@link BankAccountNewRequest#taxRegistrationReasonCode} - 01
- * {@link BankAccountNewRequest#account} - 11111222223333344444
- */ @Test void add() throws Exception { - //ARRANGE BankAccountNewAction bankAccountNewAction = getBankAccountNewAction( - 0, "044525776", - "Beta Money Bank", - "30101111111111111776", - "correspondent", - "RUB", - "destination", - "3664011397", - "01", - "11111222223333344444"); - - //ACT and ASSERT + 0, "044525776", + "Beta Money Bank", + "30101111111111111776", + "correspondent", + "RUB", + "destination", + "3664011397", + "01", + "11111222223333344444"); checkAddingByRestApi(REST_URL, bankAccountNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_BANK_ACCOUNT_NEW, bankAccountNewAction); } - /** - * {@link BankAccountController#add(BankAccountNewAction)}
- * Тест проверяет работу валидации сущности {@link BankAccountNewAction} принятой по REST API для отправку в Apache Kafka.
- * Входной запрос {@link BankAccountNewRequest}:
- * {@link BankAccountNewRequest#bankIdentificationCode} - 044525776 или ""
- * {@link BankAccountNewRequest#bankName} - Beta Money Bank или ""
- * {@link BankAccountNewRequest#correspondentAccount} - 30101111111111111776 или ""
- * {@link BankAccountNewRequest#correspondentAccountName} - correspondent или ""
- * {@link BankAccountNewRequest#currency} - RUB или ""
- * {@link BankAccountNewRequest#destination} - destinatio или ""n
- * {@link BankAccountNewRequest#taxpayerIdentificationNumber} - 3664011397 или ""
- * {@link BankAccountNewRequest#taxRegistrationReasonCode} - 01 или ""
- * {@link BankAccountNewRequest#account} - 11111222223333344444 или ""
- */ @Test void addWithException() { assertThrowsFor(getBankAccountNewAction(0, "", "Beta Money Bank", "30101111111111111776", "correspondent", "RUB", "destination", "3664011397", "01", "11111222223333344444")); @@ -90,65 +59,35 @@ class BankAccountControllerTest extends AbstractControllerTest { assertThrowsFor(getBankAccountNewAction(0, "044525776", "Beta Money Bank", "30101111111111111776", "correspondent", "RUB", "destination", "3664011397", "01", "")); } - /** - * {@link BankAccountController#update(Long, BankAccountUpdateAction)}
- * Тест проверяет получение сущности {@link BankAccountUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link BankAccountUpdateAction}:
- * {@link BankAccountUpdateAction#bankIdentificationCode} - 044525776
- * {@link BankAccountUpdateAction#bankName} - Beta Money Bank
- * {@link BankAccountUpdateAction#correspondentAccount} - 30101111111111111776
- * {@link BankAccountUpdateAction#correspondentAccountName} - correspondent
- * {@link BankAccountUpdateAction#currency} - RUB
- * {@link BankAccountUpdateAction#destination} - destination
- * {@link BankAccountUpdateAction#taxpayerIdentificationNumber} - 3664011397
- * {@link BankAccountUpdateAction#taxRegistrationReasonCode} - 01
- */ @Test void update() throws Exception { - //ARRANGE long id = 0; BankAccountUpdateAction bankAccountUpdateAction = getBankAccountUpdateAction( - id, - "044525776", - "Beta Money Bank", - "30101111111111111776", - "correspondent", - "RUB", - "destination", - "3664011397", - "01", - "11111222223333344444"); - - //ACT and ASSERT + id, + "044525776", + "Beta Money Bank", + "30101111111111111776", + "correspondent", + "RUB", + "destination", + "3664011397", + "01", + "11111222223333344444"); checkUpdatingByRestApi(REST_URL, bankAccountUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_BANK_ACCOUNT_UPDATE, bankAccountUpdateAction); } - /** - * {@link BankAccountController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /accounting/bank-accounts/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_BANK_ACCOUNT_BLOCK, deleteAction); } - /** - * {@link BankAccountController#getById(Long)}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
- * Входной запрос /accounting/bank-accounts/{@link Long}: - 0L
- * Ответ BankAccountBackendGetById
- */ @Test void getById() throws Exception { - //ARRANGE BankAccount existBankAccount = new BankAccount(); existBankAccount.setBankName("ooo tinkoff"); existBankAccount.setBankIdentificationCode("99999"); @@ -164,7 +103,6 @@ class BankAccountControllerTest extends AbstractControllerTest { inDocumentJournalImdg.insert(existBankAccount); CommonGetByIdResponse expected = new CommonGetByIdResponse(); - //expected.getPayload(). Map payload = new HashMap<>(); payload.put("bankName", "ooo tinkoff"); payload.put("bankIdentificationCode", "99999"); @@ -176,25 +114,16 @@ class BankAccountControllerTest extends AbstractControllerTest { payload.put("taxRegistrationReasonCode", "886886"); payload.put("id", existBankAccount.getId()); expected.fromEntity(payload); - //ACT perform(MockMvcRequestBuilders.get(REST_URL + existBankAccount.getId()) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response -// ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } - /** - * {@link BankAccountController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
- * Входной запрос /accounting/bank-accounts/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE BankAccount existBankAccount = new BankAccount(); existBankAccount.setBankName("ooo tinkoff"); existBankAccount.setBankIdentificationCode("99999"); @@ -205,8 +134,6 @@ class BankAccountControllerTest extends AbstractControllerTest { existBankAccount.setTaxpayerIdentificationNumber("848484848484"); existBankAccount.setTaxRegistrationReasonCode("886886"); existBankAccount.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_BankAccount, existBankAccount, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClearingAccountControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClearingAccountControllerTest.java index 8e8ec9118..6f8aa4b97 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClearingAccountControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClearingAccountControllerTest.java @@ -8,22 +8,13 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class ClearingAccountControllerTest extends AbstractControllerTest { private static final String REST_URL = "/accounting/clearing-accounts/"; - /** - * {@link ClearingAccountController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ClearingAccount.
- * Входной запрос /securities/clearing-accounts/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ClearingAccount existClearingAccount = new ClearingAccount(); existClearingAccount.setAccountId(99L); existClearingAccount.setClearingAccountType("CATPE-1"); existClearingAccount.setCompanyId(6L); existClearingAccount.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ClearingAccount, existClearingAccount, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClientCodeControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClientCodeControllerTest.java index 9aac531c5..564fbc608 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClientCodeControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/ClientCodeControllerTest.java @@ -22,42 +22,20 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class ClientCodeControllerTest extends AbstractControllerTest { private static final String REST_URL = "/client-codes/"; - /** - * {@link ClientCodeController#add(ClientCodeNewAction)}
- * Тест проверяет получение сущности {@link ClientCodeNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ClientCodeNewRequest}:
- * {@link ClientCodeNewRequest#} - 044525776
- * ... - */ @Test void add() throws Exception { - //ARRANGE ClientCodeNewAction clientCodeNewAction = getClientCodeNewAction( - 0, - "044525776", - "ACTV", - 1000L, - 1010L, - 1020L, - 1030L); - - //ACT and ASSERT + 0, + "044525776", + "ACTV", + 1000L, + 1010L, + 1020L, + 1030L); checkAddingByRestApi(REST_URL, clientCodeNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_CLIENT_CODE_NEW, clientCodeNewAction); } - /** - * {@link ClientCodeController#add(ClientCodeNewAction)}
- * Тест проверяет работу валидации сущности {@link ClientCodeNewAction} принятой по REST API для отправку в Apache Kafka.
- * Входной запрос {@link ClientCodeNewAction}:
- * {@link ClientCodeNewAction#id} - (generated)
- * {@link ClientCodeNewAction#code} - "044525776" или null или ""
- * {@link ClientCodeNewAction#status} - "ACTV"
- * {@link ClientCodeNewAction#companyId} - 1000L или null
- * {@link ClientCodeNewAction#depoAccountId} - 1010L
- * {@link ClientCodeNewAction#moneyAccountId} - 1020L
- * {@link ClientCodeNewAction#tradingClearingRegistryId} - 1030L
- */ @Test void addWithException() { assertThrowsFor(getClientCodeNewAction(0, "", "ACTV", 1000L, 1010L, 1020L, 1030L)); @@ -65,61 +43,32 @@ class ClientCodeControllerTest extends AbstractControllerTest { assertThrowsFor(getClientCodeNewAction(0, "044525776", "ACTV", null, 1010L, 1020L, 1030L)); } - /** - * {@link ClientCodeController#update(Long, ClientCodeUpdateAction)}
- * Тест проверяет получение сущности {@link ClientCodeUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ClientCodeUpdateAction}:
- * {@link ClientCodeUpdateAction#id} - (generated)
- * {@link ClientCodeUpdateAction#code} - "044525776"
- * {@link ClientCodeUpdateAction#status} - "ACTV"
- * {@link ClientCodeUpdateAction#companyId} - 1000L
- * {@link ClientCodeUpdateAction#depoAccountId} - 1010L
- * {@link ClientCodeUpdateAction#moneyAccountId} - 1020L
- * {@link ClientCodeUpdateAction#tradingClearingRegistryId} - 1030L
- */ @Test void update() throws Exception { - //ARRANGE long id = 0; ClientCodeUpdateAction clientCodeUpdateAction = getClientCodeUpdateAction( - id, - "044525776", - "ACTV", - 1000L, - 1010L, - 1020L, - 1030L); - - //ACT and ASSERT + id, + "044525776", + "ACTV", + 1000L, + 1010L, + 1020L, + 1030L); checkUpdatingByRestApi(REST_URL, clientCodeUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_CLIENT_CODE_UPDATE, clientCodeUpdateAction); } - /** - * {@link ClientCodeController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /client-codes/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_CLIENT_CODE_DELETE, deleteAction); } - /** - * {@link ClientCodeController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ClientCode.
- * Входной запрос /client-codes/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ClientCode existClientCode = new ClientCode(); existClientCode.setCode("ooo tinkoff"); existClientCode.setCompanyId(1000L); @@ -130,8 +79,6 @@ class ClientCodeControllerTest extends AbstractControllerTest { existClientCode.setCreated(Instant.now()); existClientCode.setUpdated(Instant.now()); existClientCode.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ClientCode, existClientCode, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/DepoAccountControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/DepoAccountControllerTest.java index 2bb605998..c2f6439db 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/DepoAccountControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/DepoAccountControllerTest.java @@ -8,22 +8,13 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class DepoAccountControllerTest extends AbstractControllerTest { private static final String REST_URL = "/accounting/depo-accounts/"; - /** - * {@link DepoAccountController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ClearingAccount.
- * Входной запрос /securities/depo-accounts/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE DepoAccount existDepoAccount = new DepoAccount(); existDepoAccount.setAccountId(99L); existDepoAccount.setDepoAccountType("T1001"); existDepoAccount.setCompanyId(6L); existDepoAccount.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_DepoAccount, existDepoAccount, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountControllerTest.java index d352d259b..d8342ae1f 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/account/InformationAccountControllerTest.java @@ -9,22 +9,13 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class InformationAccountControllerTest extends AbstractControllerTest { public static final String REST_URL = "/accounting/information-accounts/"; - /** - * {@link InformationAccountController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /accounting/information-accounts/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE InformationAccount informationAccount = new InformationAccount(); informationAccount.setId(currentId.get()); informationAccount.setCompanyId(currentId.get()); informationAccount.setClearingAccountId(currentId.get()); informationAccount.setAccountId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_InformationAccount, informationAccount, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ClearingMemberCategoryControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ClearingMemberCategoryControllerTest.java index 8ea3d4ba6..9a259e523 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ClearingMemberCategoryControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ClearingMemberCategoryControllerTest.java @@ -20,88 +20,44 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class ClearingMemberCategoryControllerTest extends AbstractControllerTest { private static final String REST_URL = "/clearing-member-categories/"; - /** - * {@link ClearingMemberCategoryController#add(ClearingMemberCategoryNewAction)}
- * Тест проверяет получение сущности {@link ClearingMemberCategoryNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ClearingMemberCategoryNewAction}:
- * {@link ClearingMemberCategoryNewAction#clearingMemberCategory} - "Category"
- * {@link ClearingMemberCategoryNewAction#companyId} - currentId
- */ @Test void add() throws Exception { - //ARRANGE ClearingMemberCategoryNewAction clearingMemberCategoryNewAction = new ClearingMemberCategoryNewAction(); clearingMemberCategoryNewAction.setClearingMemberCategory("Category"); clearingMemberCategoryNewAction.setCompanyId(0L); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, clearingMemberCategoryNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_NEW, clearingMemberCategoryNewAction); } - /** - * {@link ClearingMemberCategoryController#add(ClearingMemberCategoryNewAction)}
- * Тест проверяет получение сущности {@link ClearingMemberCategoryNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ClearingMemberCategoryNewAction}:
- * {@link ClearingMemberCategoryNewAction#clearingMemberCategory} - "Category"
- * {@link ClearingMemberCategoryNewAction#companyId} - currentId
- */ -// @Test валидации пока нет void addWithException() { assertThrowsFor(getClearingMemberCategoryNewAction("Category", null)); assertThrowsFor(getClearingMemberCategoryNewAction("", 0L)); } - /** - * {@link ClearingMemberCategoryController#update(Long, ClearingMemberCategoryUpdateAction)}
- * Тест проверяет получение сущности {@link ClearingMemberCategoryUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ClearingMemberCategoryUpdateAction}:
- * {@link ClearingMemberCategoryUpdateAction#clearingMemberCategory} - Category
- * {@link ClearingMemberCategoryUpdateAction#id} - currentId
- */ @Test void update() throws Exception { - //ARRANGE ClearingMemberCategoryUpdateAction clearingMemberCategoryUpdateAction = new ClearingMemberCategoryUpdateAction(); clearingMemberCategoryUpdateAction.setClearingMemberCategory("Category"); clearingMemberCategoryUpdateAction.setId(currentId.get()); - - //ACT and ASSERT checkUpdatingByRestApi(REST_URL, clearingMemberCategoryUpdateAction, clearingMemberCategoryUpdateAction.getId()); checkSendedMessegeFromKafka(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_UPDATE, clearingMemberCategoryUpdateAction); } - /** - * {@link ClearingMemberCategoryController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /clearing-member-categories/{@link Long}: - currentId
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_CLEARING_MEMBER_CATEGORY_DELETE, deleteAction); } - /** - * {@link ClearingMemberCategoryController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ClearingMemberCategory.
- * Входной запрос /clearing-member-categories/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ClearingMemberCategory clearingMemberCategory = new ClearingMemberCategory(); clearingMemberCategory.setClearingMemberCategory("Category"); clearingMemberCategory.setCompanyId(1000000L); clearingMemberCategory.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ClearingMemberCategory, clearingMemberCategory, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyControllerTest.java index 57bf69d00..592d11049 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyControllerTest.java @@ -14,30 +14,17 @@ import ru.spcex.clearing.platform.messaging.domain.cud.registry.TradingClearingR class CompanyControllerTest extends AbstractControllerTest { private static final String REST_URL = "/companies/"; - /** - * {@link CompanyController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /companies/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_COMPANY_DELETE, deleteAction); } - /** - * {@link CompanyController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_Company.
- * Входной запрос /companies
- */ @Test void getAll() throws Exception { - //ARRANGE Company existCompany = new Company(); existCompany.setTradingCode("ooo tinkoff"); existCompany.setClearingCode("99999"); @@ -45,26 +32,12 @@ class CompanyControllerTest extends AbstractControllerTest { existCompany.setShortName("OOO ROGA I KOPITA"); existCompany.setTradingCode("848484848484"); existCompany.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Company, existCompany, REST_URL); } - /** - * {@link CompanyController#add(CompanyNewAction)}
- * Тест проверяет создание сущности {@link CompanyNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link CompanyNewAction}:
- * {@link CompanyNewAction#fullName "Full name"
- * {@link CompanyNewAction#companySymbol "CLRC"
- * {@link CompanyNewAction#companySymbolValue "NAME1"
- * {@link CompanyNewAction#workflowStatus "ACTV"
- */ @Test void add() throws Exception { - //ARRANGE CompanyNewAction newAction = getCompanyNewAction(); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, newAction); checkSendedMessegeFromKafka(Consts.DESTINATION_COMPANY_NEW, newAction); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyInfoControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyInfoControllerTest.java index 6ea34bf51..3f07c1690 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyInfoControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyInfoControllerTest.java @@ -30,51 +30,13 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class CompanyInfoControllerTest extends AbstractControllerTest { private static final String REST_URL = "/company-infos/"; - /** - * {@link CompanyInfoController#update(Long, CompanyInfoUpdateAction)}
- * Тест проверяет получение сущности {@link CompanyInfoUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link CompanyInfoUpdateAction}:
- * {@link CompanyInfoUpdateAction#workflowStatus} - ACTV
- * {@link CompanyInfoUpdateAction#corporationSoleType} - 0000
- * {@link CompanyInfoUpdateAction#countryCode} - 0000
- * {@link CompanyInfoUpdateAction#description} - exists description
- * {@link CompanyInfoUpdateAction#professionalSign} - 0000
- * {@link CompanyInfoUpdateAction#legalKind} - 0000
- * {@link CompanyInfoUpdateAction#organizationType} - 0000
- * {@link CompanyInfoUpdateAction#residence} - 0000
- * {@link CompanyInfoUpdateAction#shortNameEng} - exists shortNameEng
- * {@link CompanyInfoUpdateAction#fullNameEng} - exists fullNameEng
- * {@link CompanyInfoUpdateAction#shortName} - exists shortName
- * {@link CompanyInfoUpdateAction#fullName} - exists fullName
- * {@link CompanyInfoUpdateAction#id} - currentId
- */ -// @Test валидации пока нет void addWithException() { assertThrowsFor(getClearingMemberCategoryNewAction("Category", null)); assertThrowsFor(getClearingMemberCategoryNewAction("", 0L)); } - /** - * {@link CompanyInfoController#update(Long, CompanyInfoUpdateAction)}
- * Тест проверяет получение сущности {@link CompanyInfoUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link CompanyInfoUpdateAction}:
- * {@link CompanyInfoUpdateAction#workflowStatus} - ACTV
- * {@link CompanyInfoUpdateAction#corporationSoleType} - 0000
- * {@link CompanyInfoUpdateAction#countryCode} - 0000
- * {@link CompanyInfoUpdateAction#description} - exists description
- * {@link CompanyInfoUpdateAction#professionalSign} - 0000
- * {@link CompanyInfoUpdateAction#legalKind} - 0000
- * {@link CompanyInfoUpdateAction#organizationType} - 0000
- * {@link CompanyInfoUpdateAction#residence} - 0000
- * {@link CompanyInfoUpdateAction#shortNameEng} - exists shortNameEng
- * {@link CompanyInfoUpdateAction#fullNameEng} - exists fullNameEng
- * {@link CompanyInfoUpdateAction#shortName} - exists shortName
- * {@link CompanyInfoUpdateAction#fullName} - exists fullName
- * {@link CompanyInfoUpdateAction#id} - currentId
- */ @Test void update() throws Exception { - //ARRANGE CompanyInfoUpdateAction companyInfoUpdateAction = new CompanyInfoUpdateAction(); companyInfoUpdateAction.setWorkflowStatus("ACTV"); companyInfoUpdateAction.setCorporationSoleType("0000"); @@ -89,21 +51,12 @@ class CompanyInfoControllerTest extends AbstractControllerTest { companyInfoUpdateAction.setShortName("exists shortName"); companyInfoUpdateAction.setFullName("exists fullName"); companyInfoUpdateAction.setId(currentId.get()); - - //ACT and ASSERT checkUpdatingByRestApi(REST_URL, companyInfoUpdateAction, companyInfoUpdateAction.getId()); checkSendedMessegeFromKafka(Consts.DESTINATION_COMPANY_INFO_UPDATE, companyInfoUpdateAction); } - /** - * {@link CompanyInfoController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_Company.
- * Входной запрос /company-infos/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Long ID = 0L; CompanyInfo existsCompanyInfo = new CompanyInfo(); existsCompanyInfo.setId(ID); @@ -122,26 +75,24 @@ class CompanyInfoControllerTest extends AbstractControllerTest { existsCompany.setProfile(existsCompanyInfo); Imdg companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class); - ((ImdgHazelcast)companyImdg).clear(); + ((ImdgHazelcast) companyImdg).clear(); companyImdg.insert(existsCompany); Collection> all = new ArrayList<>(); Collection companies = companyImdg.getAllValues(); for (Company company : companies) { - if (company.getProfile() != null && company.getProfile().getId() != null) { // пока возвращает "пустой" CompanyInfo если его нет для Company + if (company.getProfile() != null && company.getProfile().getId() != null) { all.add(responseFactory.responseFromObject(company.getProfile())); } } CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(REST_URL) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } private void assertThrowsFor(IAction iAction) { diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyRoleSetControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyRoleSetControllerTest.java index b42cab16e..ec22fc0ea 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyRoleSetControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyRoleSetControllerTest.java @@ -8,22 +8,12 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class CompanyRoleSetControllerTest extends AbstractControllerTest { private static final String REST_URL = "/company-role-sets/"; - /** - * {@link CompanyRoleSetController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
- * Входной запрос /company-role-sets/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE CompanyRoleSet existBankAccount = new CompanyRoleSet(); existBankAccount.setCompanyId(11L); existBankAccount.setCompanyRole("CLRM"); existBankAccount.setId(currentId.get()); - - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_CompanyRoleSet, existBankAccount, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanySymbolControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanySymbolControllerTest.java index cd02fbfe3..c7efbd748 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanySymbolControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanySymbolControllerTest.java @@ -19,57 +19,28 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class CompanySymbolControllerTest extends AbstractControllerTest { private static final String REST_URL = "/company-symbols/"; - /** - * {@link CompanySymbolController#update(Long, CompanySymbolUpdateAction)}
- * Тест проверяет получение сущности {@link CompanySymbolUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link CompanySymbolUpdateAction}:
- * {@link CompanySymbolUpdateAction#companyId} - 1000L
- * {@link CompanySymbolUpdateAction#companySymbolValue} - SymbolValue
- * {@link CompanySymbolUpdateAction#id} - currentId
- */ -// @Test валидации пока нет void addWithException() { assertThrowsFor(getClearingMemberCategoryNewAction("Category", null)); assertThrowsFor(getClearingMemberCategoryNewAction("", 0L)); } - /** - * {@link CompanySymbolController#update(Long, CompanySymbolUpdateAction)}
- * Тест проверяет получение сущности {@link CompanySymbolUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link CompanySymbolUpdateAction}:
- * {@link CompanySymbolUpdateAction#companyId} - 1000L
- * {@link CompanySymbolUpdateAction#companySymbolValue} - SymbolValue
- * {@link CompanySymbolUpdateAction#id} - currentId
- */ @Test void update() throws Exception { - //ARRANGE CompanySymbolUpdateAction companySymbolUpdateAction = new CompanySymbolUpdateAction(); companySymbolUpdateAction.setCompanyId(1000L); companySymbolUpdateAction.setCompanySymbolValue("SymbolValue"); companySymbolUpdateAction.setId(currentId.get()); - - //ACT and ASSERT checkUpdatingByRestApi(REST_URL, companySymbolUpdateAction, companySymbolUpdateAction.getId()); checkSendedMessegeFromKafka(Consts.DESTINATION_COMPANY_SYMBOL_UPDATE, companySymbolUpdateAction); } - /** - * {@link CompanySymbolController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_CompanySymbols.
- * Входной запрос /clearing-member-categories/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE CompanySymbols companySymbols = new CompanySymbols(); companySymbols.setCompanyId(1000L); companySymbols.setCompanySymbol("Symbol"); companySymbols.setCompanySymbolValue("SymbolValue"); companySymbols.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_CompanySymbols, companySymbols, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ContactControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ContactControllerTest.java index 50a013101..0b509a678 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ContactControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ContactControllerTest.java @@ -21,80 +21,39 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class ContactControllerTest extends AbstractControllerTest { private static final String REST_URL = "/contacts/"; - /** - * {@link CompanySymbolController#update(Long, CompanySymbolUpdateAction)}
- * Тест проверяет получение сущности {@link CompanySymbolUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link CompanySymbolUpdateAction}:
- * {@link CompanySymbolUpdateAction#companyId} - 1000L
- * {@link CompanySymbolUpdateAction#companySymbol} - Symbol
- * {@link CompanySymbolUpdateAction#companySymbolValue} - SymbolValue
- * {@link CompanySymbolUpdateAction#id} - currentId
- */ -// @Test валидации пока нет void addWithException() { assertThrowsFor(getClearingMemberCategoryNewAction("Category", null)); assertThrowsFor(getClearingMemberCategoryNewAction("", 0L)); } - /** - * {@link ContactController#create(Long, ContactNewAction)}
- * Тест проверяет получение сущности {@link ContactNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ContactNewAction}:
- * {@link ContactNewAction#contactType} - ContactType
- * {@link ContactNewAction#contactValue} - ContactValue
- * {@link ContactNewAction#id} - currentId
- */ @Test void create() throws Exception { - //ARRANGE ContactNewAction companySymbolNewAction = new ContactNewAction(); companySymbolNewAction.setContactType("ContactType"); companySymbolNewAction.setContactValue("ContactValue"); companySymbolNewAction.setCompanyId(currentId.get()); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, companySymbolNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_CONTACT_NEW, companySymbolNewAction); } - /** - * {@link ContactController#update(Long, ContactUpdateAction)}
- * Тест проверяет получение сущности {@link ContactUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ContactUpdateAction}:
- * {@link ContactUpdateAction#contactType} - ContactType
- * {@link ContactUpdateAction#contactValue} - ContactValue
- * {@link ContactUpdateAction#id} - currentId
- */ @Test void update() throws Exception { - //ARRANGE ContactUpdateAction companySymbolUpdateAction = new ContactUpdateAction(); companySymbolUpdateAction.setContactType("ContactType"); companySymbolUpdateAction.setContactValue("ContactValue"); companySymbolUpdateAction.setId(currentId.get()); - - //ACT and ASSERT checkUpdatingByRestApi(REST_URL, companySymbolUpdateAction, companySymbolUpdateAction.getId()); checkSendedMessegeFromKafka(Consts.DESTINATION_CONTACT_UPDATE, companySymbolUpdateAction); } - /** - * {@link ContactController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_Contact.
- * Входной запрос /contacts/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Contact companySymbolUpdateAction = new Contact(); companySymbolUpdateAction.setCompanyId(1000L); companySymbolUpdateAction.setContactType("ContactType"); companySymbolUpdateAction.setContactValue("ContactValue"); companySymbolUpdateAction.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Contact, companySymbolUpdateAction, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentControllerTest.java index d8023e9a8..bd115b488 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/ProfileDocumentControllerTest.java @@ -10,15 +10,8 @@ import java.time.LocalDate; class ProfileDocumentControllerTest extends AbstractControllerTest { private static final String REST_URL = "/profile-documents/"; - /** - * {@link ProfileDocumentController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_ProfileDocument.
- * Входной запрос /profile-documents/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ProfileDocument profileDocument = new ProfileDocument(); profileDocument.setCompanyId(1000L); profileDocument.setDocumentType("DocumentType"); @@ -33,8 +26,6 @@ class ProfileDocumentControllerTest extends AbstractControllerTest { profileDocument.setValidToDate(LocalDate.now()); profileDocument.setLink("Link"); profileDocument.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ProfileDocument, profileDocument, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java index e2f06a22c..4e1bd7532 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/company/RelationControllerTest.java @@ -19,15 +19,8 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class RelationControllerTest extends AbstractControllerTest { private static final String REST_URL = "/relations/"; - /** - * {@link RelationController#update(Long, RelationUpdateAction)}
- * Тест проверяет получение сущности {@link RelationUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос: id, {@link RelationUpdateAction}:
- *
- */ @Test void update() throws Exception { - //ARRANGE Long existsId = 123L; RelationUpdateAction relationUpdateAction = new RelationUpdateAction(); relationUpdateAction.setId(existsId); @@ -36,22 +29,13 @@ class RelationControllerTest extends AbstractControllerTest { Relation relation = new Relation(); relation.setId(existsId); - - //ACT and ASSERT checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_Relation, relation, - REST_URL, relationUpdateAction, existsId); + REST_URL, relationUpdateAction, existsId); checkSendedMessegeFromKafka(Consts.DESTINATION_RELATION_UPDATE, relationUpdateAction); } - /** - * {@link RelationController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
- * Входной запрос /relations/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Long existsId = 123L; BankAccount existBankAccount = new BankAccount(); existBankAccount.setBankName("ooo tinkoff"); @@ -66,8 +50,6 @@ class RelationControllerTest extends AbstractControllerTest { Relation relation = new Relation(); relation.setId(existsId); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Relation, relation, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionDepositControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionDepositControllerTest.java index c6786f993..67c092b71 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionDepositControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionDepositControllerTest.java @@ -12,15 +12,8 @@ import java.time.LocalDate; class ExecutionDepositControllerTest extends AbstractControllerTest { private static final String REST_URL = "/execution-deposits/"; - /** - * {@link ExecutionDepositController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /execution-deposits/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ExecutionDeposit executionDeposit = new ExecutionDeposit(); executionDeposit.setId(currentId.get()); executionDeposit.setExchangeExecutionId(currentId.get()); @@ -52,8 +45,6 @@ class ExecutionDepositControllerTest extends AbstractControllerTest { executionDeposit.setCoverageStatus("cov"); executionDeposit.setSessionId(currentId.get()); executionDeposit.setClearingDate(LocalDate.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ExecutionDeposit, executionDeposit, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionFondControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionFondControllerTest.java index 9bb6803ad..f0dfa6b04 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionFondControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/execution/ExecutionFondControllerTest.java @@ -12,15 +12,8 @@ import java.time.LocalDate; class ExecutionFondControllerTest extends AbstractControllerTest { private static final String REST_URL = "/execution-fonds/"; - /** - * {@link ExecutionFondController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /execution-fonds/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ExecutionFond executionFond = new ExecutionFond(); executionFond.setId(currentId.get()); executionFond.setExchangeExecutionId(currentId.get()); @@ -50,8 +43,6 @@ class ExecutionFondControllerTest extends AbstractControllerTest { executionFond.setSettlementCode("settl1"); executionFond.setSettlementDate(LocalDate.now()); executionFond.setExchangeExecutionMicroseconds(Instant.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ExecutionFond, executionFond, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/InDocumentJournalControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/InDocumentJournalControllerTest.java index e87550cdb..a7526169b 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/InDocumentJournalControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/InDocumentJournalControllerTest.java @@ -12,15 +12,8 @@ import java.time.LocalTime; class InDocumentJournalControllerTest extends AbstractControllerTest { private static final String REST_URL = "/in-document-journals/"; - /** - * {@link InDocumentJournalController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /in-document-journals/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE InDocumentJournal inDocumentJournal = new InDocumentJournal(); inDocumentJournal.setId(currentId.get()); inDocumentJournal.setComment("Comment"); @@ -37,8 +30,6 @@ class InDocumentJournalControllerTest extends AbstractControllerTest { inDocumentJournal.setQuantity(0L); inDocumentJournal.setClearingCode("dosser"); inDocumentJournal.setEmailDate(LocalDate.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_InDocumentJournal, inDocumentJournal, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/ManagementJournalControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/ManagementJournalControllerTest.java index 5cc60ae6a..6ef765d8b 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/ManagementJournalControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/ManagementJournalControllerTest.java @@ -10,15 +10,8 @@ import java.time.Instant; class ManagementJournalControllerTest extends AbstractControllerTest { private static final String REST_URL = "/management-journals/"; - /** - * {@link ManagementJournalController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /management-journals/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ManagementJournal managementJournal = new ManagementJournal(); managementJournal.setId(currentId.get()); managementJournal.setCompanyId(currentId.get()); @@ -30,8 +23,6 @@ class ManagementJournalControllerTest extends AbstractControllerTest { managementJournal.setChangeAccessSign("send"); managementJournal.setChangeDataSign("dos"); managementJournal.setEventDate(Instant.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ManagementJournal, managementJournal, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/OutDocumentJournalControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/OutDocumentJournalControllerTest.java index 09cc8f804..93576034e 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/OutDocumentJournalControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/journal/OutDocumentJournalControllerTest.java @@ -12,15 +12,8 @@ import java.time.LocalTime; class OutDocumentJournalControllerTest extends AbstractControllerTest { private static final String REST_URL = "/out-document-journals/"; - /** - * {@link OutDocumentJournalController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /out-document-journals/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE OutDocumentJournal outDocumentJournal = new OutDocumentJournal(); outDocumentJournal.setId(currentId.get()); outDocumentJournal.setRegistrationDate(LocalDate.now()); @@ -36,8 +29,6 @@ class OutDocumentJournalControllerTest extends AbstractControllerTest { outDocumentJournal.setDossierNumber("doc"); outDocumentJournal.setPostDate(LocalDate.now()); outDocumentJournal.setResultStatus("res"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_OutDocumentJournal, outDocumentJournal, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/CurrencyControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/CurrencyControllerTest.java index fd876184e..35440545f 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/CurrencyControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/CurrencyControllerTest.java @@ -8,21 +8,12 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class CurrencyControllerTest extends AbstractControllerTest { private static final String REST_URL = "/currencies/"; - /** - * {@link CurrencyController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /currencies/
- * Ответ CurrencyController
- */ @Test void getAll() throws Exception { - //ARRANGE Currency currency = new Currency(); currency.setId(currentId.get()); currency.setCountryCode("acc"); currency.setCurrencyCode("acc"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Currency, currency, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ErrorTextControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ErrorTextControllerTest.java index b03a31521..016259160 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ErrorTextControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ErrorTextControllerTest.java @@ -10,15 +10,8 @@ import java.time.LocalDate; class ErrorTextControllerTest extends AbstractControllerTest { private static final String REST_URL = "/error-texts/"; - /** - * {@link ErrorTextController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /error-texts/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ErrorText errorText = new ErrorText(); errorText.setId(currentId.get()); errorText.setText("text"); diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingControllerTest.java index b3e1cfec8..3403051a3 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/ListingControllerTest.java @@ -10,15 +10,8 @@ import java.math.BigDecimal; class ListingControllerTest extends AbstractControllerTest { private static final String REST_URL = "/listings/"; - /** - * {@link ListingController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /listings/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Listing liabilitiesClaimsAssets = new Listing(); liabilitiesClaimsAssets.setId(currentId.get()); liabilitiesClaimsAssets.setSecurityId(currentId.get()); @@ -28,8 +21,6 @@ class ListingControllerTest extends AbstractControllerTest { liabilitiesClaimsAssets.setSymbolName("res"); liabilitiesClaimsAssets.setTradingCurrency("trad"); liabilitiesClaimsAssets.setWorkflowStatus("work"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Listing, liabilitiesClaimsAssets, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/MarketControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/MarketControllerTest.java index f1b7d69c0..bcae390de 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/MarketControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/MarketControllerTest.java @@ -8,15 +8,8 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class MarketControllerTest extends AbstractControllerTest { private static final String REST_URL = "/markets/"; - /** - * {@link MarketController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /markets/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Market liabilitiesClaimsAssets = new Market(); liabilitiesClaimsAssets.setId(currentId.get()); liabilitiesClaimsAssets.setDescription("des"); @@ -25,8 +18,6 @@ class MarketControllerTest extends AbstractControllerTest { liabilitiesClaimsAssets.setCode("man"); liabilitiesClaimsAssets.setSettlementCurrency("res"); liabilitiesClaimsAssets.setSection("sec"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Market, liabilitiesClaimsAssets, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/NotificationControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/NotificationControllerTest.java index cd026029e..9c27b6b01 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/NotificationControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/NotificationControllerTest.java @@ -22,15 +22,8 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class NotificationControllerTest extends AbstractControllerTest { private static final String REST_URL = "/notifications/"; - /** - * {@link NotificationController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_Notification.
- * Входной запрос /notifications/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Notification profileDocument = new Notification(); profileDocument.setClearingDate(LocalDate.now()); profileDocument.setSenderId(1000L); @@ -47,13 +40,11 @@ class NotificationControllerTest extends AbstractControllerTest { Collection> all = responseFactory.responseFromObjectCollection(values); CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(REST_URL) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java index 1a191561e..dff1f9ee7 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SCrossRateControllerTest.java @@ -12,15 +12,8 @@ import java.time.LocalDate; class SCrossRateControllerTest extends AbstractControllerTest { private static final String REST_URL = "/cross-rate/"; - /** - * {@link SCrossRateController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /cross-rate/
- * Ответ SCrossRate
- */ @Test void getAll() throws Exception { - //ARRANGE SCrossRate sCrossRate = new SCrossRate(); sCrossRate.setId(currentId.get()); sCrossRate.setDate(LocalDate.now()); @@ -33,8 +26,6 @@ class SCrossRateControllerTest extends AbstractControllerTest { sCrossRate.setGenerationId(10L); sCrossRate.setCreated(Instant.now()); sCrossRate.setUpdated(sCrossRate.getCreated()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_SCrossRate, sCrossRate, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SessionControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SessionControllerTest.java index 578af6a9e..8bc9da857 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SessionControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/misc/SessionControllerTest.java @@ -21,15 +21,8 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class SessionControllerTest extends AbstractControllerTest { private static final String REST_URL = "/sessions/"; - /** - * {@link SessionController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_Session.
- * Входной запрос /sessions/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Session session = new Session(); session.setClearingDate(LocalDate.now()); session.setSessionStatus("Ok"); @@ -42,13 +35,11 @@ class SessionControllerTest extends AbstractControllerTest { Collection> all = responseFactory.responseFromObjectCollection(values); CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(REST_URL) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/payment/PaymentInstructionControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/payment/PaymentInstructionControllerTest.java index 80cdd1ad8..31988bf27 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/payment/PaymentInstructionControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/payment/PaymentInstructionControllerTest.java @@ -25,15 +25,8 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class PaymentInstructionControllerTest extends AbstractControllerTest { private static final String REST_URL = "/payment-instructions/"; - /** - * {@link PaymentInstructionController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_PaymentInstruction.
- * Входной запрос /paymentInstructions/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE PaymentInstruction paymentInstruction = new PaymentInstruction(); paymentInstruction.setSenderId(1010L); @@ -72,19 +65,16 @@ class PaymentInstructionControllerTest extends AbstractControllerTest { Collection> all = responseFactory.responseFromObjectCollection(values); CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(REST_URL) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } @Test void clearingOutboundAction() throws Exception { - //ARRANGE PIClearingOutbondActionNew piClearingOutbondActionNew = new PIClearingOutbondActionNew(); piClearingOutbondActionNew.setSenderId(111L); piClearingOutbondActionNew.setAddresseeId(222L); @@ -92,7 +82,6 @@ class PaymentInstructionControllerTest extends AbstractControllerTest { piClearingOutbondActionNew.setCreditLeg_amount(BigDecimal.valueOf(120.99)); piClearingOutbondActionNew.setCreditLeg_accountId(333L); piClearingOutbondActionNew.setDebitLeg_accountId(335L); - //ACT and ASSERT checkAddingByRestApi("/payment-instructions/clearing-outbound/", piClearingOutbondActionNew); checkSendedMessegeFromKafka(Consts.PAYMENT_INSTRUCTION_CLEARING_OUTBOUND_ACTION, piClearingOutbondActionNew); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/AdmittedLiabilitiesRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/AdmittedLiabilitiesRegisterControllerTest.java index 62e5ab035..b272cab71 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/AdmittedLiabilitiesRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/AdmittedLiabilitiesRegisterControllerTest.java @@ -11,15 +11,8 @@ import java.time.LocalDate; class AdmittedLiabilitiesRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/admitted-liabilities-registers/"; - /** - * {@link AdmittedLiabilitiesRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /admitted-liabilities-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE AdmittedLiabilitiesRegister admittedLiabilitiesRegister = new AdmittedLiabilitiesRegister(); admittedLiabilitiesRegister.setId(currentId.get()); admittedLiabilitiesRegister.setCompanyFullName("fuill nme"); @@ -31,8 +24,6 @@ class AdmittedLiabilitiesRegisterControllerTest extends AbstractControllerTest { admittedLiabilitiesRegister.setAccount("ACC1"); admittedLiabilitiesRegister.setAmount(BigDecimal.valueOf(12.15)); admittedLiabilitiesRegister.setClearingDate(LocalDate.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_AdmittedLiabilitiesRegister, admittedLiabilitiesRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ContractRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ContractRegisterControllerTest.java index 259f0dcfb..edf4c942e 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ContractRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ContractRegisterControllerTest.java @@ -10,15 +10,8 @@ import java.time.LocalDate; class ContractRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/contract-registers/"; - /** - * {@link ContractRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /contract-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ContractRegister contractRegister = new ContractRegister(); contractRegister.setId(currentId.get()); contractRegister.setName("code"); @@ -35,8 +28,6 @@ class ContractRegisterControllerTest extends AbstractControllerTest { contractRegister.setValidToDate(LocalDate.now()); contractRegister.setCloseDate(LocalDate.now()); contractRegister.setComment("ocpo"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ContractRegister, contractRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/CoveredLiabilitiesRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/CoveredLiabilitiesRegisterControllerTest.java index 42b5b7906..37abf21f0 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/CoveredLiabilitiesRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/CoveredLiabilitiesRegisterControllerTest.java @@ -11,15 +11,8 @@ import java.time.LocalDate; class CoveredLiabilitiesRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/covered-liabilities-registers/"; - /** - * {@link CoveredLiabilitiesRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /covered-liabilities-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE CoveredLiabilitiesRegister coveredLiabilitiesRegister = new CoveredLiabilitiesRegister(); coveredLiabilitiesRegister.setId(currentId.get()); coveredLiabilitiesRegister.setCompanyFullName("fuill nme"); @@ -31,8 +24,6 @@ class CoveredLiabilitiesRegisterControllerTest extends AbstractControllerTest { coveredLiabilitiesRegister.setAccount("ACC1"); coveredLiabilitiesRegister.setAmount(BigDecimal.valueOf(12.15)); coveredLiabilitiesRegister.setClearingDate(LocalDate.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_CoveredLiabilitiesRegister, coveredLiabilitiesRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoBalanceRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoBalanceRegisterControllerTest.java index e0991d5d1..39168de37 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoBalanceRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoBalanceRegisterControllerTest.java @@ -8,23 +8,14 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class DepoBalanceRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/depo-balance-registers/"; - /** - * {@link DepoBalanceRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /depo-balance-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE DepoBalanceRegister depoBalanceRegister = new DepoBalanceRegister(); depoBalanceRegister.setId(currentId.get()); depoBalanceRegister.setSessionId(111L); depoBalanceRegister.setSecuritySymbol("RUB"); depoBalanceRegister.setCompanyId(222L); depoBalanceRegister.setDepoCode("DCDE"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_DepoBalanceRegister, depoBalanceRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoPaymentInstructionRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoPaymentInstructionRegisterControllerTest.java index e3d54a241..7d38be3d8 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoPaymentInstructionRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/DepoPaymentInstructionRegisterControllerTest.java @@ -10,15 +10,8 @@ import java.math.BigDecimal; class DepoPaymentInstructionRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/depo-payment-instruction-registers/"; - /** - * {@link DepoPaymentInstructionRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /depo-payment-instruction-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE DepoPaymentInstructionRegister depoPaymentInstructionRegister = new DepoPaymentInstructionRegister(); depoPaymentInstructionRegister.setId(currentId.get()); depoPaymentInstructionRegister.setCompanyId(currentId.get()); @@ -28,8 +21,6 @@ class DepoPaymentInstructionRegisterControllerTest extends AbstractControllerTes depoPaymentInstructionRegister.setQuantity(BigDecimal.valueOf(12.15)); depoPaymentInstructionRegister.setDirection(currentId.get()); depoPaymentInstructionRegister.setSessionId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_DepoPaymentInstructionRegister, depoPaymentInstructionRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExcludeLiabilitiesRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExcludeLiabilitiesRegisterControllerTest.java index 79b8a16a9..330f518f8 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExcludeLiabilitiesRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExcludeLiabilitiesRegisterControllerTest.java @@ -11,15 +11,8 @@ import java.time.LocalDate; class ExcludeLiabilitiesRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/exclude-liabilities-registers/"; - /** - * {@link ExcludeLiabilitiesRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /exclude-liabilities-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ExcludeLiabilitiesRegister excludeLiabilitiesRegister = new ExcludeLiabilitiesRegister(); excludeLiabilitiesRegister.setId(currentId.get()); excludeLiabilitiesRegister.setSessionId(222L); @@ -35,8 +28,6 @@ class ExcludeLiabilitiesRegisterControllerTest extends AbstractControllerTest { excludeLiabilitiesRegister.setCurrency("Currency"); excludeLiabilitiesRegister.setSumLiabilities(BigDecimal.valueOf(12.15)); excludeLiabilitiesRegister.setSettlementDate(LocalDate.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ExcludeLiabilitiesRegister, excludeLiabilitiesRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExecutionRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExecutionRegisterControllerTest.java index 40623b6e4..d8aa53055 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExecutionRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ExecutionRegisterControllerTest.java @@ -12,15 +12,8 @@ import java.time.LocalDate; class ExecutionRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/execution-registers/"; - /** - * {@link ExecutionRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /execution-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ExecutionRegister executionRegister = new ExecutionRegister(); executionRegister.setId(currentId.get()); executionRegister.setTradingDate(LocalDate.now()); @@ -40,9 +33,6 @@ class ExecutionRegisterControllerTest extends AbstractControllerTest { executionRegister.setAmount(BigDecimal.valueOf(14.55)); executionRegister.setQuantity(BigDecimal.valueOf(0.1)); executionRegister.setClearingDate(LocalDate.now()); - - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ExecutionRegister, executionRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/GatewayResultControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/GatewayResultControllerTest.java index 8838744b6..456e6d7d4 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/GatewayResultControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/GatewayResultControllerTest.java @@ -10,15 +10,8 @@ import java.time.Instant; class GatewayResultControllerTest extends AbstractControllerTest { private static final String REST_URL = "/gateway-result/"; - /** - * {@link GatewayResultController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /gateway-result/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE GatewayResult gatewayResult = new GatewayResult(); gatewayResult.setId(currentId.get()); gatewayResult.setGatewayResultStatus("NACK"); @@ -27,8 +20,6 @@ class GatewayResultControllerTest extends AbstractControllerTest { gatewayResult.setNameRequest("nameReq"); gatewayResult.setRequestId("req-id"); gatewayResult.setCreated(Instant.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_GatewayResult, gatewayResult, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/LiabilitiesRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/LiabilitiesRegisterControllerTest.java index 7b0edaa3d..a1cf6ca2d 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/LiabilitiesRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/LiabilitiesRegisterControllerTest.java @@ -11,15 +11,8 @@ import java.time.LocalDate; class LiabilitiesRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/liabilities-registers/"; - /** - * {@link LiabilitiesRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /liabilities-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE LiabilitiesRegister liabilitiesRegister = new LiabilitiesRegister(); liabilitiesRegister.setId(currentId.get()); liabilitiesRegister.setSessionId(111L); @@ -35,9 +28,6 @@ class LiabilitiesRegisterControllerTest extends AbstractControllerTest { liabilitiesRegister.setCurrency("RUB"); liabilitiesRegister.setSumLiabilities(BigDecimal.TEN); liabilitiesRegister.setSettlementDate(LocalDate.now()); - - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_LiabilitiesRegister, liabilitiesRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/MoneyBalanceRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/MoneyBalanceRegisterControllerTest.java index 680a08424..00f50eea2 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/MoneyBalanceRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/MoneyBalanceRegisterControllerTest.java @@ -10,15 +10,8 @@ import java.math.BigDecimal; class MoneyBalanceRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/money-balance-registers/"; - /** - * {@link MoneyBalanceRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /money-balance-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE MoneyBalanceRegister moneyBalanceRegister = new MoneyBalanceRegister(); moneyBalanceRegister.setId(currentId.get()); moneyBalanceRegister.setSetHouseName("setHouseName"); @@ -31,9 +24,6 @@ class MoneyBalanceRegisterControllerTest extends AbstractControllerTest { moneyBalanceRegister.setSessionId(456L); moneyBalanceRegister.setCompanyFullName("companyFullName"); moneyBalanceRegister.setCompanyId(currentId.get()); - - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_MoneyBalanceRegister, moneyBalanceRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/PairSdfControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/PairSdfControllerTest.java index 8fb23ed8c..261ff2482 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/PairSdfControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/PairSdfControllerTest.java @@ -10,15 +10,8 @@ import java.time.Instant; class PairSdfControllerTest extends AbstractControllerTest { private static final String REST_URL = "/pair-sdf/"; - /** - * {@link PairSdfController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /pair-sdf/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE PairSdf pairSdf = new PairSdf(); pairSdf.setId(currentId.get()); pairSdf.setCreated(Instant.now()); @@ -27,8 +20,6 @@ class PairSdfControllerTest extends AbstractControllerTest { pairSdf.setInSDfId("in-id"); pairSdf.setOutSDf("out-sdf"); pairSdf.setOutSDfId("out-id"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_PairSdf, pairSdf, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryControllerTest.java index a6b7843df..df74dc156 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/RegistryControllerTest.java @@ -17,15 +17,8 @@ import static org.junit.jupiter.api.Assertions.*; class RegistryControllerTest extends AbstractControllerTest { private static final String REST_URL = "/registries/"; - /** - * {@link RegistryController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /registries/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Registry registry = new Registry(); registry.setId(currentId.get()); registry.setCompanyId(currentId.get()); @@ -71,20 +64,16 @@ class RegistryControllerTest extends AbstractControllerTest { registry.setGroupId(currentId.get()); registry.setSessionId(currentId.get()); registry.setSessionType("CLR1"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Registry, registry, REST_URL); } @Test void splitDepositAction() throws Exception { - //ARRANGE - RSplitDepositActionNew rSplitDepositActionNew=new RSplitDepositActionNew(); + RSplitDepositActionNew rSplitDepositActionNew = new RSplitDepositActionNew(); rSplitDepositActionNew.setComment("comment"); rSplitDepositActionNew.setContract("CONTRACT-1"); rSplitDepositActionNew.setRefundDate(LocalDate.now()); rSplitDepositActionNew.setOutboundAmount(BigDecimal.ONE); - //ACT and ASSERT checkAddingByRestApi("/registries/splitDeposit/", rSplitDepositActionNew); checkSendedMessegeFromKafka(Consts.REGISTRY_SPLIT_DEPOSIT_ACTION, rSplitDepositActionNew); diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ReportRegisterControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ReportRegisterControllerTest.java index 69ea99f86..5eee0e911 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ReportRegisterControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/register/ReportRegisterControllerTest.java @@ -10,15 +10,8 @@ import java.time.LocalDate; class ReportRegisterControllerTest extends AbstractControllerTest { private static final String REST_URL = "/report-registers/"; - /** - * {@link ReportRegisterController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /report-registers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ReportRegister reportRegister = new ReportRegister(); reportRegister.setId(currentId.get()); reportRegister.setCompanyFullName("code"); @@ -28,8 +21,6 @@ class ReportRegisterControllerTest extends AbstractControllerTest { reportRegister.setName("cat"); reportRegister.setQuantity(currentId.get()); reportRegister.setClearingDate(LocalDate.now()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ReportRegister, reportRegister, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryControllerTest.java index 959b5ae21..1f4529035 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryControllerTest.java @@ -27,88 +27,43 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class TradingClearingRegistryControllerTest extends AbstractControllerTest { private static final String REST_URL = "/trading-clearing-registries/"; - /** - * {@link TradingClearingRegistryController#add(TradingClearingRegistryNewAction)}
- * Тест проверяет получение сущности {@link TradingClearingRegistryNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link TradingClearingRegistryNewRequest}:
- * {@link TradingClearingRegistryNewRequest#companyId} - 1234567890
- * {@link TradingClearingRegistryNewRequest#moneyAccountId} - 18415056336414057
- * {@link TradingClearingRegistryNewRequest#depoAccountId} - 21239757374450030
- * {@link TradingClearingRegistryNewRequest#status} - ACTV
- */ @Test void add() throws Exception { - //ARRANGE TradingClearingRegistryNewAction tradingClearingRegistryNewAction = getTradingClearingRegistryNewAction( - 0, - 1234567890L, 18415056336414057L, 21239757374450030L, "ACTV" + 0, + 1234567890L, 18415056336414057L, 21239757374450030L, "ACTV" ); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, tradingClearingRegistryNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_NEW, tradingClearingRegistryNewAction); } - /** - * {@link TradingClearingRegistryController#add(TradingClearingRegistryNewAction)}
- * Тест проверяет работу валидации сущности {@link TradingClearingRegistryNewAction} принятой по REST API для отправку в Apache Kafka.
- * Входной запрос {@link TradingClearingRegistryNewRequest}:
- * {@link TradingClearingRegistryNewRequest#companyId} - 1234567890 / null
- * {@link TradingClearingRegistryNewRequest#moneyAccountId} - 18415056336414057 / null
- * {@link TradingClearingRegistryNewRequest#depoAccountId} - 21239757374450030
- * {@link TradingClearingRegistryNewRequest#status} - ACTV
- */ @Test void addWithException() { assertThrowsForNew(getTradingClearingRegistryNewAction(0, null, 18415056336414057L, 21239757374450030L, "ACTV")); assertThrowsForNew(getTradingClearingRegistryNewAction(0, 1234567890L, null, 21239757374450030L, "ACTV")); } - /** - * {@link TradingClearingRegistryController#update(Long, TradingClearingRegistryUpdateAction)}
- * Тест проверяет получение сущности {@link TradingClearingRegistryUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link TradingClearingRegistryUpdateAction}:
- * {@link TradingClearingRegistryUpdateAction#id} - generated
- * {@link TradingClearingRegistryUpdateAction#code} - ACTV
- */ @Test void update() throws Exception { - //ARRANGE long id = 0; TradingClearingRegistryUpdateAction tradingClearingRegistryUpdateAction = getTradingClearingRegistryUpdateAction( - id, "ACTV" + id, "ACTV" ); - - //ACT and ASSERT checkUpdatingByRestApi(REST_URL, tradingClearingRegistryUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE, tradingClearingRegistryUpdateAction); } - /** - * {@link TradingClearingRegistryController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /trading-clearing-registries/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK, deleteAction); } - /** - * {@link TradingClearingRegistryController#getById(Long)}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_TradingClearingRegistry.
- * Входной запрос /trading-clearing-registries/{@link Long}: - 0L
- * Ответ BankAccountBackendGetById
- */ @Test void getById() throws Exception { - //ARRANGE TradingClearingRegistry existTradingClearingRegistry = new TradingClearingRegistry(); existTradingClearingRegistry.setCompanyId(365L); existTradingClearingRegistry.setCode("99999"); @@ -137,25 +92,16 @@ class TradingClearingRegistryControllerTest extends AbstractControllerTest { payload.setCreatedAt(existTradingClearingRegistry.getCreated()); payload.setUpdatedAt(existTradingClearingRegistry.getUpdated()); expected.setPayload(payload); - //ACT perform(MockMvcRequestBuilders.get(REST_URL + existTradingClearingRegistry.getId()) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response -// ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } - /** - * {@link TradingClearingRegistryController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
- * Входной запрос /trading-clearing-registries/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE TradingClearingRegistry existTradingClearingRegistry = new TradingClearingRegistry(); existTradingClearingRegistry.setCompanyId(365L); existTradingClearingRegistry.setCode("99999"); @@ -166,8 +112,6 @@ class TradingClearingRegistryControllerTest extends AbstractControllerTest { existTradingClearingRegistry.setTradingClearingRegistryPurpose("848484848484"); existTradingClearingRegistry.setStatus("ACTV"); existTradingClearingRegistry.setId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_TradingClearingRegistry, existTradingClearingRegistry, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/ClearingCalendarControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/ClearingCalendarControllerTest.java index 6551d649c..35659532a 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/ClearingCalendarControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/ClearingCalendarControllerTest.java @@ -14,76 +14,43 @@ import java.time.LocalDate; class ClearingCalendarControllerTest extends AbstractControllerTest { private static final String REST_URL = "/schedule/clearing-calendars/"; - /** - * {@link ClearingCalendarController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /schedule/clearing-calendars/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE ClearingCalendar clearingCalendar = new ClearingCalendar(); clearingCalendar.setId(currentId.get()); clearingCalendar.setCompanyId(currentId.get()); clearingCalendar.setClearingDate(LocalDate.now()); clearingCalendar.setDayStatus("status"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_ClearingCalendar, clearingCalendar, REST_URL); } - /** - * {@link ClearingCalendarController#add(ClearingCalendarNewAction)}
- * Тест проверяет получение сущности {@link ClearingCalendarNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ClearingCalendarNewAction}:
- */ @Test void add() throws Exception { - //ARRANGE ClearingCalendarNewAction clearingCalendarNewAction = new ClearingCalendarNewAction(); clearingCalendarNewAction.setCompanyId(currentId.get()); clearingCalendarNewAction.setClearingDate(LocalDate.now()); clearingCalendarNewAction.setDayStatus("status"); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, clearingCalendarNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_CLEARING_CALENDAR_NEW, clearingCalendarNewAction); } - /** - * {@link ClearingCalendarController#update(Long, ClearingCalendarUpdateAction)}
- * Тест проверяет получение сущности {@link ClearingCalendarUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link ClearingCalendarUpdateAction}:
- */ @Test void update() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); ClearingCalendarUpdateAction clearingCalendarUpdateAction = new ClearingCalendarUpdateAction(); clearingCalendarUpdateAction.setId(id); clearingCalendarUpdateAction.setCompanyId(currentId.get()); clearingCalendarUpdateAction.setClearingDate(LocalDate.now()); clearingCalendarUpdateAction.setDayStatus("status"); - - //ACT and ASSERT checkUpdatingByRestApi(REST_URL, clearingCalendarUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_CLEARING_CALENDAR_UPDATE, clearingCalendarUpdateAction); } - /** - * {@link ClearingCalendarController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /schedule/clearing-calendars/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_CLEARING_CALENDAR_DELETE, deleteAction); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java index dad895ccd..a93d5ab27 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/LauncherControllerTest.java @@ -38,15 +38,8 @@ class LauncherControllerTest extends AbstractControllerTest { private static final String START_OF_CLEARING = Task.startOfClearing.getKey(); private static final long ID = 0; - /** - * {@link LauncherController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_TaskRunner.
- * Входной запрос /task-runners/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Launcher taskRunner = new Launcher(); taskRunner.setTask("Task"); taskRunner.setSenderId(10210L); @@ -59,23 +52,16 @@ class LauncherControllerTest extends AbstractControllerTest { Collection> all = responseFactory.responseFromObjectCollection(values); CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(REST_URL) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } - /** - * {@link LauncherController#add(String)}
- * Тест проверяет получение сущности {@link LauncherController} по REST API и отправку в Apache Kafka.
- */ @Test void add() throws Exception { - //ARRANGE TaskDictionary taskDictionary = new TaskDictionary(); taskDictionary.setCode(CODE); taskDictionary.setId(ID); @@ -92,25 +78,17 @@ class LauncherControllerTest extends AbstractControllerTest { expected.setPayload(new QueueSuccessResponse(ActionType.NEW, currentId.getAndIncrement())); setUserNameInMockSecurityContextAndMapUser(CODE, ID); - - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.post(REST_URL + CODE)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) -// .andExpect(content().json(writeValue(expected))); - .andReturn(); + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); expected.setPayload(new QueueSuccessResponse(ActionType.NEW, cudResponseTest.getPayload().getId())); CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); checkSendedMessegeFromKafka(Consts.LAUNCHER_NEW, launcherCommand); } - /** - * {@link LauncherController#add(String)}
- * Тест проверяет работу валидации {@link LauncherController}
- */ @Test void addWithException() throws Exception { BasicSpcexResponse response = new BasicSpcexResponse(); @@ -118,23 +96,16 @@ class LauncherControllerTest extends AbstractControllerTest { EnumMessage message = ex.getError(); response.setCode(message.getSubject().getId()); response.setMessage(errorResolver.resolve(message)); - //ACT perform(MockMvcRequestBuilders.post(REST_URL + null) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isNotFound()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(response))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isNotFound()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(response))); } - /** - * {@link LauncherController#addSpecific}
- * Тест проверяет получение сущности {@link LauncherController} по REST API и отправку в Apache Kafka.
- */ @Test void addSpecific() throws Exception { - //ARRANGE LauncherNew launcherCommand = new LauncherNew(); launcherCommand.setTask(START_OF_CLEARING); launcherCommand.setUserId(ID); @@ -153,27 +124,19 @@ class LauncherControllerTest extends AbstractControllerTest { expected.setPayload(new QueueSuccessResponse(ActionType.NEW, currentId.getAndIncrement())); setUserNameInMockSecurityContextAndMapUser(START_OF_CLEARING, ID); - - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.post(REST_URL + "specific") - .contentType(MediaType.APPLICATION_JSON) - .content(writeValue(launcherCommand))) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) -// .andExpect(content().json(writeValue(expected))); - .andReturn(); + .contentType(MediaType.APPLICATION_JSON) + .content(writeValue(launcherCommand))) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); expected.setPayload(new QueueSuccessResponse(ActionType.NEW, cudResponseTest.getPayload().getId())); CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); checkSendedMessegeFromKafka(Consts.LAUNCHER_NEW, launcherCommand); } - /** - * {@link LauncherController#addSpecific}
- * Тест проверяет работу валидации {@link LauncherController}
- */ @Test void addSpecificWithException() throws Exception { LauncherNew launcherCommand = new LauncherNew(); @@ -184,25 +147,22 @@ class LauncherControllerTest extends AbstractControllerTest { EnumMessage message = ex.getError(); response.setCode(message.getSubject().getId()); response.setMessage(errorResolver.resolve(message)); - //ACT perform(MockMvcRequestBuilders.post(REST_URL + "specific") - .contentType(MediaType.APPLICATION_JSON) - .content(writeValue(launcherCommand))) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isNotFound()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(response))); + .contentType(MediaType.APPLICATION_JSON) + .content(writeValue(launcherCommand))) + .andDo(print()) + .andExpect(status().isNotFound()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(response))); launcherCommand.setTask("null"); perform(MockMvcRequestBuilders.post(REST_URL + "specific") - .contentType(MediaType.APPLICATION_JSON) - .content(writeValue(launcherCommand))) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isNotFound()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(response))); + .contentType(MediaType.APPLICATION_JSON) + .content(writeValue(launcherCommand))) + .andDo(print()) + .andExpect(status().isNotFound()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(response))); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerAllTodayControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerAllTodayControllerTest.java index 78553ec70..5a917660e 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerAllTodayControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerAllTodayControllerTest.java @@ -22,15 +22,8 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class PlannerAllTodayControllerTest extends AbstractControllerTest { private static final String REST_URL = "/schedule/planners-all-today/"; - /** - * {@link PlannerAllTodayController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_SchedulerAllToday.
- * Входной запрос /schedule/schedulers-all-today/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE PlannerAllToday schedulerAllToday = new PlannerAllToday(); schedulerAllToday.setTask("Task"); schedulerAllToday.setTaskTime(LocalTime.now()); @@ -49,13 +42,11 @@ class PlannerAllTodayControllerTest extends AbstractControllerTest { Collection> all = responseFactory.responseFromObjectCollection(values); CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(REST_URL) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerControllerTest.java index 019d5038d..76500fe19 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerControllerTest.java @@ -22,15 +22,8 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class PlannerControllerTest extends AbstractControllerTest { private static final String REST_URL = "/schedule/planners/"; - /** - * {@link PlannerController#getAll()}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_Scheduler.
- * Входной запрос /schedule/schedulers/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Planner scheduler = new Planner(); scheduler.setTask("Task"); scheduler.setTaskTime(LocalTime.now()); @@ -47,13 +40,11 @@ class PlannerControllerTest extends AbstractControllerTest { Collection> all = responseFactory.responseFromObjectCollection(values); CommonGetAllResponse expected = new CommonGetAllResponse(); expected.fromEntity(all); - //ACT perform(MockMvcRequestBuilders.get(REST_URL) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(expected))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(expected))); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerTemplateControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerTemplateControllerTest.java index e5f134d8e..df6071233 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerTemplateControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/scheduler/PlannerTemplateControllerTest.java @@ -14,15 +14,8 @@ import java.time.LocalTime; class PlannerTemplateControllerTest extends AbstractControllerTest { private static final String REST_URL = "/schedule/planner-templates/"; - /** - * {@link PlannerTemplateController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /schedule/planner-templates/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE PlannerTemplate plannerTemplate = new PlannerTemplate(); plannerTemplate.setId(currentId.get()); plannerTemplate.setTask("task"); @@ -30,39 +23,23 @@ class PlannerTemplateControllerTest extends AbstractControllerTest { plannerTemplate.setTaskStatus("status"); plannerTemplate.setCompanyId(currentId.get()); plannerTemplate.setSecurityId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_PlannerTemplate, plannerTemplate, REST_URL); } - /** - * {@link PlannerTemplateController#add(PlannerTemplateNewAction)}
- * Тест проверяет получение сущности {@link PlannerTemplateNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link PlannerTemplateNewAction}:
- */ @Test void add() throws Exception { - //ARRANGE PlannerTemplateNewAction plannerTemplateNewAction = new PlannerTemplateNewAction(); plannerTemplateNewAction.setTask("task"); plannerTemplateNewAction.setTaskTime(LocalTime.now().withNano(0)); plannerTemplateNewAction.setTaskStatus("status"); plannerTemplateNewAction.setCompanyId(currentId.get()); plannerTemplateNewAction.setSecurityId(currentId.get()); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, plannerTemplateNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_PLANNER_TEMPLATE_NEW, plannerTemplateNewAction); } - /** - * {@link PlannerTemplateController#update(Long, PlannerTemplateUpdateAction)}
- * Тест проверяет получение сущности {@link PlannerTemplateUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link PlannerTemplateUpdateAction}:
- */ @Test void update() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); PlannerTemplateUpdateAction plannerTemplateUpdateAction = new PlannerTemplateUpdateAction(); plannerTemplateUpdateAction.setId(id); @@ -71,25 +48,15 @@ class PlannerTemplateControllerTest extends AbstractControllerTest { plannerTemplateUpdateAction.setTaskStatus("status"); plannerTemplateUpdateAction.setCompanyId(currentId.get()); plannerTemplateUpdateAction.setSecurityId(currentId.get()); - - //ACT and ASSERT checkUpdatingByRestApi(REST_URL, plannerTemplateUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_PLANNER_TEMPLATE_UPDATE, plannerTemplateUpdateAction); } - /** - * {@link PlannerTemplateController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /schedule/planner-templates/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); - - //ACT and ASSERT checkDeletingByRestApi(REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_PLANNER_TEMPLATE_DELETE, deleteAction); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CouponPeriodControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CouponPeriodControllerTest.java index d9f307c5b..82b593660 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CouponPeriodControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/CouponPeriodControllerTest.java @@ -11,18 +11,9 @@ import java.time.LocalDate; class CouponPeriodControllerTest extends AbstractControllerTest { public static final String REST_URL = "/securities/coupon-periods/"; - /** - * {@link CouponPeriodController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /securities/coupon-periods/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE CouponPeriod couponPeriod = getCouponPeriod(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_CouponPeriod, couponPeriod, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityControllerTest.java index 8c9c8e52f..2f017c3ed 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/EquitySecurityControllerTest.java @@ -15,14 +15,8 @@ import java.math.BigDecimal; class EquitySecurityControllerTest extends AbstractControllerTest { public static final String REST_URL = "/securities/equity-securities/"; - /** - * {@link EquitySecurityController#add(EquitySecurityNewAction)}
- * Тест проверяет получение сущности {@link EquitySecurityNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link EquitySecurityNewAction}:
- */ @Test void add() throws Exception { - //ARRANGE EquitySecurityNewAction equitySecurityNewAction = new EquitySecurityNewAction(); equitySecurityNewAction.setShareType("shType"); equitySecurityNewAction.setLotSize(BigDecimal.valueOf(120.33)); @@ -32,20 +26,12 @@ class EquitySecurityControllerTest extends AbstractControllerTest { equitySecurityNewAction.setInstrumentType("status T"); equitySecurityNewAction.setSecuritySymbol("symbol1"); equitySecurityNewAction.setLotSize(new BigDecimal("3.5")); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, equitySecurityNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_EQUITY_SECURITY_NEW, equitySecurityNewAction); } - /** - * {@link EquitySecurityController#update(Long, EquitySecurityUpdateAction)}
- * Тест проверяет получение сущности {@link EquitySecurityUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link EquitySecurityUpdateAction}:
- */ @Test void update() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); EquitySecurityUpdateAction equitySecurityUpdateAction = new EquitySecurityUpdateAction(); equitySecurityUpdateAction.setId(id); @@ -58,44 +44,25 @@ class EquitySecurityControllerTest extends AbstractControllerTest { equitySecurityUpdateAction.setSecuritySymbol("symbol1"); equitySecurityUpdateAction.setLotSize(new BigDecimal("3.5")); EquitySecurity equitySecurity = getEquitySecurity(id); - - //ACT and ASSERT checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_EquitySecurity, equitySecurity, - REST_URL, equitySecurityUpdateAction, id); + REST_URL, equitySecurityUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_EQUITY_SECURITY_UPDATE, equitySecurityUpdateAction); } - /** - * {@link EquitySecurityController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /securities/equity-securities/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); EquitySecurity equitySecurity = getEquitySecurity(id); - - //ACT and ASSERT checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, equitySecurity, - REST_URL, id); + REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_EQUITY_SECURITY_DELETE, deleteAction); } - /** - * {@link EquitySecurityController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /securities/equity-securities/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE EquitySecurity equitySecurity = getEquitySecurity(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_EquitySecurity, equitySecurity, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeCashFlowControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeCashFlowControllerTest.java index 31b58b92a..c4a06b73e 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeCashFlowControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeCashFlowControllerTest.java @@ -11,18 +11,9 @@ import java.time.LocalDate; class FixedIncomeCashFlowControllerTest extends AbstractControllerTest { public static final String REST_URL = "/securities/fixed-income-cash-flows/"; - /** - * {@link FixedIncomeCashFlowController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /securities/fixed-income-cash-flows/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE FixedIncomeCashFlow fixedIncomeCashFlow = getFixedIncomeCashFlow(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_FixedIncomeCashFlow, fixedIncomeCashFlow, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityControllerTest.java index c03d5819d..7c81e08f0 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/FixedIncomeSecurityControllerTest.java @@ -15,14 +15,8 @@ import java.math.BigDecimal; class FixedIncomeSecurityControllerTest extends AbstractControllerTest { public static final String REST_URL = "/securities/fixed-income-securities/"; - /** - * {@link FixedIncomeSecurityController#add(FixedIncomeSecurityNewAction)}
- * Тест проверяет получение сущности {@link FixedIncomeSecurityNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link FixedIncomeSecurityNewAction}:
- */ @Test void add() throws Exception { - //ARRANGE FixedIncomeSecurityNewAction fixedIncomeSecurityNewAction = new FixedIncomeSecurityNewAction(); fixedIncomeSecurityNewAction.setBondType("bType"); fixedIncomeSecurityNewAction.setLotSize(BigDecimal.valueOf(120.33)); @@ -32,20 +26,12 @@ class FixedIncomeSecurityControllerTest extends AbstractControllerTest { fixedIncomeSecurityNewAction.setInstrumentType("status T"); fixedIncomeSecurityNewAction.setSecuritySymbol("symbol1"); fixedIncomeSecurityNewAction.setLotSize(new BigDecimal("3.5")); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, fixedIncomeSecurityNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_FIXED_INCOME_SECURITY_NEW, fixedIncomeSecurityNewAction); } - /** - * {@link FixedIncomeSecurityController#update(Long, FixedIncomeSecurityUpdateAction)}
- * Тест проверяет получение сущности {@link FixedIncomeSecurityUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link FixedIncomeSecurityUpdateAction}:
- */ @Test void update() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); FixedIncomeSecurityUpdateAction fixedIncomeSecurityUpdateAction = new FixedIncomeSecurityUpdateAction(); fixedIncomeSecurityUpdateAction.setId(id); @@ -58,44 +44,25 @@ class FixedIncomeSecurityControllerTest extends AbstractControllerTest { fixedIncomeSecurityUpdateAction.setSecuritySymbol("symbol1"); fixedIncomeSecurityUpdateAction.setLotSize(new BigDecimal("3.5")); FixedIncomeSecurity fixedIncomeSecurity = getFixedIncomeSecurity(id); - - //ACT and ASSERT checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurity, - REST_URL, fixedIncomeSecurityUpdateAction, id); + REST_URL, fixedIncomeSecurityUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_FIXED_INCOME_SECURITY_UPDATE, fixedIncomeSecurityUpdateAction); } - /** - * {@link FixedIncomeSecurityController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /securities/fixed-income-securities/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); FixedIncomeSecurity fixedIncomeSecurity = getFixedIncomeSecurity(id); - - //ACT and ASSERT checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, fixedIncomeSecurity, - REST_URL, id); + REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_FIXED_INCOME_SECURITY_DELETE, deleteAction); } - /** - * {@link FixedIncomeSecurityController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /securities/fixed-income-securities/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE FixedIncomeSecurity fixedIncomeSecurity = getFixedIncomeSecurity(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurity, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/MoneyMarketSecurityControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/MoneyMarketSecurityControllerTest.java index f79f0469e..6aadead6c 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/MoneyMarketSecurityControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/MoneyMarketSecurityControllerTest.java @@ -16,14 +16,8 @@ import java.time.LocalDate; class MoneyMarketSecurityControllerTest extends AbstractControllerTest { public static final String REST_URL = "/securities/money-securities/"; - /** - * {@link MoneyMarketSecurityController#add(MoneyMarketSecurityNewAction)}
- * Тест проверяет получение сущности {@link MoneyMarketSecurityNewAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link MoneyMarketSecurityNewAction}:
- */ @Test void add() throws Exception { - //ARRANGE MoneyMarketSecurityNewAction moneyMarketSecurityNewAction = new MoneyMarketSecurityNewAction(); moneyMarketSecurityNewAction.setStartDate(LocalDate.now()); moneyMarketSecurityNewAction.setEndDate(LocalDate.now()); @@ -41,20 +35,12 @@ class MoneyMarketSecurityControllerTest extends AbstractControllerTest { moneyMarketSecurityNewAction.setFullNameEng("Short LLC"); moneyMarketSecurityNewAction.setIsin("ISIN"); moneyMarketSecurityNewAction.setWorkflowStatus("ACTV"); - - //ACT and ASSERT checkAddingByRestApi(REST_URL, moneyMarketSecurityNewAction); checkSendedMessegeFromKafka(Consts.DESTINATION_MONEY_MARKET_SECURITY_NEW, moneyMarketSecurityNewAction); } - /** - * {@link MoneyMarketSecurityController#update(Long, MoneyMarketSecurityUpdateAction)}
- * Тест проверяет получение сущности {@link MoneyMarketSecurityUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link MoneyMarketSecurityUpdateAction}:
- */ @Test void update() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); MoneyMarketSecurityUpdateAction moneyMarketSecurityUpdateAction = new MoneyMarketSecurityUpdateAction(); moneyMarketSecurityUpdateAction.setId(id); @@ -74,44 +60,25 @@ class MoneyMarketSecurityControllerTest extends AbstractControllerTest { moneyMarketSecurityUpdateAction.setIsin("ISIN"); moneyMarketSecurityUpdateAction.setWorkflowStatus("ACTV"); MoneyMarketSecurity moneyMarketSecurity = getMoneyMarketSecurity(id); - - //ACT and ASSERT checkUpdatingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, moneyMarketSecurity, - REST_URL, moneyMarketSecurityUpdateAction, id); + REST_URL, moneyMarketSecurityUpdateAction, id); checkSendedMessegeFromKafka(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, moneyMarketSecurityUpdateAction); } - /** - * {@link MoneyMarketSecurityController#delete(Long)}
- * Тест проверяет получение id сущности {@link Long} по REST API и отправку в Apache Kafka.
- * Входной запрос /securities/money-securities/{@link Long}: - 0L
- */ @Test void delete() throws Exception { - //ARRANGE long id = currentId.getAndIncrement(); CommonDeleteAction deleteAction = new CommonDeleteAction(); deleteAction.setId(id); MoneyMarketSecurity moneyMarketSecurity = getMoneyMarketSecurity(id); - - //ACT and ASSERT checkDeletingWithIdVolidationByRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, moneyMarketSecurity, - REST_URL, id); + REST_URL, id); checkSendedMessegeFromKafka(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, deleteAction); } - /** - * {@link MoneyMarketSecurityController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /securities/money-securities/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE MoneyMarketSecurity moneyMarketSecurity = getMoneyMarketSecurity(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, moneyMarketSecurity, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java index 0af66e804..2ce6507cd 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/securities/SecurityControllerTest.java @@ -8,15 +8,8 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class SecurityControllerTest extends AbstractControllerTest { public static final String REST_URL = "/securities/"; - /** - * {@link SecurityController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /securities/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Security security = new Security(); security.setId(currentId.get()); security.setInstrumentType("name"); @@ -28,8 +21,6 @@ class SecurityControllerTest extends AbstractControllerTest { security.setSecuritySymbol("name"); security.setWorkflowStatus("name"); clearAll(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_MoneyMarketSecurity, security, REST_URL); } } \ No newline at end of file diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java index 015b40266..f87ac2a8a 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserControllerTest.java @@ -23,49 +23,29 @@ import static ru.spcex.clearing.test.json.JsonUtil.readValue; class UserControllerTest extends AbstractControllerTest { public static final String REST_URL = "/users/"; - /** - * {@link UserController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /users/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE User user = getTestUser(currentId.getAndIncrement(), "some name"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_User, user, REST_URL); } - /** - * {@link UserController#getId()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /users/get-my-id/
- * Ответ CommonGetAllResponse
- */ @Test void getId() throws Exception { - //ARRANGE Long id = currentId.getAndIncrement(); String identifier = "usersIdentifier"; setUserNameInMockSecurityContextAndMapUser(identifier, id); - - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.get(REST_URL + "get-my-id")) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andReturn(); + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); UserIdResponse userIdResponse = readValue(mvcResult.getResponse().getContentAsString(), UserIdResponse.class); assertThat(userIdResponse.getPayload().getId()).isEqualTo(id); } @Test void update() throws Exception { - //ARRANGE Long id = currentId.getAndIncrement(); String identifier = "identifier"; diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java index 4c4702db5..f5e5f148b 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/user/UserRoleSessionControllerTest.java @@ -8,23 +8,14 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; class UserRoleSessionControllerTest extends AbstractControllerTest { public static final String REST_URL = "/user-role-sessions/"; - /** - * {@link UserRoleSessionController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /user-role-sessions/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE UserRoleSession userRoleSession = new UserRoleSession(); userRoleSession.setId(currentId.getAndIncrement()); userRoleSession.setUserRole("identifier"); userRoleSession.setStatus("some name"); userRoleSession.setCompanyId(currentId.get()); userRoleSession.setUserId(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_UserRoleSession, userRoleSession, REST_URL); } diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java index 874338a6d..99c328da5 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/StatementControllerTest.java @@ -21,30 +21,14 @@ import static ru.spcex.clearing.test.json.JsonUtil.writeValue; class StatementControllerTest extends AbstractControllerTest { public static final String REST_URL = "/statements/"; - /** - * {@link StatementController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /utilities/key-rates/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE Statement statement = getStatment(currentId.get()); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_Statement, statement, REST_URL); } - /** - * {@link StatementController#getById(Long)}
- * Тест проверяет получение запроса по REST API и отправку всех записей из таблицы hazelcast Map_BankAccount.
- * Входной запрос /statements/{@link Long}: - 0L
- * Ответ BankAccountBackendGetById
- */ @Test void getById() throws Exception { - //ARRANGE Statement existStatement = getStatment(currentId.get()); Imdg serviceTestImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); @@ -53,15 +37,12 @@ class StatementControllerTest extends AbstractControllerTest { CommonGetByIdResponse response = new CommonGetByIdResponse(); Map extractedByMeta = responseFactory.responseFromObject(existStatement); response.fromEntity(extractedByMeta); - - //ACT perform(MockMvcRequestBuilders.get(REST_URL + existStatement.getId()) - .contentType(MediaType.APPLICATION_JSON)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(content().json(writeValue(response))); + .contentType(MediaType.APPLICATION_JSON)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(content().json(writeValue(response))); } private Statement getStatment(Long id) { diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java index a57ace3b2..bafef175b 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/queue/utilities/UserSettingsControllerTest.java @@ -10,40 +10,23 @@ import ru.spcex.clearing.platform.messaging.domain.Consts; class UserSettingsControllerTest extends AbstractControllerTest { public static final String REST_URL = "/utilities/user-settings/"; - /** - * {@link UserSettingsController#getAll()}
- * Тест проверяет получение запроса по REST API.
- * Входной запрос /utilities/user-settings/
- * Ответ CommonGetAllResponse
- */ @Test void getAll() throws Exception { - //ARRANGE UserSettings userSettings = new UserSettings(); userSettings.setId(currentId.get()); - userSettings.setUserId(currentId.get()); // отдаются по userId CLS-64, todo в тесте null + userSettings.setUserId(currentId.get()); userSettings.setJson("json"); userSettings.setVersion("version"); - - //ACT and ASSERT checkGettingAllFromRestApi(IMDGDistributedNames.Map_UserSettings, userSettings, REST_URL); } - /** - * {@link UserSettingsController#update(UserSettingsUpdateAction)}
- * Тест проверяет получение сущности {@link UserSettingsUpdateAction} по REST API и отправку в Apache Kafka.
- * Входной запрос {@link UserSettingsUpdateAction}:
- */ @Test void update() throws Exception { - //ARRANGE long id = currentId.get(); String identifier = "identifierUserSettings"; UserSettingsUpdateAction userSettingsUpdateAction = new UserSettingsUpdateAction(); userSettingsUpdateAction.setUserId(id); userSettingsUpdateAction.setVersion("name"); - - //ACT and ASSERT setUserNameInMockSecurityContextAndMapUser(identifier, id); checkUpdatingWithoutIdByRestApi(REST_URL, userSettingsUpdateAction); userSettingsUpdateAction.json = "null"; diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/response/cud/QueueSuccessResponseTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/response/cud/QueueSuccessResponseTest.java index 41156093c..b590d4dcc 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/response/cud/QueueSuccessResponseTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/controller/response/cud/QueueSuccessResponseTest.java @@ -3,7 +3,6 @@ package ru.spcex.clearing.backendapi.controller.response.cud; import com.fasterxml.jackson.annotation.JsonProperty; import ru.spcex.clearing.platform.messaging.domain.ActionType; -//пришлось дублировать этот класс чтобы не менять оригинал public class QueueSuccessResponseTest extends QueueSuccessResponse { @JsonProperty diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/meta/GetResponseFactoryTestConfiguration.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/meta/GetResponseFactoryTestConfiguration.java index d7937691c..8ec214f3e 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/meta/GetResponseFactoryTestConfiguration.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/meta/GetResponseFactoryTestConfiguration.java @@ -24,16 +24,12 @@ public class GetResponseFactoryTestConfiguration { return new PathResource(path); } - // @Value("file:${spring.config.location}/meta.json") -// private Resource meta; -// @Bean("metaJsonTestRaw") public String metaJsonRawString(@Qualifier("metaJsonTestPath") Resource meta) throws IOException { if (!meta.isReadable()) throw new IllegalStateException("cannot read meta.json from meta " + meta.getFile()); return Files.readString(meta.getFile().toPath()); } - // @Autowired @Bean("metaJsonTest") public MetaServer metaServer(@Qualifier("metaJsonTestRaw") String metaJson) throws JsonProcessingException { diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidationTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidationTest.java index 568ea0fd8..93d84664a 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidationTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/ActionMetaValidationTest.java @@ -41,7 +41,7 @@ class ActionMetaValidationTest { } { IAction action = new CommonDeleteAction(); - assertFalse(action.validate().isEmpty()); // стандартный валидатор - требуется id + assertFalse(action.validate().isEmpty()); IValidator v = metaValidator.getValidator(null, action); Collection vResult = v.validateAll(); @@ -50,7 +50,7 @@ class ActionMetaValidationTest { { CommonDeleteAction action = new CommonDeleteAction(); action.setId(123L); - assertTrue(action.validate().isEmpty()); // стандартный валидатор - требуется id + assertTrue(action.validate().isEmpty()); IValidator v = metaValidator.getValidator(null, action); Collection vResult = v.validateAll(); diff --git a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/FieldNameMetaValidationTest.java b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/FieldNameMetaValidationTest.java index 07986e4f3..07d2cae3d 100644 --- a/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/FieldNameMetaValidationTest.java +++ b/clearing-parent/backend-api/src/test/java/ru/spcex/clearing/backendapi/service/validation/FieldNameMetaValidationTest.java @@ -25,7 +25,6 @@ class FieldNameMetaValidationTest { for (Map.Entry dictionary : meta.getEnums().entrySet()) { String dicName = dictionary.getKey(); assertFalse(containWrongSymbols(dicName), "dictionary name: " + dicName); - //assertEquals(dicName, dictionary.getValue().getName()); for (ActionField field : dictionary.getValue().getFields()) { String fieldName = field.getCode(); assertFalse(containWrongSymbols(fieldName), "dictionary " + dicName + " code: " + fieldName); @@ -39,7 +38,6 @@ class FieldNameMetaValidationTest { for (Map.Entry object : meta.getObjects().entrySet()) { String objName = object.getKey(); assertFalse(containWrongSymbols(objName), "object name: " + objName); -// assertEquals(objName, object.getValue().getName()); for (ActionField field : object.getValue().getFields()) { String fieldName = field.getCode(); assertFalse(containWrongSymbols(fieldName), "object " + objName + " code: " + fieldName); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java index 612692cad..ceca40175 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/SdfExecutorsConfig.java @@ -13,10 +13,8 @@ import java.util.Map; public class SdfExecutorsConfig { @Bean("sdfExecutors") - public Map> executorsMap(//Sdf09Executor sdf09Executor, - Sdf16Executor sdf16Executor) { + public Map> executorsMap(Sdf16Executor sdf16Executor) { Map> executors = new HashMap<>(); -// todo возможно удалят или переделают: executors.put(SdfTable.SDF_09, sdf09Executor); executors.put(SdfTable.SDF_16, sdf16Executor); return executors; } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java index 4434d8165..797081f35 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/config/ValidationConfig.java @@ -37,9 +37,6 @@ public class ValidationConfig { addImdg.accept(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); } - /** - * чтобы во всех валидаторах был один экземпляр Imdg - */ private Imdg getImdg(String key) { return imdgs.get(key); } @@ -73,10 +70,9 @@ public class ValidationConfig { addImdg.accept(IMDGDistributedNames.Map_CompanySymbols); addImdg.accept(IMDGDistributedNames.Map_AccountBalance); return new ValidatorImpl<>(context, - Sdf09ValidationRule.CompanyPresent, - Sdf09ValidationRule.AccountPresent, - MarketIsUValidationRule.instance - //,AccountBalanceFreeAmountEnough.instance(SDf09.class) + Sdf09ValidationRule.CompanyPresent, + Sdf09ValidationRule.AccountPresent, + MarketIsUValidationRule.instance ); }; } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java index bc7a48883..827ade2da 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountBalanceService.java @@ -51,14 +51,13 @@ public class AccountBalanceService { String cashMovementCurrencyCode) { IValidator validator = validationFactory.apply(new AccountBalanceValidation(addresseeId, accountId)); Optional validationError = validator - .tillFirstError(); + .tillFirstError(); if (validationError.isPresent()) return new AccountResult(validationError.get()); Account account = validator.getStored(ValidationStored.Account); Company company = validator.getStored(ValidationStored.Company); - //которой accountBalance.accountId=statement.accountId и accountBalance.companyId=statement.companyId: AccountBalance accountBalance = accountBalanceImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountId, "companyId", addresseeId) + Map.of("accountId", accountId, "companyId", addresseeId) ); if (accountBalance == null) { accountBalance = new AccountBalance(); @@ -79,10 +78,9 @@ public class AccountBalanceService { return new AccountResult(accountBalance); } else { accountBalance.setUpdated(Instant.now()); - accountBalance.setAccountId(accountId);//+ - accountBalance.setAccountType(account.getAccountType());//++ + accountBalance.setAccountId(accountId); + accountBalance.setAccountType(account.getAccountType()); accountBalance.setAccount(account.getAccount()); -// accountBalance.setOpenBalanceAmount();// на базе изменения statement по sDf16/sDf09): не меняется. accountBalance.setFreeBalanceAmount(plus(accountBalance.getFreeBalanceAmount(), amount)); accountBalance.setChangeBalanceAmount(plus(accountBalance.getChangeBalanceAmount(), amount)); accountBalance.setCreditAmount(plus(accountBalance.getCreditAmount(), amount)); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountResult.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountResult.java index 0e38e0dde..879f4d866 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountResult.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/AccountResult.java @@ -4,7 +4,7 @@ import ru.clearing.classes.statics.data.account.AccountBalance; import ru.spcex.platform.utils.enumeration.EnumMessage; public class AccountResult { - private EnumMessage error; //if was + private EnumMessage error; private AccountBalance account; public AccountResult(EnumMessage validationError) { diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java index a62a256c5..f178721f5 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf08Service.java @@ -46,12 +46,9 @@ public class Sdf08Service extends QueueConsumer implements InitializingBean { private void newSDf08(BaseRequest userRequest) { LauncherCommandRequest req = userRequest.getRequestPayload(); log.debug("getAllBalance request received, parameter fromTime={}", - req == null ? null : req.getFromTime()); - // todo use опциональный параметр req.fromTime + req == null ? null : req.getFromTime()); SDf08 sDf08 = new SDf08(); -// sDf08.setNumber(idGenerator.nextId().toString()); Instant now = Instant.now(); -// sDf08.setDatetime(String.valueOf(now.toEpochMilli())); sDf08.setGenerationTime(now); sDf08.setGenerationId(idGenerator.nextId()); sdf8Map.insert(sDf08); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java index b52d2ab6c..e69de29bb 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf09Executor.java @@ -1,176 +0,0 @@ -//package ru.spcex.clearing.balance.service; -// -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -//import org.springframework.stereotype.Service; -//import ru.clearing.classes.statics.data.account.Account; -//import ru.clearing.classes.statics.data.account.AccountBalance; -//import ru.clearing.classes.statics.data.company.Company; -//import ru.clearing.classes.statics.data.sdf.SDf09; -//import ru.clearing.classes.statics.data.sdf.SDf10; -//import ru.clearing.classes.statics.data.statement.Statement; -//import ru.spcex.clearing.balance.errors.BalanceError; -//import ru.spcex.clearing.balance.validation.ValidationStored; -//import ru.spcex.clearing.imdg.IMDGDistributedNames; -//import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart; -//import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; -//import ru.spcex.platform.enumeration.*; -//import ru.spcex.platform.imdg.api.Imdg; -//import ru.spcex.platform.imdg.api.ImdgProvider; -//import ru.spcex.platform.utils.enumeration.EnumMessage; -//import ru.spcex.platform.utils.enumeration.IMessageResolver; -//import ru.spcex.platform.utils.validation.IValidator; -// -//import java.time.Instant; -//import java.time.LocalDate; -//import java.time.format.DateTimeFormatter; -//import java.util.Collection; -//import java.util.Map; -//import java.util.Optional; -//import java.util.function.Function; -// -////todo SDf09 был изменён. Sdf09Executor теперь не работает. -//@Service -//public class Sdf09Executor extends AbstractExecutor { -// private final Logger log = LoggerFactory.getLogger(getClass()); -// private final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); -// private final Imdg statementImdg; -// private final Function sDf09Validator; -// private final LoggingService errorLogger; -// private final Imdg sdf10Imdg; -// private final ImdgProvider imdgProvider; -// private final AccountBalanceService accountBalanceService; -// private final IMessageResolver errorResolver; -// private final Imdg accountBalanceImdg; -// -// public Sdf09Executor(Function sDf09Validator, -// LoggingService errorLogger, -// ImdgProvider imdgProvider, -// AccountBalanceService accountBalanceService, -// IMessageResolver errorResolver) { -// this.statementImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Statement, Statement.class); -// this.sdf10Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf10, SDf10.class); -// this.accountBalanceImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class);; -// this.sDf09Validator = sDf09Validator; -// this.errorLogger = errorLogger; -// this.imdgProvider = imdgProvider; -// this.accountBalanceService = accountBalanceService; -// this.errorResolver = errorResolver; -// } -// -// @Override -// String exportTableName() { -// return "DF-10"; -// } -// -// public Result execute(Collection sdf, StatementRequest statementRequest){ -// Result result = new Result(); -// Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); -// result.setGenerationId(generationIdForGroup); -// for (SDf09 sdf09 : sdf) { -// IValidator validator = sDf09Validator.apply(sdf09); -// Optional error = validator.tillFirstError(); -// Company company = validator.getStored(ValidationStored.Company); -// if (statementRequest.getAccountCreationResults().size() == 0 -// && BalanceError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { -// //на данном шаге company существует -> getId ok -// //формируем пакетный запрос на добавление account -// //ответ придет в этот же метод, process -// result.getAccountRequests().add(createAccountRequestPart(sdf09.getId(), sdf09.getAccount(), company.getId())); -// log.info("account {} for sdf01.id={} not found - send request for creation", sdf09.getAccount(), sdf09.getId()); -// continue; -// } else if (BalanceError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { -// log.error("fatal error: resumed processing after generating accounts, but no account found for sdf01.id={}", sdf09.getId()); -// } -// if (error.isPresent()) { -// errorLogger.logError("sdf01.id={}", error.get(), sdf09.getId()); -// sdf10Imdg.insert(createErrorSdf10(sdf09, error.get(), generationIdForGroup)); -// continue; -// } -// Statement statement = statementImdg.getSingleObjectByFieldValues(Map.of("account", sdf09.getAccount())); -// if (statement == null) { -// statement = createFlow(sdf09, -// company, -// validator.getStored(ValidationStored.Account)); -// } else { -// updateFlow(statement, sdf09, -// validator.getStored(ValidationStored.Account)); -// } -// SDf10 sdf10New = createSuccessSdf10(sdf09, generationIdForGroup); -// sdf10Imdg.insert(sdf10New); -// statement.setOutSDfId(sdf10New.getId()); -// AccountResult accountResult = accountBalanceService.createAccountBalance(statement.getAddresseeId(), statement.getAccountId(), statement.getAmount(), statement.getCashMovementCurrencyCode()); -// if (accountResult.getError() != null) { -// statement.setErrorCode(accountResult.getError().getSubject().getId().toString()); -// statement.setErrorText(errorResolver.resolve(accountResult.getError())); -// } else { -// accountBalanceImdg.insert(accountResult.getAccount()); //insert == update? -// statement.setOperationStatus(OperationStatus.Executed.getKey()); -// } -// statementImdg.update(statement); -// } -// return result; -// } -// -// private Statement createFlow(SDf09 sdf09, Company company, Account account) { -// Statement statement = new Statement(); -// statement.setAddresseeId(company.getId()); -// statement.setSenderId(Sender.Prc.getId()); -// statement.setCreated(Instant.now()); -// statement.setClearingDate(LocalDate.now()); -// statement.setStatementType(StatementType.incr.getKey()); -// statement.setAccountId(account.getId()); -// statement.setAccount(sdf09.getAccount()); -// statement.setInOutDirection(InOutDirection.in.getKey()); -// statement.setAmount(sdf09.getSum()); -// statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey()); -// statement.setOperationStatus(OperationStatus.Pending.getKey()); -// statement.setInSDfId(sdf09.getId()); -// statement.setInOutSDfType(InOutSDfType.type9.getKey()); -// statementImdg.insert(statement); -// return statement; -// } -// -// private void updateFlow(Statement statement, SDf09 sdf09, Account account) { -// statement.setUpdated(Instant.now()); -// statement.setAccountId(account.getId()); -// statement.setAccount(sdf09.getAccount()); -// statement.setInOutDirection(InOutDirection.in.getKey()); -// statement.setAmount(sdf09.getSum()); -// statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey()); -// statement.setInSDfId(sdf09.getId()); -//// statement.setOutSDfId(sdf10.getId()); заполняется внешним кодом -// statement.setInOutSDfType(InOutSDfType.type9.getKey()); -// statementImdg.update(statement); -// } -// -// private AccountSdfRequestPart createAccountRequestPart(Long sdf09Id, String account, Long companyId) { -// AccountSdfRequestPart req = new AccountSdfRequestPart(); -// req.setAccount(account); -// req.setCompanyId(companyId); -// req.setSdfId(sdf09Id); -// return req; -// } -// -// private SDf10 createErrorSdf10(SDf09 sdf09, EnumMessage error, Long generationIdForGroup) { -// SDf10 sDf10 = createSuccessSdf10(sdf09, generationIdForGroup); -// String errorId = error.getSubject().getId().toString(); -// sDf10.setResult(errorId.substring(errorId.length() - 3)); -// return sDf10; -// } -// -// private SDf10 createSuccessSdf10(SDf09 sdf09, Long generationIdForGroup) { -// SDf10 sDf10 = new SDf10(); -// sDf10.setAccount(sdf09.getAccount()); -// sDf10.setSum(sdf09.getSum()); -// sDf10.setMarket(sdf09.getMarket()); -// sDf10.setType(sdf09.getType()); -// sDf10.setNumber(sdf09.getNumber()); -// sDf10.setInn(sdf09.getInn()); -// sDf10.setResult("OK"); -// sDf10.setGenerationId(generationIdForGroup); -// sDf10.setGenerationTime(Instant.now()); -// sDf10.setInSDf09Id(sdf09.getId()); -// return sDf10; -// } -//} diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java index 01ec2cb32..cdb37db2a 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/Sdf16Executor.java @@ -79,9 +79,6 @@ public class Sdf16Executor extends AbstractExecutor { Company company = validator.getStored(ValidationStored.Company); if (statementRequest.getAccountCreationResults().size() == 0 && BalanceError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { - //на данном шаге company существует -> getId ok - //формируем пакетный запрос на добавление account - //ответ придет в этот же метод, process result.getAccountRequests().add(createAccountRequestPart(sdfItem.getId(), sdfItem.getAccount(), company.getId())); log.info("account {} for sdf01.id={} not found - send request for creation", sdfItem.getAccount(), sdfItem.getId()); continue; @@ -106,10 +103,9 @@ public class Sdf16Executor extends AbstractExecutor { sdf17Imdg.insert(sdfNew); statement.setOutSDfId(sdfNew.getId()); AccountResult accountResult = accountBalanceService.createAccountBalance(statement.getAddresseeId(), - statement.getAccountId(), statement.getAmount(), null /*todo statement.getCashMovementCurrencyCode() */); + statement.getAccountId(), statement.getAmount(), null); if (accountResult.getError() != null) { statement.setErrorCodeId(accountResult.getError().getSubject().getId()); - //todo аполнение statement.setErrorTextId(errorResolver.resolve(accountResult.getError())); } else { accountBalanceImdg.insert(accountResult.getAccount()); statement.setOperationStatus(OperationStatus.Executed.getKey()); diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java index 0de34e4b0..59c31c697 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/service/StatementService.java @@ -40,12 +40,9 @@ public class StatementService extends QueueConsumer implements InitializingBean @Override public void afterPropertiesSet() throws Exception { -// callback(StatementRequest.class) -// .setConsumer(this::process) -// .forDestination(Consts.STATEMENT_PROCESS, callbacks::put); callback(AccountBalanceClearingRequest.class) - .setConsumer(this::accountBalanceClearingUpdate) - .forDestination(Consts.BALANCE_ACCOUNT_UPDATE, callbacks::put); + .setConsumer(this::accountBalanceClearingUpdate) + .forDestination(Consts.BALANCE_ACCOUNT_UPDATE, callbacks::put); init(); } diff --git a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java index 7f1d910a9..b6b99d46f 100644 --- a/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java +++ b/clearing-parent/balance-service/src/main/java/ru/spcex/clearing/balance/validation/Sdf09ValidationRule.java @@ -17,7 +17,7 @@ import java.math.RoundingMode; import java.util.Map; import java.util.Optional; -@Deprecated // связан с Sdf09Executor , он в переработке или удалении. +@Deprecated public enum Sdf09ValidationRule implements IValidationRule> { CompanyPresent() { @Override @@ -25,48 +25,20 @@ public enum Sdf09ValidationRule implements IValidationRule companySymbolImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); Imdg companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); -// todo изменения классов. if (sdf09.getInn() == null) { -// return of(BalanceError.CompanyNotFound, "empty inn"); -// } -// String innStr = sdf09.getInn().setScale(0, RoundingMode.DOWN).toString(); -// CompanySymbols symbol = companySymbolImdg -// .getSingleObjectByFieldValues(Map.of("companySymbol", CompanySymbol.INN.getKey(), -// "companySymbolValue", innStr)); -// Company company = null; -// if (symbol != null) { -// company = companyImdg.getSingleObjectByID(symbol.getCompanyId()); -// } -// if (company == null) { - return of(BalanceError.CompanyNotFound); -// } -// context.storeObject(ValidationStored.Company, company); -// return empty(); + return of(BalanceError.CompanyNotFound); } }, AccountPresent() { @Override public Optional validate(ImdgValidationContext context) { SDf09 sdf09 = context.getValidatedObject(); -// if (sdf09.getAccount() == null) { - return of(BalanceError.AccountNotPresent); -// } -// Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); -// Account account = accountImdg.getSingleObjectByFieldValues(Map.of("account", sdf09.getAccount(), -// "accountType", AccountType.Clrn.getKey())); -// if (account == null) { -// return of(BalanceError.AccountNotPresent); -// } -// context.storeObject(ValidationStored.Account, account); -// return empty(); + return of(BalanceError.AccountNotPresent); } }, Market() { @Override public Optional validate(ImdgValidationContext context) { SDf09 sdf09 = context.getValidatedObject(); -// if (!"U".equals(sdf09.getMarket())) { -// return of(BalanceError.WrongMarket); -// } return empty(); } }; diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java index 5e08f0f09..26c5ba7a8 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AbstractServiceTest.java @@ -28,18 +28,17 @@ import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFields @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { - AccountBalanceService.class, - Sdf08Service.class, -// Sdf09Executor.class, - Sdf16Executor.class, - StatementService.class, - LoggingService.class, - MessagesConfig.class, - ValidationConfig.class, - SdfExecutorsConfig.class, - ImdgTestConfig.class, - ImdgTestConfig.class, - KafkaTestConfig.class}) + AccountBalanceService.class, + Sdf08Service.class, + Sdf16Executor.class, + StatementService.class, + LoggingService.class, + MessagesConfig.class, + ValidationConfig.class, + SdfExecutorsConfig.class, + ImdgTestConfig.class, + ImdgTestConfig.class, + KafkaTestConfig.class}) public abstract class AbstractServiceTest { protected static final MatcherFactory.Matcher ACCOUNT_BALANCE_MATCHER = usingIgnoringFieldsComparator("created", "updated", "clearingDate", "id"); protected static final MatcherFactory.Matcher RESULT_MATCHER = usingIgnoringFieldsComparator("account.created", "account.updated", "account.clearingDate", "generationId"); @@ -136,19 +135,4 @@ public abstract class AbstractServiceTest { accountBalance.setFullName(company.getFullName()); return accountBalance; } -// -// protected SDf01 getTestSdf01(long id, long generationId) { -// LocalDate date = LocalDate.now(); -// SDf01 sdf01 = new SDf01(); -// sdf01.setId(id); -// sdf01.setGenerationId(generationId); -// sdf01.setMarket("U"); -// sdf01.setDeal(deal); -// sdf01.setAccount(acc); -// sdf01.setCurr_code("RUR"); -// sdf01.setDat(date.format(datFormatter)); -// sdf01.setAcc_type("A"); -// sdf01.setRemainder(amountNew.toString()); -// return sdf01; -// } } diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java index b5877d2a3..bb569a074 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/AccountBalanceServiceTest.java @@ -40,15 +40,6 @@ class AccountBalanceServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link AccountBalanceService#createAccountBalance(Long addresseeId, Long accountId, BigDecimal amount, String cashMovementCurrencyCode)}
- * Тест проверяет генерацию сущности {@link AccountResult}
- * Входные параметры:
- * addresseeId - {@link Company#id}
- * accountId - {@link Account#id}
- * amount - сумма
- * cashMovementCurrencyCode - код
- */ @Test void createAccountBalance() { Company company = getTestCompany(); @@ -82,18 +73,8 @@ class AccountBalanceServiceTest extends AbstractServiceTest { ACCOUNT_BALANCE_MATCHER.assertMatch(resultUpdate, predictableUpdateResult); } - /** - * {@link AccountBalanceService#createAccountBalance(Long addresseeId, Long accountId, BigDecimal amount, String cashMovementCurrencyCode)}
- * Тест проверяет валидацию
- * Входные параметры:
- * addresseeId - {@link Company#id}
- * accountId - {@link Account#id}
- * amount - сумма
- * cashMovementCurrencyCode - код
- */ @Test void validatedCreateAccountBalance() { - //CompanyNotFound AccountResult predictableResult; predictableResult = new AccountResult(new EnumMessage(BalanceError.CompanyNotFound)); Company company = getTestCompany(); @@ -104,8 +85,6 @@ class AccountBalanceServiceTest extends AbstractServiceTest { result = accountBalanceService.createAccountBalance(null, accountIdNew, amountNew, cashMovementCurrencyCode); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); - - //AccountNotPresent accountType=null companyImdg.insert(company); Account account = new Account(); account.setId(accountIdNew); @@ -115,8 +94,6 @@ class AccountBalanceServiceTest extends AbstractServiceTest { result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCode); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); - - //AccountNotPresent id=null account.setId(null); account.setAccountType(AccountType.Clrn.getKey()); account.setStatus(Status.Active.getKey()); @@ -125,8 +102,6 @@ class AccountBalanceServiceTest extends AbstractServiceTest { result = accountBalanceService.createAccountBalance(addresseeIdNew, accountIdNew, amountNew, cashMovementCurrencyCode); ACCOUNT_BALANCE_MATCHER.assertMatch(result, predictableResult); - - //AccountNotActive accountStatus=null account.setId(accountIdNew); account.setAccountType(AccountType.Clrn.getKey()); account.setStatus(null); diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java index 80c7e2973..8b5314a09 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf08ServiceTest.java @@ -30,7 +30,6 @@ import static org.mockito.Mockito.verify; import static ru.spcex.clearing.balance.utils.MockKafkaUtils.addRecordToKafka; class Sdf08ServiceTest extends AbstractServiceTest { - // private static final MatcherFactory.Matcher SDF_08_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); private static final String TOPIC = Task.getAllBalance.topic(); private static final int PARTITION = 1; @Autowired @@ -47,12 +46,6 @@ class Sdf08ServiceTest extends AbstractServiceTest { mockConsumer = (MockConsumer) sdf08Service.getConsumer(); } - /** - * {@link Sdf08Service}
- * Тест проверяет генерацию сущностей {@link RequestInfo}
- * Входные параметры:
- * {@link BaseRequest} - new BaseRequest<>()
- */ @Test void newSDf08() throws InterruptedException { BaseRequest baseNewRequest = new BaseRequest<>(); @@ -67,10 +60,8 @@ class Sdf08ServiceTest extends AbstractServiceTest { } addRecordToKafka(mockConsumer, TOPIC, PARTITION, 0, jsonBaseNewRequest); - - //waiting for kafka producer send message (finale event) verify(producer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); assertEquals(Consts.EXPORT_PROCESS, producerRecord.getValue().topic()); BaseRequest baseRequest = (BaseRequest) producerRecord.getValue().value(); @@ -85,12 +76,6 @@ class Sdf08ServiceTest extends AbstractServiceTest { } - /** - * {@link Sdf08Service}
- * Тест проверяет генерацию сущностей {@link RequestInfo}
- * Входные параметры:
- * {@link BaseRequest} - new BaseRequest<>() с полем fromTime
- */ @Test void newSDf08_withTime() throws JsonProcessingException { BaseRequest baseNewRequest = new BaseRequest<>(); @@ -105,16 +90,13 @@ class Sdf08ServiceTest extends AbstractServiceTest { addRecordToKafka(mockConsumer, TOPIC, PARTITION, 0, jsonBaseNewRequest); - - //waiting for kafka producer send message (finale event) verify(producer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); assertEquals(Consts.EXPORT_PROCESS, producerRecord.getValue().topic()); BaseRequest baseRequest = (BaseRequest) producerRecord.getValue().value(); ExportToFileRequest exportToFileRequest = (ExportToFileRequest) baseRequest.getRequestPayload(); - //todo test newSDf08_withTime assertEquals(fromTime, exportToFileRequest.getFromTime()); SDf08 resultsSDf08 = sdf08Imdg.getFirstObjectBySQL(String.format("generationId = %s and id != null", exportToFileRequest.getSdfGroupId())); RequestInfo resultRequestInfo = requestInfoImdg.getSingleObjectByID(baseRequest.getId()); diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java index 8e71fcc10..e69de29bb 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf09ExecutorTest.java @@ -1,243 +0,0 @@ -//package ru.spcex.clearing.balance.service; -// -//import org.apache.kafka.clients.producer.MockProducer; -//import org.junit.jupiter.api.Test; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.boot.test.mock.mockito.SpyBean; -//import ru.clearing.classes.statics.data.account.Account; -//import ru.clearing.classes.statics.data.account.AccountBalance; -//import ru.clearing.classes.statics.data.company.Company; -//import ru.clearing.classes.statics.data.company.CompanySymbols; -//import ru.clearing.classes.statics.data.sdf.SDf09; -//import ru.clearing.classes.statics.data.sdf.SDf10; -//import ru.clearing.classes.statics.data.statement.Statement; -//import ru.spcex.clearing.balance.errors.BalanceError; -//import ru.spcex.clearing.balance.utils.MatcherFactory; -//import ru.spcex.clearing.platform.messaging.domain.cud.account.sdf01.AccountSdfRequestPart; -//import ru.spcex.clearing.platform.messaging.domain.cud.balance.StatementRequest; -//import ru.spcex.platform.enumeration.*; -//import ru.spcex.platform.utils.enumeration.EnumMessage; -// -//import javax.annotation.PostConstruct; -//import java.math.BigDecimal; -//import java.time.Instant; -//import java.time.LocalDate; -//import java.util.Collection; -//import java.util.Collections; -//import java.util.Map; -// -//import static ru.spcex.clearing.balance.utils.MatcherFactory.usingIgnoringFieldsComparator; -// -//class Sdf09ExecutorTest extends AbstractServiceTest { -// private static final MatcherFactory.Matcher SDF_10_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); -// private final Long ID = 2L; -// private final String acc = "213456789"; -// @Autowired -// Sdf09Executor sdf09Executor; -// private SDf09 sdf09; -// private StatementRequest statementRequest; -// @SpyBean -// private MockProducer producer; -// -// @PostConstruct -// void init() { -// super.init(); -// sdf09 = getTestSdf09(); -// statementRequest = new StatementRequest(); -// } -// -// /** -// * {@link Sdf09Executor#execute(Collection collection, StatementRequest statementRequest)}
-// * Тест проверяет генерацию сущностей {@link Result}, {@link Statement}, {@link SDf10}
-// * Входные параметры:
-// * accountId - {@link StatementRequest}: new StatementRequest()
-// * addresseeId - {@link Collection}
-// * addresseeId - {@link SDf09}
-// * {@link SDf09#market} - "U"
-// * {@link SDf09#account} - "123456789"
-// * {@link SDf09#inn} - 987654321
-// * {@link SDf09#sum} - 1000
-// */ -// @Test -// void execute() { -// //check create statement, SDf10 and AccountBalance -// Company company = getTestCompany(); -// companyMap.put(addresseeIdNew, company); -// -// CompanySymbols companySymbols = getTestCompanySymbols(); -// companySymbolsMap.put(addresseeIdNew, companySymbols); -// -// Account account = getTestAccount(ID, acc); -// accountMap.put(accountIdNew, account); -// -// Result predictableResult = new Result(); -// predictableResult.setGenerationId(ID); -// Statement predictableStatement = getTestStatement(currentId.getAndIncrement(), company, account, sdf09); -// predictableStatement.setOperationStatus(OperationStatus.Executed.getKey()); -// SDf10 predictableSdf10 = getTestSdf10(currentId.getAndIncrement(), sdf09, ID); -// predictableStatement.setOutSDfId(predictableSdf10.getId()); -// AccountResult predictableNewResult = getTestAccountResult(currentId.getAndIncrement(), account, company); -// -// Result result = sdf09Executor.execute(Collections.singletonList(sdf09), statementRequest); -// Statement resultStatement = statementImdg.getSingleObjectByFieldValues(Map.of("account", acc)); -// SDf10 resultSdf10 = sdf10Imdg.getSingleObjectByFieldValues(Map.of("account", acc)); -// AccountBalance resultAccountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of("account", acc)); -// -// RESULT_MATCHER.assertMatch(result, predictableResult); -// STATEMENT_MATCHER.assertMatch(resultStatement, predictableStatement); -// SDF_10_MATCHER.assertMatch(resultSdf10, predictableSdf10); -// ACCOUNT_BALANCE_MATCHER.assertMatch(resultAccountBalance, predictableNewResult.getAccount()); -// } -// -// /** -// * {@link Sdf09Executor#execute(Collection collection, StatementRequest statementRequest)}
-// * Тест проверяет валидацию
-// * Входные параметры:
-// * accountId - {@link StatementRequest}: new StatementRequest()
-// * addresseeId - {@link Collection}
-// * addresseeId - {@link SDf09}
-// * {@link SDf09#market} - "U"
-// * {@link SDf09#account} - "123456789"
-// * {@link SDf09#inn} - 987654321
-// * {@link SDf09#sum} - 1000
-// */ -// @Test -// void validatedExecute() { -// //CompanyNotFound -// companyMap.delete(addresseeIdNew); -// checkError(new EnumMessage(BalanceError.CompanyNotFound)); -// -// Company company = getTestCompany(); -// companyMap.put(addresseeIdNew, company); -// companySymbolsMap.delete(addresseeIdNew); -// checkError(new EnumMessage(BalanceError.CompanyNotFound)); -// -// CompanySymbols companySymbols = getTestCompanySymbols(); -// companySymbolsMap.put(addresseeIdNew, companySymbols); -// sdf09.setInn(null); -// checkError(new EnumMessage(BalanceError.CompanyNotFound)); -// -// //AccountNotPresent -// sdf09.setInn(inn); -// accountMap.delete(accountIdNew); -// checkErrorAccountNotPresent(company); -// -// //AccountNotPresent -// Account account = new Account(); -// account.setAccount(null); -// account.setAccountType(AccountType.Clrn.getKey()); -// account.setStatus(Status.Active.getKey()); -// accountMap.put(accountIdNew, account); -// checkErrorAccountNotPresent(company); -// -// //AccountNotPresent -// account = getTestAccount(ID, acc); -// accountMap.put(accountIdNew, account); -// sdf09.setAccount(null); -// checkErrorAccountNotPresent(company); -// -// //WrongMarket -// sdf09.setAccount(acc); -// sdf09.setMarket(null); -// checkError(new EnumMessage(BalanceError.WrongMarket)); -// -// //BalanceNotEnough -// sdf09.setMarket("U"); -// sdf09.setSum(null); -// checkError(new EnumMessage(BalanceError.BalanceNotEnough)); -// -// //BalanceNotEnough -// sdf09.setSum(new BigDecimal(-1000)); -// AccountBalance balance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of("account", sdf09.getAccount(), -// "accountType", AccountType.Clrn.getKey())); -// if (balance != null) accountBalanceImdg.delete(balance); -// else balance = getTestAccountBalance(ID, account, company); -// checkError(new EnumMessage(BalanceError.BalanceNotEnough)); -// -// //BalanceNotEnough -// balance.setFreeBalanceAmount(new BigDecimal(999)); -// accountBalanceImdg.insert(balance); -// checkError(new EnumMessage(BalanceError.BalanceNotEnough)); -// -// balance.setFreeBalanceAmount(amountNew); -// accountBalanceImdg.insert(balance); -// } -// -// private void checkError(EnumMessage enumMessage) { -// SDf10 predictableSdf10 = getTestErrorSdf10(sdf09, enumMessage, ID); -// Result result = sdf09Executor.execute(Collections.singletonList(sdf09), statementRequest); -// Collection resultsSdf10 = sdf10Imdg.getCollectionObjectsByFieldValues(Map.of("account", acc)); -// SDf10 resultSdf10 = resultsSdf10.stream().max((entry1, entry2) -> entry1.getId() > entry2.getId() ? 1 : -1).get(); -// SDF_10_MATCHER.assertMatch(resultSdf10, predictableSdf10); -// } -// -// protected Statement getTestStatement(Long id, Company company, Account account, SDf09 sdf09) { -// Statement statement = new Statement(); -// statement.setId(id); -// statement.setAddresseeId(company.getId()); -// statement.setSenderId(Sender.Prc.getId()); -// statement.setCreated(Instant.now()); -// statement.setClearingDate(LocalDate.now()); -// statement.setStatementType(StatementType.incr.getKey()); -// statement.setAccountId(account.getId()); -// statement.setAccount(sdf09.getAccount()); -// statement.setInOutDirection(InOutDirection.in.getKey()); -// statement.setAmount(sdf09.getSum()); -// statement.setCashMovementCurrencyCode(CurrencyCode.RUB.getKey()); -// statement.setOperationStatus(OperationStatus.Pending.getKey()); -// statement.setInSDfId(sdf09.getId()); -// statement.setInOutSDfType(InOutSDfType.type9.getKey()); -// statementImdg.insert(statement); -// return statement; -// } -// -// private SDf10 getTestSdf10(Long id, SDf09 sdf09, Long generationIdForGroup) { -// SDf10 sDf10 = new SDf10(); -// sDf10.setId(id); -// sDf10.setAccount(sdf09.getAccount()); -// sDf10.setSum(sdf09.getSum()); -// sDf10.setMarket(sdf09.getMarket()); -// sDf10.setType(sdf09.getType()); -// sDf10.setNumber(sdf09.getNumber()); -// sDf10.setInn(sdf09.getInn()); -// sDf10.setResult("OK"); -// sDf10.setGenerationId(generationIdForGroup); -// sDf10.setGenerationTime(Instant.now()); -// sDf10.setInSDf09Id(sdf09.getId()); -// return sDf10; -// } -// -// private SDf09 getTestSdf09() { -// SDf09 sdf09 = new SDf09(); -// sdf09.setId(ID); -// sdf09.setMarket("U"); -// sdf09.setAccount(acc); -// sdf09.setInn(inn); -// sdf09.setSum(amountNew); -// return sdf09; -// } -// -// private SDf10 getTestErrorSdf10(SDf09 sdf09, EnumMessage error, Long generationIdForGroup) { -// SDf10 sDf10 = getTestSdf10(ID, sdf09, generationIdForGroup); -// sDf10.setId(ID); -// String errorId = error.getSubject().getId().toString(); -// sDf10.setResult(errorId.substring(errorId.length() - 3)); -// return sDf10; -// } -// -// private void checkErrorAccountNotPresent(Company company) { -// Result predictableResult = new Result(); -// predictableResult.getAccountRequests().add(createAccountRequestPart(sdf09.getId(), sdf09.getAccount(), company.getId())); -// Result result = sdf09Executor.execute(Collections.singletonList(sdf09), statementRequest); -// RESULT_MATCHER.assertMatch(result, predictableResult); -// } -// -// private AccountSdfRequestPart createAccountRequestPart(Long sdf09Id, String account, Long companyId) { -// AccountSdfRequestPart req = new AccountSdfRequestPart(); -// req.setAccount(account); -// req.setCompanyId(companyId); -//// req.setAccountType(AccountType.Clrn.getKey()); -// req.setSdfId(sdf09Id); -// return req; -// } -//} \ No newline at end of file diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java index 0f79c836e..d6a5fdc70 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/service/Sdf16ExecutorTest.java @@ -59,25 +59,8 @@ class Sdf16ExecutorTest extends AbstractServiceTest { statementRequest = new StatementRequest(); } - /** - * {@link Sdf16Executor#execute(Collection collection, StatementRequest statementRequest)}
- * Тест проверяет генерацию сущностей {@link Result}, {@link Statement}, {@link SDf17}
- * Входные параметры:
- * accountId - {@link StatementRequest}: new StatementRequest()
- * addresseeId - {@link Collection}
- * addresseeId - {@link SDf16}
- * {@link SDf16#market} - "U"
- * {@link SDf16#account} - "123456789"
- * {@link SDf16#inn} - 987654321
- * {@link SDf16#sum} - 1700
- * {@link SDf16#type} - "t"
- * {@link SDf16#bic} - new BigDecimal(1000389238)
- * {@link SDf16#spec} - "134"
- * {@link SDf16#number} - new BigDecimal(234232343)
- */ @Test void execute() { - //check create statement, SDf17 and AccountBalance Company company = getTestCompany(); companyMap.put(addresseeIdNew, company); @@ -113,25 +96,8 @@ class Sdf16ExecutorTest extends AbstractServiceTest { ACCOUNT_BALANCE_MATCHER.assertMatch(resultAccountBalance, predictableNewResult.getAccount()); } - /** - * {@link Sdf16Executor#execute(Collection collection, StatementRequest statementRequest)}
- * Тест проверяет валидацию
- * Входные параметры:
- * accountId - {@link StatementRequest}: new StatementRequest()
- * addresseeId - {@link Collection}
- * addresseeId - {@link SDf16}
- * {@link SDf16#market} - "U"
- * {@link SDf16#account} - "123456789"
- * {@link SDf16#inn} - 987654321
- * {@link SDf16#sum} - 1700
- * {@link SDf16#type} - "t"
- * {@link SDf16#bic} - new BigDecimal(1000389238)
- * {@link SDf16#spec} - "134"
- * {@link SDf16#number} - new BigDecimal(234232343)
- */ @Test void validatedExecute() { - //CompanyNotFound companyMap.delete(addresseeIdNew); checkError(new EnumMessage(BalanceError.CompanyNotFound)); @@ -144,45 +110,31 @@ class Sdf16ExecutorTest extends AbstractServiceTest { companySymbolsMap.put(addresseeIdNew, companySymbols); sdf16.setInn(null); checkError(new EnumMessage(BalanceError.CompanyNotFound)); - - //AccountNotPresent sdf16.setInn(inn); accountMap.delete(accountIdNew); checkErrorAccountNotPresent(company); - - //AccountNotPresent Account account = new Account(); account.setAccount(null); account.setAccountType(AccountType.Clrn.getKey()); account.setStatus(Status.Active.getKey()); accountMap.put(accountIdNew, account); checkErrorAccountNotPresent(company); - - //AccountNotPresent account = getTestAccount(ID, acc); accountMap.put(accountIdNew, account); sdf16.setAccount(null); checkErrorAccountNotPresent(company); - - //WrongMarket sdf16.setAccount(acc); sdf16.setMarket(null); checkError(new EnumMessage(BalanceError.WrongMarket)); - - //BalanceNotEnough sdf16.setMarket("U"); sdf16.setSum(null); checkError(new EnumMessage(BalanceError.BalanceNotEnough)); - - //BalanceNotEnough sdf16.setSum(new BigDecimal(-1700)); AccountBalance balance = accountBalanceImdg.getFirstObjectByFieldValues(Map.of("account", sdf16.getAccount(), - "accountType", AccountType.Clrn.getKey())); + "accountType", AccountType.Clrn.getKey())); if (balance != null) accountBalanceImdg.delete(balance); else balance = getTestAccountBalance(ID, account, company); checkError(new EnumMessage(BalanceError.BalanceNotEnough)); - - //BalanceNotEnough balance.setFreeBalanceAmount(new BigDecimal(999)); accountBalanceImdg.insert(balance); checkError(new EnumMessage(BalanceError.BalanceNotEnough)); diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java index 129e2178b..2c08049ac 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/ImapEvent.java @@ -39,14 +39,13 @@ public class ImapEvent { } public void waitWhenHappened() throws InterruptedException { - //running timer task as daemon thread Timer timer = new Timer(true); timer.scheduleAtFixedRate(new TimerTask() { boolean secondRan; @Override public void run() { - checkEventHappened.set(secondRan);//если что-то пойдет не так не тормозить основной поток + checkEventHappened.set(secondRan); secondRan = true; } }, 0, 20 * 1000); @@ -55,7 +54,6 @@ public class ImapEvent { checkEventHappened.wait(100); } } - //preparing hazelcastImdgProvider for next test iMap.removeEntryListener(listenerAdding); iMap.removeEntryListener(listenerUpdating); iMap.removeEntryListener(listenerRemoving); diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java index a18ccb4f0..3243818e8 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/utils/MatcherFactory.java @@ -4,11 +4,6 @@ import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; -/** - * Factory for creating test matchers. - *

- * Comparing actual and expected objects via AssertJ - */ public class MatcherFactory { public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { diff --git a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRuleTest.java b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRuleTest.java index a579141e0..5999e1179 100644 --- a/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRuleTest.java +++ b/clearing-parent/balance-service/src/test/java/ru/spcex/clearing/balance/validation/Sdf16ValidationRuleTest.java @@ -12,14 +12,14 @@ import java.math.BigDecimal; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertTrue; -@Deprecated // sDf16 was deleted + +@Deprecated class Sdf16ValidationRuleTest { @Test void values() { ImdgValidationContext ctx = new ImdgValidationContext<>(); SDf16 object = new SDf16(); -// object.setBic(BigDecimal.valueOf(1000004L)); object.setInn(BigDecimal.valueOf(1000024L)); ctx.setValidatedObject(object); ctx.addImdg(IMDGDistributedNames.Map_CompanySymbols, makeTestMap()); diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/ConstSerializable.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/ConstSerializable.java index bc85615b1..760bc59e3 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/ConstSerializable.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/ConstSerializable.java @@ -1,8 +1,5 @@ package ru.clearing.classes; -/** - * В случае любых изменений модуля classes необходимо изменить serialVersionUID++ - */ public interface ConstSerializable { long serialVersionUID = 293236453421L; } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java index 64a7508b4..41755e476 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/objects/BusinessEvent.java @@ -4,14 +4,11 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * Журнал изменения таблиц с BusinessObject - */ -public abstract class BusinessEvent extends SpcexObjectBase { +public abstract class BusinessEvent extends SpcexObjectBase { private Instant eventTime; private Long userId; - private String eventType; // varchar(4) + private String eventType; public Instant getEventTime() { return eventTime; @@ -44,10 +41,10 @@ public abstract class BusinessEvent - * DB table: EXECUTION_CURRENCY_HISTORY - **/ public class ExecutionCurrencyHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDepositHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDepositHistory.java index 784900a03..697d5dbd7 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDepositHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionDepositHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Сделки - *

- * DB table: EXECUTION_DEPOSIT_HISTORY - **/ public class ExecutionDepositHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java index 7306327de..9d277e43e 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFond.java @@ -7,11 +7,6 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -/** - * Сделки на Фондовой секции - *

- * DB table: EXECUTION_FOND - **/ public class ExecutionFond extends ExecutionCommon { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFondHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFondHistory.java index bdae32cd1..1e56661f5 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFondHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/execution/ExecutionFondHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Сделки на Фондовой секции - *

- * DB table: EXECUTION_FOND_HISTORY - **/ public class ExecutionFondHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriod.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriod.java index 9553f38e8..7e31e0b2f 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriod.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriod.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Купонное расписание - * - * DB table: COUPON_PERIOD - **/ public class CouponPeriod extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -23,36 +18,41 @@ public class CouponPeriod extends SpcexObjectBase { public Long getSecurityId() { return securityId; } + public void setSecurityId(Long value) { - this.securityId=value; + this.securityId = value; } public BigDecimal getCouponRate() { return couponRate; } + public void setCouponRate(BigDecimal value) { - this.couponRate=value; + this.couponRate = value; } public Long getNumber() { return number; } + public void setNumber(Long value) { - this.number=value; + this.number = value; } public LocalDate getPeriodEndDate() { return periodEndDate; } + public void setPeriodEndDate(LocalDate value) { - this.periodEndDate=value; + this.periodEndDate = value; } public LocalDate getPeriodStartDate() { return periodStartDate; } + public void setPeriodStartDate(LocalDate value) { - this.periodStartDate=value; + this.periodStartDate = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriodHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriodHistory.java index a06c672e7..e61d81682 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriodHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/CouponPeriodHistory.java @@ -5,9 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * DB: COUPON_PERIOD_HISTORY - */ public class CouponPeriodHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/EquitySecurity.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/EquitySecurity.java index 36bd174db..e9c2d4db6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/EquitySecurity.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/EquitySecurity.java @@ -6,12 +6,6 @@ import ru.clearing.classes.statics.data.security.Security; import java.math.BigDecimal; -/** - * Equity - * Акции - * - * DB table: EQUITY_SECURITY - **/ public class EquitySecurity extends Security { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -22,22 +16,25 @@ public class EquitySecurity extends Security { public Long getSecurityId() { return securityId; } + public void setSecurityId(Long value) { - this.securityId=value; + this.securityId = value; } public String getShareType() { return shareType; } + public void setShareType(String value) { - this.shareType=value; + this.shareType = value; } public BigDecimal getLotSize() { return lotSize; } + public void setLotSize(BigDecimal value) { - this.lotSize=value; + this.lotSize = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeCashFlow.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeCashFlow.java index 03e32e3e4..5917a9366 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeCashFlow.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeCashFlow.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Выплаты по купонам - *

- * DB table: FIXED_INCOME_CASH_FLOW - **/ public class FixedIncomeCashFlow extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeSecurity.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeSecurity.java index 4a6261aa7..fb2a4dcaa 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeSecurity.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/instrument/issue/FixedIncomeSecurity.java @@ -6,12 +6,6 @@ import ru.clearing.classes.statics.data.security.Security; import java.math.BigDecimal; import java.time.LocalDate; -/** - * FixedIncome - * Облигации - * - * DB table: FIXED_INCOME_SECURITY - **/ public class FixedIncomeSecurity extends Security { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -28,27 +22,31 @@ public class FixedIncomeSecurity extends Security { public Long getSecurityId() { return securityId; } + public void setSecurityId(Long value) { - this.securityId=value; + this.securityId = value; } public String getBondType() { return bondType; } + public void setBondType(String value) { - this.bondType=value; + this.bondType = value; } public LocalDate getMaturityDate() { return maturityDate; } + public void setMaturityDate(LocalDate value) { - this.maturityDate=value; + this.maturityDate = value; } public BigDecimal getNominalForDate() { return nominalForDate; } + public void setNominalForDate(BigDecimal nominalForDate) { this.nominalForDate = nominalForDate; } @@ -56,36 +54,41 @@ public class FixedIncomeSecurity extends Security { public BigDecimal getNominalValue() { return nominalValue; } + public void setNominalValue(BigDecimal value) { - this.nominalValue=value; + this.nominalValue = value; } public String getNominalCurrency() { return nominalCurrency; } + public void setNominalCurrency(String value) { - this.nominalCurrency=value; + this.nominalCurrency = value; } public BigDecimal getCoupon() { return coupon; } + public void setCoupon(BigDecimal value) { - this.coupon=value; + this.coupon = value; } public Long getCouponFrequency() { return couponFrequency; } + public void setCouponFrequency(Long value) { - this.couponFrequency=value; + this.couponFrequency = value; } public BigDecimal getLotSize() { return lotSize; } + public void setLotSize(BigDecimal value) { - this.lotSize=value; + this.lotSize = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java index 1a73b72ab..a770da349 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/InDocumentJournal.java @@ -7,11 +7,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalTime; -/** - * Журнал входящих документов - *

- * DB table: IN_DOCUMENT_JOURNAL - **/ public class InDocumentJournal extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java index e1a2930c8..39d78eb63 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/journal/OutDocumentJournal.java @@ -7,11 +7,6 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalTime; -/** - * Журнал исходящих документов - *

- * DB table: OUT_DOCUMENT_JOURNAL - **/ public class OutDocumentJournal extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java index 3428382c7..540bbee98 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/messages/ErrorText.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.time.LocalDate; -/** - * Полные тексты ошибок - *

- * DB table: ERROR_TEXT - **/ public class ErrorText extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/CurrencyHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/CurrencyHistory.java index 4cd3ad3f0..67d1d18b3 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/CurrencyHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/CurrencyHistory.java @@ -3,11 +3,7 @@ package ru.clearing.classes.statics.data.misc; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Валюты - * - * DB table: CURRENCY_HISTORY - **/ + public class CurrencyHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java index 97903530d..261f63de6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/KeyRate.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Ключевая ставка ЦБ - *

- * DB table: KEY_RATE - **/ @Deprecated public class KeyRate extends SpcexObjectBase { private BigDecimal rate; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/ListingHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/ListingHistory.java index 98ad92a59..322eaa1e6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/ListingHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/ListingHistory.java @@ -3,11 +3,7 @@ package ru.clearing.classes.statics.data.misc; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Листинг инструментов - * - * DB table: LISTING_HISTORY - **/ + public class ListingHistory extends BusinessEvent

{ @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketDataLiquidation.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketDataLiquidation.java index 066986ea2..b21a3909d 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketDataLiquidation.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketDataLiquidation.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Статичная ценовая информация для ликвидации активов - *

- * DB table: MARKET_DATA_LIQUIDATION - **/ public class MarketDataLiquidation extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketHistory.java index a76b7101e..ddb3a6fa2 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/MarketHistory.java @@ -3,11 +3,7 @@ package ru.clearing.classes.statics.data.misc; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Торговые секции - * - * DB table: MARKET_HISTORY - **/ + public class MarketHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/NotificationHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/NotificationHistory.java index bb774c91c..a4a7ed59b 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/NotificationHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/NotificationHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Сообщения - *

- * DB table: NOTIFICATION_HISTORY - **/ public class NotificationHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SCrossRate.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SCrossRate.java index c1af7490b..f2fa7ea8b 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SCrossRate.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SCrossRate.java @@ -11,15 +11,9 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -/** - * Кросс курсы валют от ЦБ - * - * DB table: S_CROSS_RATE - **/ public class SCrossRate extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - // (in parent) private Long id; private LocalDate date; private String currency; private String currCode; @@ -32,57 +26,65 @@ public class SCrossRate extends BusinessObject { public LocalDate getDate() { return date; } + public void setDate(LocalDate value) { - this.date=value; + this.date = value; } public String getCurrency() { return currency; } + public void setCurrency(String value) { - this.currency=value; + this.currency = value; } public String getCurrCode() { return currCode; } + public void setCurrCode(String value) { - this.currCode=value; + this.currCode = value; } public BigDecimal getFaceValue() { return faceValue; } + public void setFaceValue(BigDecimal value) { - this.faceValue=value; + this.faceValue = value; } public BigDecimal getRate() { return rate; } + public void setRate(BigDecimal value) { - this.rate=value; + this.rate = value; } public BigDecimal getUnitRate() { return unitRate; } + public void setUnitRate(BigDecimal value) { - this.unitRate=value; + this.unitRate = value; } public Instant getGenerationTime() { return generationTime; } + public void setGenerationTime(Instant value) { - this.generationTime=value; + this.generationTime = value; } public Long getGenerationId() { return generationId; } + public void setGenerationId(Long value) { - this.generationId=value; + this.generationId = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrades.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrades.java index 6601452fc..d958ce2f9 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrades.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/STrades.java @@ -8,11 +8,6 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -/** - * Сделки из Торговой системы - *

- * DB table: S_TRADE - **/ public class STrades extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SessionHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SessionHistory.java index 6be919fb3..78b9489f6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SessionHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/misc/SessionHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Клиринговая сессия - *

- * DB table: SESSION_HISTORY - **/ public class SessionHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/Operation.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/Operation.java index f8a8f5d0b..32ad074df 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/Operation.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/payment/Operation.java @@ -4,11 +4,6 @@ import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; import java.time.LocalDate; -/** - * Проводки - * - * DB table: OPERATION - **/ public class Operation extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java index f77984590..297218b79 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/CompanyInfo.java @@ -3,28 +3,19 @@ package ru.clearing.classes.statics.data.profile; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -/** - * DB: COMPANY_INFO - */ public class CompanyInfo extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; - private Long companyId; // Company.CompanyInfo.companyId = CompanyInfo.id - private String corporationSoleType; // ref CHAR(4), - private String countryCode; //ref CHAR(4), + private Long companyId; + private String corporationSoleType; + private String countryCode; private String description; - private String professionalSign; // ref CHAR(4), - private String legalKind; // ref CHAR(4), - private String organizationType; // ref CHAR(4), - private String residence; // ref CHAR(4), -// private String shortName; // extends Company -// private String fullName; // extends Company + private String professionalSign; + private String legalKind; + private String organizationType; + private String residence; private String shortNameEng; private String fullNameEng; -// private String tradingCode; // extends Company -// private String clearingCode; // extends Company -// private String registrationCode; // extends Company -// private String workflowStatus; // extends Company public Long getCompanyId() { return companyId; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/Contact.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/Contact.java index e2aeeeca1..f8a2024ee 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/Contact.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/Contact.java @@ -3,14 +3,11 @@ package ru.clearing.classes.statics.data.profile; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -/** - * DB: CONTACT - */ public class Contact extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private Long companyId; - private String contactType; // ref CHAR(4) + private String contactType; private String contactValue; public Long getCompanyId() { diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java index 92e9d1a2c..c7ef190fa 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocument.java @@ -5,14 +5,11 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.LocalDate; -/** - * DB: PROFILE_DOCUMENT - */ public class ProfileDocument extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; private Long companyId; - private String documentType; // ref CHAR(4) + private String documentType; private LocalDate issueDate; private String issuePlace; private String issuer; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocumentHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocumentHistory.java index c58e9108a..e42b5b9f6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocumentHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/profile/ProfileDocumentHistory.java @@ -6,9 +6,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * DB: PROFILE_DOCUMENT_HISTORY - */ public class ProfileDocumentHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/AdmittedLiabilitiesRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/AdmittedLiabilitiesRegister.java index 38b37227b..7303887a7 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/AdmittedLiabilitiesRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/AdmittedLiabilitiesRegister.java @@ -8,11 +8,6 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -/** - * Реестр обязательств, допущенных к клирингу - * - * DB table: ADMITTED_LIABILITIES_REGISTER - **/ public class AdmittedLiabilitiesRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -29,64 +24,73 @@ public class AdmittedLiabilitiesRegister extends BusinessObject { public String getCompanyFullName() { return companyFullName; } + public void setCompanyFullName(String value) { - this.companyFullName=value; + this.companyFullName = value; } public Long getSessionId() { return sessionId; } + public void setSessionId(Long value) { - this.sessionId=value; + this.sessionId = value; } public String getSecuritySymbol() { return securitySymbol; } + public void setSecuritySymbol(String value) { - this.securitySymbol=value; + this.securitySymbol = value; } public String getSecurityFullName() { return securityFullName; } + public void setSecurityFullName(String value) { - this.securityFullName=value; + this.securityFullName = value; } public Long getCompanyId() { return companyId; } + public void setCompanyId(Long value) { - this.companyId=value; + this.companyId = value; } public String getClearingCode() { return clearingCode; } + public void setClearingCode(String value) { - this.clearingCode=value; + this.clearingCode = value; } public String getAccount() { return account; } + public void setAccount(String value) { - this.account=value; + this.account = value; } public BigDecimal getAmount() { return amount; } + public void setAmount(BigDecimal value) { - this.amount=value; + this.amount = value; } public LocalDate getClearingDate() { return clearingDate; } + public void setClearingDate(LocalDate value) { - this.clearingDate=value; + this.clearingDate = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/CoveredLiabilitiesRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/CoveredLiabilitiesRegister.java index 19410c766..cdb82f782 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/CoveredLiabilitiesRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/CoveredLiabilitiesRegister.java @@ -8,11 +8,6 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -/** - * Реестр обязательств, прошедших процедуру контроля обеспечения - *

- * DB table: COVERED_LIABILITIES_REGISTER - **/ public class CoveredLiabilitiesRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoBalanceRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoBalanceRegister.java index a59a0050d..f6c2eca75 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoBalanceRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoBalanceRegister.java @@ -7,11 +7,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.Instant; -/** - * Реестр остатков ценных бумаг - * - * DB table: DEPO_BALANCE_REGISTER - **/ public class DepoBalanceRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -27,50 +22,57 @@ public class DepoBalanceRegister extends BusinessObject { public Long getCompanyId() { return companyId; } + public void setCompanyId(Long value) { - this.companyId=value; + this.companyId = value; } public Long getSessionId() { return sessionId; } + public void setSessionId(Long value) { - this.sessionId=value; + this.sessionId = value; } public String getSetHouseName() { return setHouseName; } + public void setSetHouseName(String value) { - this.setHouseName=value; + this.setHouseName = value; } public String getNumber() { return number; } + public void setNumber(String value) { - this.number=value; + this.number = value; } public String getDepoCode() { return depoCode; } + public void setDepoCode(String value) { - this.depoCode=value; + this.depoCode = value; } public BigDecimal getQuantity() { return quantity; } + public void setQuantity(BigDecimal value) { - this.quantity=value; + this.quantity = value; } public String getSecuritySymbol() { return securitySymbol; } + public void setSecuritySymbol(String value) { - this.securitySymbol=value; + this.securitySymbol = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoPaymentInstructionRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoPaymentInstructionRegister.java index 9b0b00a81..694f3eaba 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoPaymentInstructionRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/DepoPaymentInstructionRegister.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.math.BigDecimal; -/** - * Реестр распоряжений, направленных расчетному депозитарию - * - * DB table: DEPO_PAYMENT_INSTRUCTION_REGISTER - **/ public class DepoPaymentInstructionRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -24,50 +19,57 @@ public class DepoPaymentInstructionRegister extends BusinessObject { public Long getCompanyId() { return companyId; } + public void setCompanyId(Long value) { - this.companyId=value; + this.companyId = value; } public String getTradingClearingRegistryType() { return tradingClearingRegistryType; } + public void setTradingClearingRegistryType(String value) { - this.tradingClearingRegistryType=value; + this.tradingClearingRegistryType = value; } public String getTradingClearingRegistry() { return tradingClearingRegistry; } + public void setTradingClearingRegistry(String value) { - this.tradingClearingRegistry=value; + this.tradingClearingRegistry = value; } public String getCbCode() { return cbCode; } + public void setCbCode(String value) { - this.cbCode=value; + this.cbCode = value; } public BigDecimal getQuantity() { return quantity; } + public void setQuantity(BigDecimal value) { - this.quantity=value; + this.quantity = value; } public Long getDirection() { return direction; } + public void setDirection(Long value) { - this.direction=value; + this.direction = value; } public Long getSessionId() { return sessionId; } + public void setSessionId(Long value) { - this.sessionId=value; + this.sessionId = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExcludeLiabilitiesRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExcludeLiabilitiesRegister.java index d0467dc5f..20db82474 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExcludeLiabilitiesRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExcludeLiabilitiesRegister.java @@ -7,11 +7,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Реестр обязательств, исключенных из клирингового пула - * - * DB table: EXCLUDE_LIABILITIES_REGISTER - **/ public class ExcludeLiabilitiesRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -33,92 +28,105 @@ public class ExcludeLiabilitiesRegister extends BusinessObject { public Long getSessionId() { return sessionId; } + public void setSessionId(Long value) { - this.sessionId=value; + this.sessionId = value; } public LocalDate getValidFromDate() { return validFromDate; } + public void setValidFromDate(LocalDate value) { - this.validFromDate=value; + this.validFromDate = value; } public LocalDate getValidToDate() { return validToDate; } + public void setValidToDate(LocalDate value) { - this.validToDate=value; + this.validToDate = value; } public Long getCompanyId() { return companyId; } + public void setCompanyId(Long value) { - this.companyId=value; + this.companyId = value; } public String getCompanyFullName() { return companyFullName; } + public void setCompanyFullName(String value) { - this.companyFullName=value; + this.companyFullName = value; } public String getInn() { return inn; } + public void setInn(String value) { - this.inn=value; + this.inn = value; } public String getSegment() { return segment; } + public void setSegment(String value) { - this.segment=value; + this.segment = value; } public String getRegistryCode() { return registryCode; } + public void setRegistryCode(String value) { - this.registryCode=value; + this.registryCode = value; } public String getAccount() { return account; } + public void setAccount(String value) { - this.account=value; + this.account = value; } public String getRegistryStatus() { return registryStatus; } + public void setRegistryStatus(String value) { - this.registryStatus=value; + this.registryStatus = value; } public String getCurrency() { return currency; } + public void setCurrency(String value) { - this.currency=value; + this.currency = value; } public BigDecimal getSumLiabilities() { return sumLiabilities; } + public void setSumLiabilities(BigDecimal value) { - this.sumLiabilities=value; + this.sumLiabilities = value; } public LocalDate getSettlementDate() { return settlementDate; } + public void setSettlementDate(LocalDate value) { - this.settlementDate=value; + this.settlementDate = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExecutionRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExecutionRegister.java index 3258f0eab..c3bf884da 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExecutionRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ExecutionRegister.java @@ -8,11 +8,6 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -/** - * Реестр сделок - * - * DB table: EXECUTION_REGISTER - **/ public class ExecutionRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -37,121 +32,138 @@ public class ExecutionRegister extends BusinessObject { public LocalDate getTradingDate() { return tradingDate; } + public void setTradingDate(LocalDate value) { - this.tradingDate=value; + this.tradingDate = value; } public Long getExchangeExecutionId() { return exchangeExecutionId; } + public void setExchangeExecutionId(Long value) { - this.exchangeExecutionId=value; + this.exchangeExecutionId = value; } public Instant getExchangeExecutionTime() { return exchangeExecutionTime; } + public void setExchangeExecutionTime(Instant value) { - this.exchangeExecutionTime=value; + this.exchangeExecutionTime = value; } public Long getSecurityId() { return securityId; } + public void setSecurityId(Long value) { - this.securityId=value; + this.securityId = value; } public Long getSellerId() { return sellerId; } + public void setSellerId(Long value) { - this.sellerId=value; + this.sellerId = value; } public String getSellerClearingCode() { return sellerClearingCode; } + public void setSellerClearingCode(String value) { - this.sellerClearingCode=value; + this.sellerClearingCode = value; } public String getSellerTradingClearingRegister() { return sellerTradingClearingRegister; } + public void setSellerTradingClearingRegister(String value) { - this.sellerTradingClearingRegister=value; + this.sellerTradingClearingRegister = value; } public String getSellerMoneyAccount() { return sellerMoneyAccount; } + public void setSellerMoneyAccount(String value) { - this.sellerMoneyAccount=value; + this.sellerMoneyAccount = value; } public String getSellerDepoAccount() { return sellerDepoAccount; } + public void setSellerDepoAccount(String value) { - this.sellerDepoAccount=value; + this.sellerDepoAccount = value; } public Long getBuyerId() { return buyerId; } + public void setBuyerId(Long value) { - this.buyerId=value; + this.buyerId = value; } public String getBuyerClearingCode() { return buyerClearingCode; } + public void setBuyerClearingCode(String value) { - this.buyerClearingCode=value; + this.buyerClearingCode = value; } public String getBuyerTradingClearingRegister() { return buyerTradingClearingRegister; } + public void setBuyerTradingClearingRegister(String value) { - this.buyerTradingClearingRegister=value; + this.buyerTradingClearingRegister = value; } public String getBuyerMoneyAccount() { return buyerMoneyAccount; } + public void setBuyerMoneyAccount(String value) { - this.buyerMoneyAccount=value; + this.buyerMoneyAccount = value; } public String getBuyerDepoAccount() { return buyerDepoAccount; } + public void setBuyerDepoAccount(String value) { - this.buyerDepoAccount=value; + this.buyerDepoAccount = value; } public BigDecimal getAmount() { return amount; } + public void setAmount(BigDecimal value) { - this.amount=value; + this.amount = value; } public BigDecimal getQuantity() { return quantity; } + public void setQuantity(BigDecimal value) { - this.quantity=value; + this.quantity = value; } public LocalDate getClearingDate() { return clearingDate; } + public void setClearingDate(LocalDate value) { - this.clearingDate=value; + this.clearingDate = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/GatewayResult.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/GatewayResult.java index 3180a52a8..2903e0bee 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/GatewayResult.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/GatewayResult.java @@ -3,11 +3,6 @@ package ru.clearing.classes.statics.data.register; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -/** - * Результат запроса к gateway - *

- * DB table: GATEWAY_RESULT - **/ public class GatewayResult extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/LiabilitiesRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/LiabilitiesRegister.java index 83b44a823..2a5e1606a 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/LiabilitiesRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/LiabilitiesRegister.java @@ -7,11 +7,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Реестр учета обязательств - * - * DB table: LIABILITIES_REGISTER - **/ public class LiabilitiesRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -32,92 +27,105 @@ public class LiabilitiesRegister extends BusinessObject { public Long getSessionId() { return sessionId; } + public void setSessionId(Long value) { - this.sessionId=value; + this.sessionId = value; } public LocalDate getValidFromDate() { return validFromDate; } + public void setValidFromDate(LocalDate value) { - this.validFromDate=value; + this.validFromDate = value; } public LocalDate getValidToDate() { return validToDate; } + public void setValidToDate(LocalDate value) { - this.validToDate=value; + this.validToDate = value; } public Long getCompanyId() { return companyId; } + public void setCompanyId(Long value) { - this.companyId=value; + this.companyId = value; } public String getCompanyFullName() { return companyFullName; } + public void setCompanyFullName(String value) { - this.companyFullName=value; + this.companyFullName = value; } public String getInn() { return inn; } + public void setInn(String value) { - this.inn=value; + this.inn = value; } public String getSegment() { return segment; } + public void setSegment(String value) { - this.segment=value; + this.segment = value; } public String getRegistryCode() { return registryCode; } + public void setRegistryCode(String value) { - this.registryCode=value; + this.registryCode = value; } public String getAccount() { return account; } + public void setAccount(String value) { - this.account=value; + this.account = value; } public String getRegistryStatus() { return registryStatus; } + public void setRegistryStatus(String value) { - this.registryStatus=value; + this.registryStatus = value; } public String getCurrency() { return currency; } + public void setCurrency(String value) { - this.currency=value; + this.currency = value; } public BigDecimal getSumLiabilities() { return sumLiabilities; } + public void setSumLiabilities(BigDecimal value) { - this.sumLiabilities=value; + this.sumLiabilities = value; } public LocalDate getSettlementDate() { return settlementDate; } + public void setSettlementDate(LocalDate value) { - this.settlementDate=value; + this.settlementDate = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java index 171dbae13..33d1437b5 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyBalanceRegister.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.math.BigDecimal; -/** - * Реестр остатков денежных средств - *

- * DB table: MONEY_BALANCE_REGISTER - **/ public class MoneyBalanceRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyPaymentInstructionRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyPaymentInstructionRegister.java index 75b89ec18..4f24f24f1 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyPaymentInstructionRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/MoneyPaymentInstructionRegister.java @@ -6,11 +6,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Реестр распоряжений, направленных расчетной организации - * - * DB table: MONEY_PAYMENT_INSTRUCTION_REGISTER - **/ public class MoneyPaymentInstructionRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -25,50 +20,57 @@ public class MoneyPaymentInstructionRegister extends BusinessObject { public String getCreditLegAccount() { return creditLegAccount; } + public void setCreditLegAccount(String value) { - this.creditLegAccount=value; + this.creditLegAccount = value; } public BigDecimal getCreditLegAmount() { return creditLegAmount; } + public void setCreditLegAmount(BigDecimal value) { - this.creditLegAmount=value; + this.creditLegAmount = value; } public String getCreditLegCurrencyCode() { return creditLegCurrencyCode; } + public void setCreditLegCurrencyCode(String value) { - this.creditLegCurrencyCode=value; + this.creditLegCurrencyCode = value; } public String getDebitLegAccount() { return debitLegAccount; } + public void setDebitLegAccount(String value) { - this.debitLegAccount=value; + this.debitLegAccount = value; } public String getSender() { return sender; } + public void setSender(String value) { - this.sender=value; + this.sender = value; } public String getAddressee() { return addressee; } + public void setAddressee(String value) { - this.addressee=value; + this.addressee = value; } public LocalDate getClearingDate() { return clearingDate; } + public void setClearingDate(LocalDate value) { - this.clearingDate=value; + this.clearingDate = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/PairSdf.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/PairSdf.java index 96896d0c6..c7a729313 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/PairSdf.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/PairSdf.java @@ -1,13 +1,8 @@ package ru.clearing.classes.statics.data.register; -//todo в какой пэкэдж - в data.sdf; или data.registers;? + import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -/** - * Пары файлов - * - * DB table: PAIR_SDF - **/ public class PairSdf extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ReportRegister.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ReportRegister.java index b15481ac9..6cda6e948 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ReportRegister.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/register/ReportRegister.java @@ -5,9 +5,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.time.LocalDate; -/** - * DB table: REPORT_REGISTER - */ public class ReportRegister extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java index fe5314dba..24f31117d 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/Registry.java @@ -6,11 +6,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Регистр активов, обязательств и требований УК - *

- * DB table: REGISTRY - **/ public class Registry extends BusinessObject implements Cloneable { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -433,7 +428,7 @@ public class Registry extends BusinessObject implements Cloneable { clone.setId(null); return clone; } catch (CloneNotSupportedException e) { - throw new RuntimeException("never", e); // it is Cloneable + throw new RuntimeException("never", e); } } } diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/RegistryHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/RegistryHistory.java index 5650de6cf..5ce328708 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/RegistryHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/RegistryHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Регистр активов, обязательств и требований УК - *

- * DB table: REGISTRY_HISTORY - **/ public class RegistryHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistry.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistry.java index 41ebf3d12..6faf24001 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistry.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistry.java @@ -4,11 +4,6 @@ import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -/** - * Торгово-клиринговый регистр - *

- * DB table: TRADING_CLEARING_REGISTRY - **/ public class TradingClearingRegistry extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryHistory.java index a8b77b902..bb7c4beff 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Торгово-клиринговый регистр - * - * DB table: TRADING_CLEARING_REGISTRY_HISTORY - **/ public class TradingClearingRegistryHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryList.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryList.java index a506cc37f..f25776e51 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryList.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryList.java @@ -3,11 +3,6 @@ package ru.clearing.classes.statics.data.registry; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -/** - * Список счетов ТКР - *

- * DB table: TRADING_CLEARING_REGISTRY_LIST - **/ public class TradingClearingRegistryList extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryListHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryListHistory.java index 5c8f6878f..c7cae085b 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryListHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/registry/TradingClearingRegistryListHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Список счетов ТКР - *

- * DB table: TRADING_CLEARING_REGISTRY_LIST_HISTORY - **/ public class TradingClearingRegistryListHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/ClearingCalendar.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/ClearingCalendar.java index 0e74c8314..fe3e0d096 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/ClearingCalendar.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/ClearingCalendar.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.time.LocalDate; -/** - * Торговые и неторговые дни - *

- * DB table: CLEARING_CALENDAR - **/ public class ClearingCalendar extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Launcher.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Launcher.java index 987ee2f5b..87f7d3890 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Launcher.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Launcher.java @@ -3,11 +3,6 @@ package ru.clearing.classes.statics.data.scheduler; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -/** - * Запуск задачи - *

- * DB table: LAUNCHER - **/ public class Launcher extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java index 637bc4925..77b04ba4d 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/Planner.java @@ -6,11 +6,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.time.LocalDate; import java.time.LocalTime; -/** - * Расписание на все даты - *

- * DB table: PLANNER - **/ public class Planner extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java index 25c71cfab..3e2b065d2 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerAllToday.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.LocalDate; import java.time.LocalTime; -/** - * Расписание на текущий день - *

- * DB table: PLANNER_ALL_TODAY - **/ public class PlannerAllToday extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerTemplate.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerTemplate.java index 89d523217..1c3437904 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerTemplate.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/scheduler/PlannerTemplate.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.time.LocalTime; -/** - * Постоянное расписание операционного дня - *

- * DB table: PLANNER_TEMPLATE - **/ public class PlannerTemplate extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java index af6a5d726..a01c4fd91 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf01.java @@ -8,11 +8,6 @@ import ru.spcex.platform.classes.base.interfaces.WithCurrency; import ru.spcex.platform.classes.base.interfaces.WithFileName; import ru.spcex.platform.classes.base.interfaces.WithMarket; -/** - * ДФ-01 Информации о денежных средствах, находящихся на торговых банковских счетах участников клиринга - *

- * DB table: S_DF01 - **/ public class SDf01 extends SpcexObjectBase implements WithAccount, WithMarket, WithFileName, WithCurrency { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java index 2b18ac01f..af5bf5c86 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf02.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.time.Instant; -/** - * ДФ-02 Уведомление об исполнении операции загрузки денежных средств или уведомление об ошибке - *

- * DB table: S_DF02 - **/ public class SDf02 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java index aa4040012..1ecb90e1e 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf03.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-03 Реестр платежных поручений - *

- * DB table: S_DF03 - **/ public class SDf03 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf04.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf04.java index 5c4b0fe76..a4694ed92 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf04.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf04.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-04 Подтверждение проведения расчетов - * - * DB table: S_DF03 - **/ public class SDf04 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf05.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf05.java index 0812649c4..b9ac815d7 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf05.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf05.java @@ -8,11 +8,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalTime; -/** - * ДФ-05 Уведомление о завершении расчетов в ПРЦ - * - * DB table: S_DF05 - */ public class SDf05 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java index 610d5a2d3..ae8cc8ffa 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf06.java @@ -7,11 +7,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.interfaces.WithCurrency; import ru.spcex.platform.classes.base.interfaces.WithFileName; -/** - * ДФ-06 Запрос на зачисление/списание денежных средств - *

- * DB table: S_DF06 - **/ public class SDf06 extends SpcexObjectBase implements WithFileName, WithCurrency { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -155,8 +150,9 @@ public class SDf06 extends SpcexObjectBase implements WithFileName, WithCurrency public String getPay_val() { return pay_val; } + public void setPay_val(String value) { - this.pay_val=value; + this.pay_val = value; } @Override diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf07.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf07.java index 23a7ebf55..c89d0f11a 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf07.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf07.java @@ -7,11 +7,6 @@ import java.math.BigDecimal; import java.time.Instant; import java.time.LocalDate; -/** - * ДФ-07 Ответ на запрос по зачислению/списанию денежных средств - *

- * DB table: S_DF07 - **/ public class SDf07 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java index 7a46d1be1..529185954 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf08.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-08 Загрузка счетов с остатками - *

- * DB table: S_DF08 - **/ public class SDf08 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java index d227c2850..687701c2f 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf09.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-09 Ответ на загрузку счетов с остатками - *

- * DB table: S_DF08 - **/ public class SDf09 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java index 5a5c34987..81115dc3c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf10.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * sDf10 - ДФ-10 Запрос на зачисление/списание ценных бумаг - *

- * DB table: S_DF10 - */ public class SDf10 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java index 1911ddbd9..2dfc9569e 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf11.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-11 Ответ на Запрос на зачисление/списание ценных бумаг - *

- * DB table: S_DF11 - **/ public class SDf11 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java index ad112ef7d..affc2dd03 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf12.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-12 Распоряжение на проведение операций по итогам клиринга - *

- * DB table: S_DF12 - **/ public class SDf12 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf13.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf13.java index 0dcef4a72..8d0c5dbc9 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf13.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf13.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-13 Уведомление о статусе исполнения или мотивированный отказ - *

- * DB table: S_DF13 - **/ public class SDf13 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf14.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf14.java index 40a86c01e..3d5b44a7a 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf14.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf14.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-14 Уведомление о завершении расчетов - *

- * DB table: S_DF14 - **/ public class SDf14 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java index 47a8dda6f..0d2cf199a 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf16.java @@ -9,11 +9,6 @@ import ru.spcex.platform.classes.base.interfaces.WithSum; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-16 Формат запроса по возврату депозита или дозачисление/списание денежных средств - *

- * DB table: S_DF16 - **/ @Deprecated public class SDf16 extends SpcexObjectBase implements WithAccount, WithMarket, WithSum { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java index 635cea099..87c110f9c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf17.java @@ -7,11 +7,6 @@ import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-17 Формат ответа на запрос по возврату депозита или дозачисление/списание денежных средств - *

- * DB table: S_DF17 - **/ @Deprecated public class SDf17 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java index 371b64f6e..2add1aa4b 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf18.java @@ -7,11 +7,6 @@ import ru.spcex.platform.classes.base.interfaces.WithAccount; import java.math.BigDecimal; import java.time.Instant; -/** - * ДФ-18 Из КС в ПРЦ Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие) - *

- * DB table: S_DF18 - **/ @Deprecated public class SDf18 extends SpcexObjectBase implements WithAccount { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf20.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf20.java index b350cace0..7a233f4f6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf20.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf20.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-20 Отчет об исполнении поручения на зачисление/списание ценных бумаг - *

- * DB table: S_DF20 - **/ public class SDf20 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf21.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf21.java index ba561acc0..762b89f50 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf21.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf21.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-21 Отчет об операциях - *

- * DB table: S_DF21 - **/ public class SDf21 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf51.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf51.java index 04889c6eb..faac63ea6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf51.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf51.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-51 Запрос остатков по всем счетам - * - * DB table: S_DF51 - **/ public class SDf51 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -21,29 +16,33 @@ public class SDf51 extends SpcexObjectBase { public String getNumber() { return number; } + public void setNumber(String value) { - this.number=value; + this.number = value; } public String getDatetime() { return datetime; } + public void setDatetime(String value) { - this.datetime=value; + this.datetime = value; } public Instant getGenerationTime() { return generationTime; } + public void setGenerationTime(Instant value) { - this.generationTime=value; + this.generationTime = value; } public Long getGenerationId() { return generationId; } + public void setGenerationId(Long value) { - this.generationId=value; + this.generationId = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf52.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf52.java index 30be11614..700ad57bd 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf52.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf52.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-52 Из ПРЦ в КС Информация о состоянии счета (блокировка/разблокировка/закрытие/открытие) - * - * DB table: S_DF52 - **/ public class SDf52 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -26,64 +21,73 @@ public class SDf52 extends SpcexObjectBase { public String getAccount() { return account; } + public void setAccount(String value) { - this.account=value; + this.account = value; } public String getAcc_name() { return acc_name; } + public void setAcc_name(String value) { - this.acc_name=value; + this.acc_name = value; } public String getAcc_type() { return acc_type; } + public void setAcc_type(String value) { - this.acc_type=value; + this.acc_type = value; } public String getDeal() { return deal; } + public void setDeal(String value) { - this.deal=value; + this.deal = value; } public String getDate() { return date; } + public void setDate(String value) { - this.date=value; + this.date = value; } public Long getStatus() { return status; } + public void setStatus(Long value) { - this.status=value; + this.status = value; } public String getFileName() { return fileName; } + public void setFileName(String value) { - this.fileName=value; + this.fileName = value; } public Instant getGenerationTime() { return generationTime; } + public void setGenerationTime(Instant value) { - this.generationTime=value; + this.generationTime = value; } public Long getGenerationId() { return generationId; } + public void setGenerationId(Long value) { - this.generationId=value; + this.generationId = value; } } \ No newline at end of file diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf53.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf53.java index dce6ce2b8..a78570f0f 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf53.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf53.java @@ -4,11 +4,6 @@ import java.time.Instant; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -/** - * ДФ-53 Квитанция о получении информации о состоянии счета (блокировка/разблокировка/закрытие/открытие) - *

- * DB table: S_DF53 - **/ public class SDf53 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf54.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf54.java index f8e5f287a..c467b502b 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf54.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf54.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; import java.time.LocalDate; -/** - * ДФ-54 Вывод свободных средств для инициаторов категории В с клирингового счета 30414 - *

- * DB table: S_DF54 - **/ public class SDf54 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf55.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf55.java index e9bbbc102..ccaea790c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf55.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf55.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; import java.time.LocalDate; -/** - * ДФ-55 Квитанция об обработке ДФ-54 - *

- * DB table: S_DF55 - **/ public class SDf55 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf56.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf56.java index 54ac3ecf3..896d08991 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf56.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf56.java @@ -5,11 +5,6 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.time.Instant; -/** - * ДФ-56 Запрос транзакций за период - *

- * DB table: S_DF56 - **/ public class SDf56 extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf57.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf57.java index e96293521..e19583fd6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf57.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/sdf/SDf57.java @@ -5,11 +5,6 @@ import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.interfaces.WithCurrency; -/** - * ДФ-57 Список транзакций о списании/зачислении за период по всем счетам (ТБС и КС) - *

- * DB table: S_DF57 - **/ public class SDf57 extends SpcexObjectBase implements WithCurrency { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurity.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurity.java index 74cd59f45..294e3a92e 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurity.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurity.java @@ -4,11 +4,6 @@ import ru.clearing.classes.ConstSerializable; import java.math.BigDecimal; -/** - * Валютные пары - *

- * DB table: CURRENCY_PAIR_SECURITY - **/ public class CurrencyPairSecurity extends Security { private static final long serialVersionUID = ConstSerializable.serialVersionUID; @@ -17,14 +12,7 @@ public class CurrencyPairSecurity extends Security { private String code; private String settlementType; private String clearingOrganization; -// private String settlementOrganization; private Long securityId; - // extend: private String securitySymbol; - // extend: private String shortName; - // extend: private String fullName; - // extend: private String shortNameEng; - // extend: private String fullNameEng; - // extend: private String workflowStatus; public BigDecimal getBaseUnitSize() { return baseUnitSize; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurityHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurityHistory.java index b6ece9924..5e72fbb5b 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurityHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/CurrencyPairSecurityHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Валютные пары - *

- * DB table: CURRENCY_PAIR_SECURITY_HISTORY - **/ public class CurrencyPairSecurityHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurity.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurity.java index 2ecf84c87..448ec80ea 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurity.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurity.java @@ -5,11 +5,6 @@ import ru.clearing.classes.statics.data.security.Security; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Инструменты Денежного рынка - *

- * DB table: MONEY_MARKET_SECURITY - **/ public class MoneyMarketSecurity extends Security { private Long securityId; private String description; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurityHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurityHistory.java index 98474ad7c..af5b587d6 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurityHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/MoneyMarketSecurityHistory.java @@ -5,9 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * DB table: MONEY_MARKET_SECURITY_HISTORY - **/ public class MoneyMarketSecurityHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/Security.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/Security.java index 2b9160b21..8a10fa6b2 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/Security.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/Security.java @@ -6,11 +6,6 @@ import ru.spcex.platform.classes.base.interfaces.WithInstrumentType; import ru.spcex.platform.classes.base.interfaces.WithSecuritySymbol; import ru.spcex.platform.classes.base.interfaces.WithWorkflowStatus; -/** - * Инструменты - *

- * DB table: SECURITY - **/ public class Security extends BusinessObject implements WithWorkflowStatus, WithInstrumentType, WithSecuritySymbol { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/SecurityHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/SecurityHistory.java index ad1e1759f..d5f190c62 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/SecurityHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/SecurityHistory.java @@ -3,11 +3,7 @@ package ru.clearing.classes.statics.data.security; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Инструменты - * - * DB table: SECURITY_HISTORY - **/ + public class SecurityHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/TradedMoneyMarketSecurity.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/TradedMoneyMarketSecurity.java index e412e01c8..7358cdf81 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/TradedMoneyMarketSecurity.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/security/TradedMoneyMarketSecurity.java @@ -3,11 +3,6 @@ package ru.clearing.classes.statics.data.security; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -/** - * Инструменты денежного рынка, учавствующие в сделках - *

- * DB table: TRADED_MONEY_MARKET_SECURITY - **/ public class TradedMoneyMarketSecurity extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java index 5a165da5f..1d5688b9d 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/statement/Statement.java @@ -6,11 +6,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.math.BigDecimal; import java.time.LocalDate; -/** - * Денежные средства от расчетной организации - *

- * DB table: STATEMENT - **/ public class Statement extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/User.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/User.java index 54de28f63..cff27790d 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/User.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/User.java @@ -3,12 +3,6 @@ package ru.clearing.classes.statics.data.user; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessObject; -/** - * Пользователь - * UserCls - *

- * DB table: USER_CLR - **/ public class User extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java index 6dd645a25..f15377f6a 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnect.java @@ -6,11 +6,6 @@ import ru.clearing.classes.objects.BusinessObject; import java.time.Instant; import java.time.LocalDate; -/** - * Активность пользователей в системе - *

- * DB table: USER_CONNECT - **/ public class UserConnect extends BusinessObject { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnectHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnectHistory.java index b8d32cb58..fc159288e 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnectHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserConnectHistory.java @@ -3,11 +3,7 @@ package ru.clearing.classes.statics.data.user; import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Активность пользователей в системе - * - * DB table: USER_CONNECT_HISTORY - **/ + public class UserConnectHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserHistory.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserHistory.java index 5c8872b62..061a5c5a1 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserHistory.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserHistory.java @@ -5,11 +5,6 @@ import ru.clearing.classes.objects.BusinessEvent; import java.io.Serial; -/** - * Изменение состояния объекта Пользователь - *

- * DB table: USER_CLR_HISTORY - **/ public class UserHistory extends BusinessEvent { @Serial private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserRoleSession.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserRoleSession.java index 7180e89ba..ebd75281c 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserRoleSession.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserRoleSession.java @@ -3,11 +3,6 @@ package ru.clearing.classes.statics.data.user; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -/** - * Набор ролей - *

- * DB table: USER_ROLE_SESSION - **/ public class UserRoleSession extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserSettings.java b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserSettings.java index fd358fd82..c87cdfc51 100644 --- a/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserSettings.java +++ b/clearing-parent/classes/src/main/java/ru/clearing/classes/statics/data/user/UserSettings.java @@ -3,11 +3,6 @@ package ru.clearing.classes.statics.data.user; import ru.clearing.classes.ConstSerializable; import ru.spcex.platform.classes.base.SpcexObjectBase; -/** - * Настройки пользователя - *

- * DB table: USER_SETTINGS - **/ public class UserSettings extends SpcexObjectBase { private static final long serialVersionUID = ConstSerializable.serialVersionUID; diff --git a/clearing-parent/cleaning-builders/src/main/java/ru/spcex/clearing/scheduler/PlannerAllTodayBuilder.java b/clearing-parent/cleaning-builders/src/main/java/ru/spcex/clearing/scheduler/PlannerAllTodayBuilder.java index 7949803d8..fc78ec576 100644 --- a/clearing-parent/cleaning-builders/src/main/java/ru/spcex/clearing/scheduler/PlannerAllTodayBuilder.java +++ b/clearing-parent/cleaning-builders/src/main/java/ru/spcex/clearing/scheduler/PlannerAllTodayBuilder.java @@ -28,12 +28,9 @@ public class PlannerAllTodayBuilder { private PlannerAllTodayBuilder() { } - //пока для clearingCalendar нет сеттера append, если появится нужно поправить ClearingCalendarService.deleteFromPlannerAllTodayMap() - //из-за поля this.parent = Parent.Template.getKey(); public PlannerAllTodayBuilder append(PlannerTemplate plannerTemplate) { this.task = plannerTemplate.getTask(); this.taskTime = plannerTemplate.getTaskTime(); -// this.clearingDate = LocalDate.now(); this.market = plannerTemplate.getMarket(); this.taskStatus = plannerTemplate.getTaskStatus(); this.section = plannerTemplate.getSection(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java index 9271670e1..cef9e5ccb 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/ValidationConfig.java @@ -144,13 +144,6 @@ public class ValidationConfig { this.imdgProvider = imdgProvider; } - //@Bean("adminRoleVerification") - //public UserRoleVerification adminRoleVerification() { - // return new UserRoleVerification( - // imdgProvider, null, UserRole.Admin, ClearingError.GeneralError //fixme no UserVerifyDenial error - // ); - //} - @Bean("executionDepositValidator") public BiFunction executionDepositValidator(ImdgProvider imdgProvider) { return (category, execDeposit) -> { @@ -163,10 +156,10 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_AccountBalance, imdgAccountBalance); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - ExecutionDepositValidationRule.ClearingIsAllowed, - ExecutionDepositValidationRule.AccountIsNotBlocked, - ExecutionDepositValidationRule.CompanyIsNotBlocked, - ExecutionDepositValidationRule.FinancialObligationSecurity); + ExecutionDepositValidationRule.ClearingIsAllowed, + ExecutionDepositValidationRule.AccountIsNotBlocked, + ExecutionDepositValidationRule.CompanyIsNotBlocked, + ExecutionDepositValidationRule.FinancialObligationSecurity); }; } @@ -184,10 +177,10 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, currencyPairSecurityImdg); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - STradesValidationRule.SecurityPresentFond, - STradesValidationRule.CompanyPresent, - STradesValidationRule.CounterCompanyPresent, - STradesValidationRule.TradingClearingRegistryPresent); + STradesValidationRule.SecurityPresentFond, + STradesValidationRule.CompanyPresent, + STradesValidationRule.CounterCompanyPresent, + STradesValidationRule.TradingClearingRegistryPresent); }; } @@ -202,10 +195,10 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - STradesValidationRule.SecurityPresentDeposit, - STradesValidationRule.CompanyPresent, - STradesValidationRule.CounterCompanyPresent, - STradesValidationRule.TradingClearingRegistryPresent); + STradesValidationRule.SecurityPresentDeposit, + STradesValidationRule.CompanyPresent, + STradesValidationRule.CounterCompanyPresent, + STradesValidationRule.TradingClearingRegistryPresent); }; } @@ -222,10 +215,10 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - STradesValidationRule.SecurityPresentCurrencyPair, - STradesValidationRule.CompanyPresent, - STradesValidationRule.CounterCompanyPresent, - STradesValidationRule.TradingClearingRegistryPresent); + STradesValidationRule.SecurityPresentCurrencyPair, + STradesValidationRule.CompanyPresent, + STradesValidationRule.CounterCompanyPresent, + STradesValidationRule.TradingClearingRegistryPresent); }; } @@ -242,12 +235,13 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - RegistryStep3ValidationRule.ClearingAvailable, - RegistryStep3ValidationRule.AccountActive, - RegistryStep3ValidationRule.CompanyActive, - RegistryStep3ValidationRule.TradingClearingRegistryActive); + RegistryStep3ValidationRule.ClearingAvailable, + RegistryStep3ValidationRule.AccountActive, + RegistryStep3ValidationRule.CompanyActive, + RegistryStep3ValidationRule.TradingClearingRegistryActive); }; } + @Bean("sdf01Validator") public Function sdf01Validator() { return sDf01 -> { @@ -257,12 +251,12 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - Sdf01ValidationRule.CompanyPresent, - Sdf01ValidationRule.AccountPresent, - Sdf01ValidationRule.CurrencyCode, - Sdf01ValidationRule.CurrentDateOnly, - MarketIsUValidationRule.instance, - Sdf01ValidationRule.accountType); + Sdf01ValidationRule.CompanyPresent, + Sdf01ValidationRule.AccountPresent, + Sdf01ValidationRule.CurrencyCode, + Sdf01ValidationRule.CurrentDateOnly, + MarketIsUValidationRule.instance, + Sdf01ValidationRule.accountType); }; } @@ -276,10 +270,10 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Currency, imdgCurrency); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - Sdf57ValidationRule.CompanyDebOrCredPresent, - Sdf57ValidationRule.AccountDebOrCredPresent, - Sdf57ValidationRule.AccountAndCompanyMatch, - CurrencyCodeValidationRule.get(ClearingError.CompanyDebitCheck) + Sdf57ValidationRule.CompanyDebOrCredPresent, + Sdf57ValidationRule.AccountDebOrCredPresent, + Sdf57ValidationRule.AccountAndCompanyMatch, + CurrencyCodeValidationRule.get(ClearingError.CompanyDebitCheck) ); }; } @@ -299,11 +293,11 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_SDf20, imdgSdf20); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - CompanyByTradingCodeValidationRule.instance(SDf21::getDepoCodeCl), - Sdf21ValidationRule.AccountPresent, - SecurityBySecurityCodeValidationRule.instance(SDf21::getSecurityCode), - Sdf21ValidationRule.TransactionNumberProcessed, - Sdf21ValidationRule.TransactionNumberForSdf20 + CompanyByTradingCodeValidationRule.instance(SDf21::getDepoCodeCl), + Sdf21ValidationRule.AccountPresent, + SecurityBySecurityCodeValidationRule.instance(SDf21::getSecurityCode), + Sdf21ValidationRule.TransactionNumberProcessed, + Sdf21ValidationRule.TransactionNumberForSdf20 ); }; } @@ -318,11 +312,11 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Currency, imdgCurrency); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - Sdf01NewValidationRule.CompanyPresent, - Sdf01NewValidationRule.AccountType, - Sdf01NewValidationRule.AccountPresent, - CurrencyCodeValidationRule.get(ClearingError.CompanyDebitCheck), - Sdf01NewValidationRule.DatIsCurrentDt + Sdf01NewValidationRule.CompanyPresent, + Sdf01NewValidationRule.AccountType, + Sdf01NewValidationRule.AccountPresent, + CurrencyCodeValidationRule.get(ClearingError.CompanyDebitCheck), + Sdf01NewValidationRule.DatIsCurrentDt ); }; } @@ -338,7 +332,7 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurityImdg); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - Sdf08NewValidationRule.AccountPresent, Sdf08NewValidationRule.InstrumentPresent + Sdf08NewValidationRule.AccountPresent, Sdf08NewValidationRule.InstrumentPresent ); }; } @@ -358,14 +352,14 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Currency, imdgCurrency); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - Sdf06NewValidationRule.Fields, - Sdf06NewValidationRule.CompanySymbolAndCompanyPresent, - Sdf06NewValidationRule.AccountPresent, - Sdf06NewValidationRule.CompanyAndAccountMatch, - Sdf06NewValidationRule.Session, - Sdf06NewValidationRule.Balance, - Sdf06NewValidationRule.TcrPresent, - CurrencyCodeValidationRule.get(ClearingError.CompanyDebitCheck) + Sdf06NewValidationRule.Fields, + Sdf06NewValidationRule.CompanySymbolAndCompanyPresent, + Sdf06NewValidationRule.AccountPresent, + Sdf06NewValidationRule.CompanyAndAccountMatch, + Sdf06NewValidationRule.Session, + Sdf06NewValidationRule.Balance, + Sdf06NewValidationRule.TcrPresent, + CurrencyCodeValidationRule.get(ClearingError.CompanyDebitCheck) ); }; } @@ -378,9 +372,9 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Account, imdgAccount); context.addImdg(IMDGDistributedNames.Map_DepoAccount, imdgDepoAccount); context.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry); - context.addImdg(IMDGDistributedNames.Map_FixedIncomeSecurity , fixedIncomeSecurityImdg); - context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity , imdgMoneyMarketSecurity); - context.addImdg(IMDGDistributedNames.Map_EquitySecurity , equitySecurityImdg); + context.addImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurityImdg); + context.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity); + context.addImdg(IMDGDistributedNames.Map_EquitySecurity, equitySecurityImdg); context.addImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, currencyPairSecurityImdg); context.addImdg(IMDGDistributedNames.Map_CompanySymbols, imdgCompanySymbols); context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany); @@ -388,13 +382,13 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Session, imdgSession); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - Sdf10ValidationRule.DepoAccountPresent, - CompanyByTradingCodeValidationRule.instance(SDf10::getDepoCode), - Sdf10ValidationRule.CompanyStatus, - Sdf06NewValidationRule.Session, - Sdf10ValidationRule.TcrPresent, - SecurityBySecurityCodeValidationRule.instance(SDf10::getSecurityCode), - Sdf10ValidationRule.Balance + Sdf10ValidationRule.DepoAccountPresent, + CompanyByTradingCodeValidationRule.instance(SDf10::getDepoCode), + Sdf10ValidationRule.CompanyStatus, + Sdf06NewValidationRule.Session, + Sdf10ValidationRule.TcrPresent, + SecurityBySecurityCodeValidationRule.instance(SDf10::getSecurityCode), + Sdf10ValidationRule.Balance ); }; } @@ -408,11 +402,11 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ctgrImdg); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - new PresentById(IMDGDistributedNames.Map_Registry, ClearingError.RecordNotFound, true), - ReturnDepositValidationRule.RgsWronCodeCheck, - ReturnDepositValidationRule.CategoryCheck, - ReturnDepositValidationRule.BalanceCheck, - ReturnDepositValidationRule.Dm_Check + new PresentById(IMDGDistributedNames.Map_Registry, ClearingError.RecordNotFound, true), + ReturnDepositValidationRule.RgsWronCodeCheck, + ReturnDepositValidationRule.CategoryCheck, + ReturnDepositValidationRule.BalanceCheck, + ReturnDepositValidationRule.Dm_Check ); }; } @@ -425,8 +419,8 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Registry, imdgRegistry); context.setLogPrefix(r -> "groupId=%d refundDate=%s".formatted(r.getGroupId(), r.getRefundDate())); return new ValidatorImpl<>(context, - RefundDateValidationRule.Fields, - RefundDateValidationRule.RegistriesPresent + RefundDateValidationRule.Fields, + RefundDateValidationRule.RegistriesPresent ); }; } @@ -439,12 +433,12 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Registry, imdgRegistry); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - StatusExtractValidationRule.Fields, - new PresentById(IMDGDistributedNames.Map_Registry, ClearingError.RecordNotFound, true), - StatusExtractValidationRule.RegistryCodeCheck, - StatusExtractValidationRule.ContractCheck, - StatusExtractValidationRule.RequestStatusValid, - StatusExtractValidationRule.RegistryStatusValid + StatusExtractValidationRule.Fields, + new PresentById(IMDGDistributedNames.Map_Registry, ClearingError.RecordNotFound, true), + StatusExtractValidationRule.RegistryCodeCheck, + StatusExtractValidationRule.ContractCheck, + StatusExtractValidationRule.RequestStatusValid, + StatusExtractValidationRule.RegistryStatusValid ); }; } @@ -461,13 +455,13 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_Company, imdgCompany); context.setLogPrefix(LogPrefixId.INSTANCE); return new ValidatorImpl<>(context, - IdentificationFundsValidationRule.Fields, - new PresentById(IMDGDistributedNames.Map_Registry, ClearingError.RecordNotFound, true), - IdentificationFundsValidationRule.RegistryCodeCheck, - IdentificationFundsValidationRule.BalanceCheck, - IdentificationFundsValidationRule.TcrCheck, - IdentificationFundsValidationRule.AssetsCheck, - new AnltAccLoad(ClearingError.GeneralError) + IdentificationFundsValidationRule.Fields, + new PresentById(IMDGDistributedNames.Map_Registry, ClearingError.RecordNotFound, true), + IdentificationFundsValidationRule.RegistryCodeCheck, + IdentificationFundsValidationRule.BalanceCheck, + IdentificationFundsValidationRule.TcrCheck, + IdentificationFundsValidationRule.AssetsCheck, + new AnltAccLoad(ClearingError.GeneralError) ); }; } @@ -481,17 +475,14 @@ public class ValidationConfig { context.addImdg(IMDGDistributedNames.Map_InOutDirectionDictionary, imdgInOutDirection); context.setLogPrefix(r -> "contract=%s refundDate=%s".formatted(r.getContract(), r.getRefundDate())); return new ValidatorImpl<>(context, - FieldRequiredRule.instance("contract", RegistrySplitDepositActionRequest::getContract, ClearingError.RequiredFieldEmpty), - FieldRequiredRule.instance("refundDate", RegistrySplitDepositActionRequest::getRefundDate, ClearingError.RequiredFieldEmpty), -// IdPresentRule.instance("direction", RegistrySplitDepositActionRequest::getDirection, -// IMDGDistributedNames.Map_InOutDirectionDictionary, InOutDirectionDictionary.class, -// ClearingError.RequiredFieldEmpty, ClearingError.DictionaryNotFound, false), - DictionaryPresentRule.instance("direction", RegistrySplitDepositActionRequest::getDirection, - IMDGDistributedNames.Map_InOutDirectionDictionary, InOutDirectionDictionary.class, - ClearingError.RequiredFieldEmpty, ClearingError.DictionaryNotFound, false), - SplitDepositRequestValidationRule.PositiveAmount, - SplitDepositRequestValidationRule.CrossvalidateByRegistry, - SplitDepositRequestValidationRule.LoadContractIndexes + FieldRequiredRule.instance("contract", RegistrySplitDepositActionRequest::getContract, ClearingError.RequiredFieldEmpty), + FieldRequiredRule.instance("refundDate", RegistrySplitDepositActionRequest::getRefundDate, ClearingError.RequiredFieldEmpty), + DictionaryPresentRule.instance("direction", RegistrySplitDepositActionRequest::getDirection, + IMDGDistributedNames.Map_InOutDirectionDictionary, InOutDirectionDictionary.class, + ClearingError.RequiredFieldEmpty, ClearingError.DictionaryNotFound, false), + SplitDepositRequestValidationRule.PositiveAmount, + SplitDepositRequestValidationRule.CrossvalidateByRegistry, + SplitDepositRequestValidationRule.LoadContractIndexes ); }; } @@ -506,23 +497,23 @@ public class ValidationConfig { ctx.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry); ctx.addImdg(IMDGDistributedNames.Map_TradingClearingRegistryList, imdgTradingClearingRegistryList); return new ValidatorImpl<>(ctx, - PaymentOutboundValidationRule.RequiredFields, - IdPresentRule.instance("senderId", - PIClearingOutbondActionNewRequest::getSenderId, - IMDGDistributedNames.Map_Company, - Company.class, - ClearingError.RequiredFieldEmpty, - ClearingError.WrongField), - IdPresentRule.instance("addresseeId", - PIClearingOutbondActionNewRequest::getAddresseeId, - IMDGDistributedNames.Map_Company, - Company.class, - ClearingError.RequiredFieldEmpty, - ClearingError.WrongField), - PaymentOutboundValidationRule.CreditLegAccount, - PaymentOutboundValidationRule.DebitLegAccount, - PaymentOutboundValidationRule.AddresseePresent, - PaymentOutboundValidationRule.TcrPresent); + PaymentOutboundValidationRule.RequiredFields, + IdPresentRule.instance("senderId", + PIClearingOutbondActionNewRequest::getSenderId, + IMDGDistributedNames.Map_Company, + Company.class, + ClearingError.RequiredFieldEmpty, + ClearingError.WrongField), + IdPresentRule.instance("addresseeId", + PIClearingOutbondActionNewRequest::getAddresseeId, + IMDGDistributedNames.Map_Company, + Company.class, + ClearingError.RequiredFieldEmpty, + ClearingError.WrongField), + PaymentOutboundValidationRule.CreditLegAccount, + PaymentOutboundValidationRule.DebitLegAccount, + PaymentOutboundValidationRule.AddresseePresent, + PaymentOutboundValidationRule.TcrPresent); }; } @@ -535,18 +526,18 @@ public class ValidationConfig { ctx.addImdg(IMDGDistributedNames.Map_Account, imdgAccount); ctx.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry); ctx.addImdg(IMDGDistributedNames.Map_Registry, imdgRegistry); - ctx.addImdg(IMDGDistributedNames.Map_FixedIncomeSecurity , fixedIncomeSecurityImdg); - ctx.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity , imdgMoneyMarketSecurity); - ctx.addImdg(IMDGDistributedNames.Map_EquitySecurity , equitySecurityImdg); + ctx.addImdg(IMDGDistributedNames.Map_FixedIncomeSecurity, fixedIncomeSecurityImdg); + ctx.addImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, imdgMoneyMarketSecurity); + ctx.addImdg(IMDGDistributedNames.Map_EquitySecurity, equitySecurityImdg); ctx.addImdg(IMDGDistributedNames.Map_CurrencyPairSecurity, currencyPairSecurityImdg); return new ValidatorImpl<>(ctx, - Sdf20ValidationRule.Fields, - Sdf20ValidationRule.AccountPresent, - Sdf20ValidationRule.CompanyPresent, - Sdf20ValidationRule.SecurityPresent, - Sdf20ValidationRule.TCRPresent, - Sdf20ValidationRule.DS_TPresent, - Sdf20ValidationRule.AssetsPresent); + Sdf20ValidationRule.Fields, + Sdf20ValidationRule.AccountPresent, + Sdf20ValidationRule.CompanyPresent, + Sdf20ValidationRule.SecurityPresent, + Sdf20ValidationRule.TCRPresent, + Sdf20ValidationRule.DS_TPresent, + Sdf20ValidationRule.AssetsPresent); }; } @@ -562,12 +553,12 @@ public class ValidationConfig { ctx.addImdg(IMDGDistributedNames.Map_PaymentInstruction, pmtImdg); ctx.addImdg(IMDGDistributedNames.Map_TradingClearingRegistry, imdgTradingClearingRegistry); return new ValidatorImpl<>(ctx, - Sdf55ValidationRule.Fields, - Sdf55ValidationRule.GenerationIdFound, - Sdf55ValidationRule.Sdf54Present, - Sdf55ValidationRule.PaymentInstructionPresent, - Sdf55ValidationRule.TcrPresent, - Sdf55ValidationRule.AssetsPresent); + Sdf55ValidationRule.Fields, + Sdf55ValidationRule.GenerationIdFound, + Sdf55ValidationRule.Sdf54Present, + Sdf55ValidationRule.PaymentInstructionPresent, + Sdf55ValidationRule.TcrPresent, + Sdf55ValidationRule.AssetsPresent); }; } @@ -578,9 +569,9 @@ public class ValidationConfig { ctx.setLogPrefix(LogPrefixId.INSTANCE); ctx.addImdg(IMDGDistributedNames.Map_Session, imdgSession); return new ValidatorImpl<>(ctx, - SessionTerminationValidationRule.SessionPresent, - SessionTerminationValidationRule.StatusCheck - ); + SessionTerminationValidationRule.SessionPresent, + SessionTerminationValidationRule.StatusCheck + ); }; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/element/SessionStageSettings.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/element/SessionStageSettings.java index 08e7671e0..e69dc5ce1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/element/SessionStageSettings.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/element/SessionStageSettings.java @@ -1,7 +1,6 @@ package ru.spcex.clearing.config.element; public class SessionStageSettings { - //inspection-gateway-timeout private Integer inspectionGatewayTimeout = 10; public Integer getInspectionGatewayTimeout() { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/MachineTestService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/MachineTestService.java index fe980bed3..8f222784a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/MachineTestService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/MachineTestService.java @@ -23,11 +23,5 @@ public class MachineTestService implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { -// stateMachine.start(); -// log.info("send start revise event"); -// stateMachine.sendEvent(SessionEvent.Revise); -// log.info("send continue revise event"); -// stateMachine.sendEvent(SessionEvent.SdfReceived); -// log.info("end test"); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateActionAdapter.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateActionAdapter.java index e0099ecfd..4f9b73306 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateActionAdapter.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateActionAdapter.java @@ -10,11 +10,6 @@ import ru.spcex.clearing.session.stage.TaskType; import java.util.function.Function; -/** - * адаптеры между ISessionStage старого образца к Spring State Machine
- * главное назначение: это сохранение результатов работы старого ISessionStage в ExtendedState
- * - */ public class StateActionAdapter implements Action { private final ISessionStage session; private Function payloadForStageGetter; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java index 7f685f721..f7e2ebd6d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/config/session/StateBnConfig.java @@ -41,9 +41,6 @@ public class StateBnConfig extends EnumStateMachineConfigurerAdapter sessionImdg; - /** - * адаптеры между ISessionStage старого образца к Spring State Machine - */ private final StateActionAdapter balanceReviseAction; private final StateActionAdapter dealPrepareAction; private final StateActionAdapter requirementsAndObligationCreationAction; @@ -69,16 +66,12 @@ public class StateBnConfig extends EnumStateMachineConfigurerAdapter executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); - - //настройка стадий dealsPrepare.searchForExecutions(ExecutionType.ExecutionFond); ImdgPredicateBuilder execFondPb = executionFondImdg.predicateBuilder(); dealsPrepare.addExecutionFondCondition(execFondPb.regex("settlementCode", "^B\\d{2}$")); dealsPrepare.addExecutionFondCondition(execFondPb.in("market", marketCodes.get().toArray(new String[0]))); inclusionObligations.setSessionType(SessionType.IPOB); imdgProvider.waitAvailable(); - - //настройка адаптеров для State Machine balanceReviseAction = new StateActionAdapter(balanceRevise); dealPrepareAction = new StateActionAdapter(dealsPrepare); @@ -91,7 +84,7 @@ public class StateBnConfig extends EnumStateMachineConfigurerAdapter extendedState.get(StageDataEnum.ExecutionList.name(), List.class)); + -> extendedState.get(StageDataEnum.ExecutionList.name(), List.class)); obligationAdmissionAction = new StateActionAdapter(obligationsAdmission); obligationAdmissionAction.setPayloadForStageGetter((extendedState) -> extendedState.get(StageDataEnum.sessionId.name(), Long.class)); @@ -123,10 +116,6 @@ public class StateBnConfig extends EnumStateMachineConfigurerAdapter(Arrays.asList(TaskType.StartRevise, - TaskType.ContinueRevise, - TaskType.StartRevisePart1, - TaskType.DealsPrepare, - TaskType.RequirementsAndObligationsCreate, - TaskType.ObligationsAdmission, - TaskType.InclusionToPool, - TaskType.InspectionObligations, - TaskType.FormingRegistersOnOS, - TaskType.FormingPaymentInstruction, -// TaskType.UnlockResources, - TaskType.AgainRevise -// TaskType.FinishingSession, -// TaskType.EndStageNotification + TaskType.ContinueRevise, + TaskType.StartRevisePart1, + TaskType.DealsPrepare, + TaskType.RequirementsAndObligationsCreate, + TaskType.ObligationsAdmission, + TaskType.InclusionToPool, + TaskType.InspectionObligations, + TaskType.FormingRegistersOnOS, + TaskType.FormingPaymentInstruction, + TaskType.AgainRevise ))) .end(TaskType.FormingPaymentInstruction) ; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/error/ClearingError.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/error/ClearingError.java index 84f5bfc38..db559986f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/error/ClearingError.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/error/ClearingError.java @@ -36,7 +36,6 @@ public enum ClearingError implements IErrorEnumId { RefundDateCannotBeChanged(5431L), PlanBalanceReviseError(5432L), XdepTimeIntervalNotMatch(5433L), - //ошибки "перенесенные" из balance-service, CompanyNotFoundB(5211L), CurrencyNotFound(5213L), OperationCanBeRunForTodayOnly(5214L), diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java index 37adad501..648bdfe84 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/AnltSearcher.java @@ -58,7 +58,6 @@ public class AnltSearcher { public AnltSearch loadByAnlt(String comment, String currencyCode) { String commentTcrStripped = getTkrCodeFromComment(comment); -// AnltLogger localLogger = (subject, args) -> log.debug("stmt.id={} comment='{}' error: {}", statementId, commentTcrStripped, messageResolver.resolve(new EnumMessage(subject, args))); if (commentTcrStripped == null) { return new AnltSearch(ClearingError.AccountNotFound, "comment not contain TCR"); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java index 902603ab1..37e1e6c9a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Clearing.java @@ -53,10 +53,6 @@ public class Clearing { private final LiabilitiesClaimsMoneyCreator lbltsClmsMoneyCreator; private Long lastAccBalanceResponseId = 0L; - //при прохождении по выгруженным ExecutionDeposit, ошибочные статусы проставляются для - //контр сделок. В таком случае, в коллекции хранятся не синхронизированные с IMDG ExecutionDeposit - //для которых статус должен быть DENIED - //************ !!! NOT THREAD SAFE !!! ************ private final Set deniedIds = new HashSet<>(); private Long clearingSessionId; @@ -80,10 +76,8 @@ public class Clearing { public void startClearing() { clearingSessionId = idProvider.nextId(); log.info("startClearing clearingSessionId = {}. loading ExecutionDeposits", clearingSessionId); - //выгружаем ExecutionDeposit с пустым sessionId Collection execDeposits = executionDepositImdg.getCollectionObjectsBySQL("sessionId = null"); log.info("loaded {} ExecutionDeposits", execDeposits.size()); - //делаем группировку ExecutionDeposit по категории и компании, делаем сортировку LinkedHashMap>> executionDeposits = sorter.sortExecutionDeposit(execDeposits); executionDeposits.forEach((category, companies) -> { @@ -100,12 +94,6 @@ public class Clearing { kafka.sendRequestToQueue(Task.createOrder.topic(), sdf03or11); } - //кладем в порядке I инициатор, V внутренний, B банк (ответная категория) - //получается I -> B; V -> B - // - //1) ТОЛЬКО ДЛЯ V: если DENIED по любым причинам то для всех следующих сделок этой компании DENIED - //2) DENIED сделка всегда встречная сделка тоже делается DENIED - //3) DENIED может быть для сделки которая уже прошла обработку и стала ALLOWED private void runChecksSetStatus(ClearingCategory category, List executionDeposits) { log.info("setting statuses for category: {}, company: {}", category, executionDeposits.get(0).getCompanyId()); boolean financialError = false; @@ -141,11 +129,9 @@ public class Clearing { execDeposit.setUpdated(Instant.now()); executionDepositImdg.update(execDeposit); log.trace("executionDeposit {} was updated DENIED", execDeposit.getId()); - //также необходимо установить статус DEND встречной сделке контрагента этой компании, которая выбирается из executionDeposit по ключу: - //securityId И чтобы сделка была компании категории clearingMemberCategory.clearingMemberCategory ≠ той категории, сделка которой обрабатывается в настоящий момент. ExecutionDeposit matchedExecDeposit = executionDepositImdg.getFirstObjectBySQL( - "exchangeExecutionId = " + execDeposit.getExchangeExecutionId() - + " AND side != '" + execDeposit.getSide() + "'"); + "exchangeExecutionId = " + execDeposit.getExchangeExecutionId() + + " AND side != '" + execDeposit.getSide() + "'"); if (matchedExecDeposit != null) { matchedExecDeposit.setCoverageStatus(Allowed.DENIED.getKey()); matchedExecDeposit.setUpdated(Instant.now()); @@ -173,20 +159,14 @@ public class Clearing { log.trace("Skipping processing executionDeposit {} was denied", execDeposit.getId()); continue; } - //send request to kafka, wait for a reply synchronized (this) { AccountBalanceClearingRequest request = new AccountBalanceClearingRequest(); - // todo CLS-275 request.setAccountId(execDeposit.getAccountId()); request.setCompanyId(execDeposit.getCompanyId()); request.setFirstLegAmount(execDeposit.getFirstLegAmount()); Long sentRequestId = kafka.sendRequestToQueue(Consts.BALANCE_ACCOUNT_UPDATE, request); log.trace("sent request to kafka, requestId: {}", sentRequestId); try { wait(ACC_BALANCE_TIMEOUT); - //если на этом месте произошла ошибка - непонятно как обрабатывать - //т.к. этом может быть уже вторая часть сделки, для первой accountBalance уже был обновлен - //либо вне зависимости от того какая часть сделки, accountBalance на самом деле мог быть - //обновлен, и была проблема была с сетью/недоступностью кафки etc. } catch (InterruptedException e) { log.error(ExceptionUtils.getStackTrace(e)); Thread.currentThread().interrupt(); @@ -194,14 +174,13 @@ public class Clearing { } if (!Objects.equals(lastAccBalanceResponseId, sentRequestId)) { log.error("FATAL: last response from AccountBalance update from Kafka ID was {}, but sent ID was {}", - lastAccBalanceResponseId, - sentRequestId); + lastAccBalanceResponseId, + sentRequestId); continue; } } - Optional lcaFirstLegFound = lbltsClmsAssetsCreator.searchLCA( - /* null execDeposit.getAccountId() todo CLS-275 */ null, execDeposit.getCompanyId(), - execDeposit.getSecurityId(), execDeposit.getFirstLegSettlementDate()); + Optional lcaFirstLegFound = lbltsClmsAssetsCreator.searchLCA(null, execDeposit.getCompanyId(), + execDeposit.getSecurityId(), execDeposit.getFirstLegSettlementDate()); LiabilitiesClaimsAssets lcaFirstLeg = orElse(lcaFirstLegFound).ifPresentOrElse(lca -> { log.trace("LiabilitiesClaimsAssets first leg {} was found", lca.getId()); lbltsClmsAssetsCreator.updateFirstLegLca(lca, execDeposit, category); @@ -213,9 +192,8 @@ public class Clearing { log.trace("LiabilitiesClaimsAssets {} first leg was created", lca.getId()); return lca; }); - Optional lcaSecondLegFound = lbltsClmsAssetsCreator.searchLCA( - /*todo CLS-275 execDeposit.getAccountId()*/ null, execDeposit.getCompanyId(), - execDeposit.getSecurityId(), execDeposit.getSecondLegSettlementDate()); + Optional lcaSecondLegFound = lbltsClmsAssetsCreator.searchLCA(null, execDeposit.getCompanyId(), + execDeposit.getSecurityId(), execDeposit.getSecondLegSettlementDate()); LiabilitiesClaimsAssets lcaSecondLeg = orElse(lcaSecondLegFound).ifPresentOrElse(lca -> { log.trace("LiabilitiesClaimsAssets second leg {} was found", lca.getId()); lbltsClmsAssetsCreator.updateSecondLegLca(lca, execDeposit, category); @@ -265,7 +243,7 @@ public class Clearing { List paymentInstructions; if (firstInstructionIExist != null) { log.debug("ignore create paymentInstruction for I firstLeg: execDeposit {}, lcaFirstLeg {}, updating paymentInstruction {}", - execDeposit.getId(), lcaFirstLeg.getId(), firstInstructionIExist.getId()); + execDeposit.getId(), lcaFirstLeg.getId(), firstInstructionIExist.getId()); paymentInstructionCreator.updatePaymentInstructionsFirstI(firstInstructionIExist, lcaFirstLeg, category); paymentInstructions = Collections.singletonList(firstInstructionIExist); } else { @@ -279,14 +257,6 @@ public class Clearing { } log.trace("lcaFirstLeg {}, lcaSecondLeg {}", lcaFirstLeg, lcaSecondLeg); -// log.trace("updating LiabilitiesClaimsMoney by payment"); -// log.trace("firstLegLiabilitiesClaimsMoney: {}; secondLegLiabilitiesClaimsMoney: {}", lcmFirstLeg, lcmSecondLeg); -// if (paymentInstructionCreator.updateFieldLiabilitiesClaimsMoneyByPayment(lcmFirstLeg, true, paymentInstructions, Collections.singleton(category)) ) { -// liabilitiesClaimsMoneyImdg.update(lcmFirstLeg); -// log.trace("LiabilitiesClaimsMoney first leg {} was updated", lcmFirstLeg.getId()); -// } -// log.trace("firstLegLiabilitiesClaimsMoney: {}; secondLegLiabilitiesClaimsMoney: {}", lcmFirstLeg.getId(), lcmSecondLeg.getId()); - execDeposit.setSessionId(clearingSessionId); execDeposit.setUpdated(Instant.now()); executionDepositImdg.update(execDeposit); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java index 8706f32d5..61526025f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ClearingService.java @@ -45,7 +45,6 @@ public class ClearingService implements DisposableBean { this.executor = Executors.newSingleThreadExecutor(); } - // @Scheduled(cron = "${clearing-service.scheduler.check-payment-instruction}") public void sdfCreate() { log.info("creating sdf03/11 from STLD payments task added to queue"); executor.execute(() -> { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java index 561d7b160..c1c0c8736 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/EventsReceiver.java @@ -115,113 +115,110 @@ public class EventsReceiver extends QueueConsumer implements InitializingBean { @Override public void afterPropertiesSet() { callback(Sdf04Request.class) - .setConsumer(event -> { - Sdf04Request requestPayload = event.getRequestPayload(); - clearingService.paymentUpdateBySdf04(requestPayload.getGroupId()); - }) - .forDestination(Consts.SDF04_PROCESS, callbacks::put); + .setConsumer(event -> { + Sdf04Request requestPayload = event.getRequestPayload(); + clearingService.paymentUpdateBySdf04(requestPayload.getGroupId()); + }) + .forDestination(Consts.SDF04_PROCESS, callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(event -> clearingService.sdfCreate()) - .forDestination(Task.createOrder.topic(), callbacks::put); -// callback(LauncherCommandRequest.class) -// .setConsumer(event -> clearingService.executeVerification()) -// .forDestination(Task.getVerification.topic(), callbacks::put); + .setConsumer(event -> clearingService.sdfCreate()) + .forDestination(Task.createOrder.topic(), callbacks::put); callback(CommonIdRequest.class) - .setConsumer(clearingService::continueClearing) - .forDestination(Consts.CONTINUE_CLEARING, callbacks::put); + .setConsumer(clearingService::continueClearing) + .forDestination(Consts.CONTINUE_CLEARING, callbacks::put); callback(LauncherCommandRequest.class) - .setFunction(r -> { - try { - sessionManager.defineAndStartSession(r); - } catch (ValidationException ve) { - return makeErrorResponse(r, ve); - } - return null; - }) - .forDestination(Task.startOfClearing.topic(), callbacks::put); + .setFunction(r -> { + try { + sessionManager.defineAndStartSession(r); + } catch (ValidationException ve) { + return makeErrorResponse(r, ve); + } + return null; + }) + .forDestination(Task.startOfClearing.topic(), callbacks::put); callback(PIClearingOutbondActionNewRequest.class) - .setFunction(pmtOutboundService::sendOutBoundPayment) - .forDestination(Consts.PAYMENT_INSTRUCTION_CLEARING_OUTBOUND_ACTION, callbacks::put); + .setFunction(pmtOutboundService::sendOutBoundPayment) + .forDestination(Consts.PAYMENT_INSTRUCTION_CLEARING_OUTBOUND_ACTION, callbacks::put); callback(StatementRequest.class) - .setConsumer(statementService::processReq) - .forDestination(Consts.STATEMENT_PROCESS, callbacks::put); + .setConsumer(statementService::processReq) + .forDestination(Consts.STATEMENT_PROCESS, callbacks::put); callback(SessionContinueEvent.class) - .setConsumer(req -> { - primaryAuctionBnSession.continueSession(req); - primaryAuctionT0Session.continueSession(req); - secondaryAuctionT0Session.continueSession(req); - currencySession.continueSession(req); - primaryAuctionB0Session.continueSession(req); - intermediateMkrSession.continueSession(req); - finalMkrSession.continueSession(req); - unitedSession.continueSession(req); - returnDepositSession.continueSession(req); - }) - .forDestination(Consts.CONTINUE_SESSION_BN_FIRST_PART, callbacks::put); + .setConsumer(req -> { + primaryAuctionBnSession.continueSession(req); + primaryAuctionT0Session.continueSession(req); + secondaryAuctionT0Session.continueSession(req); + currencySession.continueSession(req); + primaryAuctionB0Session.continueSession(req); + intermediateMkrSession.continueSession(req); + finalMkrSession.continueSession(req); + unitedSession.continueSession(req); + returnDepositSession.continueSession(req); + }) + .forDestination(Consts.CONTINUE_SESSION_BN_FIRST_PART, callbacks::put); callback(StatementRequest.class) - .setConsumer(sdf06Executor::execute) - .forDestination(Consts.STATEMENT_PROCESS_SDF06, callbacks::put); + .setConsumer(sdf06Executor::execute) + .forDestination(Consts.STATEMENT_PROCESS_SDF06, callbacks::put); callback(AssetOperationApprovalRequest.class) - .setConsumer(req -> { - sdf06Executor.processGatewayResponse(req); - sdf10Executor.processGatewayResponse(req); - }) - .forDestination(Consts.ASSET_OPERATION_APPROVAL, callbacks::put); + .setConsumer(req -> { + sdf06Executor.processGatewayResponse(req); + sdf10Executor.processGatewayResponse(req); + }) + .forDestination(Consts.ASSET_OPERATION_APPROVAL, callbacks::put); callback(STradesImportedRequest.class) - .setConsumer(event -> clearingService.executeSTrade()) - .forDestination(S_TRADES_IMPORTED, callbacks::put); + .setConsumer(event -> clearingService.executeSTrade()) + .forDestination(S_TRADES_IMPORTED, callbacks::put); callback(CreateRegistryRequest.class) - .setConsumer(event -> registryService.updateRegistryIfNeeded(event.getRequestPayload())) - .forDestination(Consts.REGISTRY_NEW, callbacks::put); + .setConsumer(event -> registryService.updateRegistryIfNeeded(event.getRequestPayload())) + .forDestination(Consts.REGISTRY_NEW, callbacks::put); callback(RegistryReturnDepositRequest.class) - .setFunction(registryService::returnDeposit) - .forDestination(Consts.REGISTRY_RETURN_DEPOSIT_ACTION, callbacks::put); + .setFunction(registryService::returnDeposit) + .forDestination(Consts.REGISTRY_RETURN_DEPOSIT_ACTION, callbacks::put); callback(RegistryChangeStatusExtractRequest.class) - .setFunction(registryService::changeStatusExtract) - .forDestination(Consts.REGISTRY_CHANGE_STATUS_EXTRACT_ACTION, callbacks::put); + .setFunction(registryService::changeStatusExtract) + .forDestination(Consts.REGISTRY_CHANGE_STATUS_EXTRACT_ACTION, callbacks::put); callback(IdentificationFundsRequest.class) - .setFunction(registryService::identificationFunds) - .forDestination(Consts.REGISTRY_IDENTIFICATION_FUNDS, callbacks::put); + .setFunction(registryService::identificationFunds) + .forDestination(Consts.REGISTRY_IDENTIFICATION_FUNDS, callbacks::put); callback(RegistryChangeRefundDateRequest.class) - .setFunction(registryService::changeRefundDate) - .forDestination(Consts.REGISTRY_CHANGE_REFUND_DATE_ACTION, callbacks::put); + .setFunction(registryService::changeRefundDate) + .forDestination(Consts.REGISTRY_CHANGE_REFUND_DATE_ACTION, callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(event -> registryService.resetBalances()) - .forDestination(Task.createRegistry_GRYT.topic(), callbacks::put); + .setConsumer(event -> registryService.resetBalances()) + .forDestination(Task.createRegistry_GRYT.topic(), callbacks::put); callback(RegistrySplitDepositActionRequest.class) - .setFunction(registryService::splitDeposit) - .forDestination(Consts.REGISTRY_SPLIT_DEPOSIT_ACTION, callbacks::put); + .setFunction(registryService::splitDeposit) + .forDestination(Consts.REGISTRY_SPLIT_DEPOSIT_ACTION, callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(task -> { - LocalTime fromTime = null; - if (task != null - && task.getRequestPayload() != null - && task.getRequestPayload().getFromTime() != null) { - fromTime = task.getRequestPayload().getFromTime(); - } - balanceRevise.submit(new ru.spcex.clearing.session.stage.Task<>(TaskType.StartRevise, fromTime)); - }) - .forDestination(Task.getAllBalance.topic(), callbacks::put); + .setConsumer(task -> { + LocalTime fromTime = null; + if (task != null + && task.getRequestPayload() != null + && task.getRequestPayload().getFromTime() != null) { + fromTime = task.getRequestPayload().getFromTime(); + } + balanceRevise.submit(new ru.spcex.clearing.session.stage.Task<>(TaskType.StartRevise, fromTime)); + }) + .forDestination(Task.getAllBalance.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(task -> { - balanceRevise.submit(new ru.spcex.clearing.session.stage.Task<>(TaskType.SDF51, null)); - }) - .forDestination(Task.getVerification.topic(), callbacks::put); + .setConsumer(task -> { + balanceRevise.submit(new ru.spcex.clearing.session.stage.Task<>(TaskType.SDF51, null)); + }) + .forDestination(Task.getVerification.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(task -> sdf05Sender.sendSdf05("9")) - .forDestination(Task.sdf05WithCode9Final.topic(), callbacks::put); + .setConsumer(task -> sdf05Sender.sendSdf05("9")) + .forDestination(Task.sdf05WithCode9Final.topic(), callbacks::put); callback(Object.class) - .setFunction(sessionTerminator::stopCurrentSession) - .forDestination(Consts.KILL_SESSION, callbacks::put); + .setFunction(sessionTerminator::stopCurrentSession) + .forDestination(Consts.KILL_SESSION, callbacks::put); if (environment.acceptsProfiles(Profiles.of("dev"))) { callback(LauncherCommandRequest.class) diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/LauncherCommandReceiver.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/LauncherCommandReceiver.java index 0d75db589..7592388c2 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/LauncherCommandReceiver.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/LauncherCommandReceiver.java @@ -27,8 +27,8 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi @Override public void afterPropertiesSet() { callback(LauncherCommandRequest.class) - .setConsumer(action -> clearingService.executeVerification()) - .forDestination(Task.createOrderConfirm.topic(), callbacks::put); // CORC + .setConsumer(action -> clearingService.executeVerification()) + .forDestination(Task.createOrderConfirm.topic(), callbacks::put); init(); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java index 7597cdf22..ffada35c3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/RegistryService.java @@ -144,10 +144,7 @@ public class RegistryService { public void createRegistry(CreateRegistryRequest createRegistryRequest) { Long companyId = createRegistryRequest.getCompanyId(); log.trace("Try to find tradingClearingRegistry by companyId: {}", createRegistryRequest.getCompanyId()); - //todo может завести класс SqlFactory String byCompanySqlPredicate = String.format("companyId=%s", companyId); - //todo для компани всегда один объект TradingClearingRegistry? пока предполагаю что да и нужно добавить такую проверку(в ТЗ ее нет); - //todo see TradingClearingRegistryService.tradingClearingRegistryNew TradingClearingRegistry tcrByCompanyId = tradingClearingRegistryImdg.getFirstObjectBySQL(byCompanySqlPredicate); if (tcrByCompanyId != null) { @@ -159,7 +156,6 @@ public class RegistryService { registry.setRegistryInstrumentType(registryInfo.registryInstrumentType().getKey()); registry.setRegistryCapacity(registryInfo.registryCapacity().getKey()); registry.setRegistryUnit(registryInfo.registryUnit().getKey()); - //todo не понял формулировку При создании новой записи, необходимо установить значение 0 в множестве свойств balance* AND registryInstrumentType=M AND securitySymbol=RUB[registry.securityId=security.id] registry.setBalance(BigDecimal.ZERO); registryImdg.insert(registry); @@ -168,7 +164,6 @@ public class RegistryService { } public void updateRegistryIfNeeded(CreateRegistryRequest requestPayload) { - //RUB зашиты в регистр? TradingClearingRegistry tcr = tradingClearingRegistryImdg.getSingleObjectByID(requestPayload.getTradingClearingRegistryId()); var ref = new Object() { TradingClearingRegistryList tcrList = null; @@ -220,15 +215,15 @@ public class RegistryService { if (registries.stream().anyMatch(r -> RegistryInstrumentType.M.equalsByKey(r.getRegistryInstrumentType()))) { log.info("assets size {} updated by TCR#id={}, will not create new assets", - registries.size(), tcr.getId()); + registries.size(), tcr.getId()); return; } else if (tcr.getMoneyAccountId() == null) { log.info("assets size {} updated by TCR#id={}, TCR#moneyAccountId 'null'. will not create AM**", - registries.size(), tcr.getId()); + registries.size(), tcr.getId()); return; } else { log.info("assets size {} updated by TCR#id={}, TCR#moneyAccountId {}. creating new AM**...", - registries.size(), tcr.getId(), tcr.getMoneyAccountId()); + registries.size(), tcr.getId(), tcr.getMoneyAccountId()); } Long searchAccId = ref.tcrList == null ? tcr.getMoneyAccountId() : ref.tcrList.getAccountId(); @@ -252,25 +247,25 @@ public class RegistryService { log.debug("TCR#id={} account#id={} company#id={}, creating assets", tcr.getId(), acc.getId(), cmp.getId()); AssetTrio assets = this.assets.createMAssets(acc, - currency.getCurrencyCode(), - currency.getId(), - tcr.getTradingClearingRegistryType(), - tcr.getId(), - tcr.getCode(), - cmp); + currency.getCurrencyCode(), + currency.getId(), + tcr.getTradingClearingRegistryType(), + tcr.getId(), + tcr.getCode(), + cmp); Stream.of(assets.a__t(), assets.a__b(), assets.a__f()) - .forEach(a -> { - a.setRegistryStatus(RegistryStatus.PROC.getKey()); - registryImdg.insert(a); - }); + .forEach(a -> { + a.setRegistryStatus(RegistryStatus.PROC.getKey()); + registryImdg.insert(a); + }); log.debug("TCR#id={} created {}#id={} {}#id={} {}#id={}", - tcr.getId(), - assets.a__f().getRegistryCode(), assets.a__f().getId(), - assets.a__t().getRegistryCode(), assets.a__t().getId(), - assets.a__b().getRegistryCode(), assets.a__b().getId()); + tcr.getId(), + assets.a__f().getRegistryCode(), assets.a__f().getId(), + assets.a__t().getRegistryCode(), assets.a__t().getId(), + assets.a__b().getRegistryCode(), assets.a__b().getId()); } @@ -404,31 +399,30 @@ public class RegistryService { d_i.setRegistryStatus(RegistryStatus.OK.getKey()); registryImdg.insert(d_i); log.debug("created {}.id={}", d_i.getRegistryCode(), d_i.getId()); - //paymentInstruction PaymentInstruction pmt = PaymentInstructionBuilderV2.builder(imdgProvider) - .registry(asts.a__b()) - .sender(Sender.One.getId()) - .addressee(accCompTcr.getCompany().getId()) - .debitLegAccount(accCompTcr.getAccount()) - .creditLegAccount(anltAcc) - .amount(payload.getBalance()) - .sessionId(null) - .purpose("purpose") - .build(); + .registry(asts.a__b()) + .sender(Sender.One.getId()) + .addressee(accCompTcr.getCompany().getId()) + .debitLegAccount(accCompTcr.getAccount()) + .creditLegAccount(anltAcc) + .amount(payload.getBalance()) + .sessionId(null) + .purpose("purpose") + .build(); pmt.setTransactionStatus(TransactionStatus.ok.getKey()); pmtImdg.insert(pmt); registryImdg.update(dmau); registryImdg.update(asts.a__t()); assets.process(asts.a__b(), asts.a__t(), asts.a__f(), BigDecimal.ZERO); log.debug("IdentificationFundsRequest.id={} dmau.id={} am*t.id={} payment_instruction.id={}", - req.getId(), dmau.getId(), asts.a__t().getId(), pmt.getId()); + req.getId(), dmau.getId(), asts.a__t().getId(), pmt.getId()); if (trdTime.isTradingTime()) { log.trace("sending gateway request for IdentificationFundsRequest.id={} dmau.id={}", - req.getId(), dmau.getId()); + req.getId(), dmau.getId()); kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, - gatewayRequest(dmau, payload.getBalance(), - accCompTcr.getCompany().getTradingCode(), - asts.a__t().getTradingClearingRegistry())); + gatewayRequest(dmau, payload.getBalance(), + accCompTcr.getCompany().getTradingCode(), + asts.a__t().getTradingClearingRegistry())); } return reqHelp.success(req.getId()); } @@ -461,28 +455,25 @@ public class RegistryService { return new RequestInfoUpdate(req.getId(), Status.Success, null); } - /** - * находим все регистры AM__/AS__ по пришедшему ТКР - */ private Optional registsryPredicate(Long companyId, Long moneyAccountId, Long depoAccountId, TradingClearingRegistryList tcrList) { ImdgPredicateBuilder prdBldr = registryImdg.predicateBuilder(); Function sql = p -> RegistryCodeSqlBuilder.getInstance(p).build(); Optional moneyPredicate = Optional.ofNullable(moneyAccountId) - .map(accId -> sql.apply(RegistryTradingParams.AM__)) - .map(prdBldr::sql) - .map(codePredicate -> prdBldr.and( - codePredicate, - prdBldr.or( - prdBldr.equals("accountId", moneyAccountId), - tcrList != null ? prdBldr.equals("accountId", tcrList.getAccountId()) : prdBldr.alwaysFalse() - ) - )); + .map(accId -> sql.apply(RegistryTradingParams.AM__)) + .map(prdBldr::sql) + .map(codePredicate -> prdBldr.and( + codePredicate, + prdBldr.or( + prdBldr.equals("accountId", moneyAccountId), + tcrList != null ? prdBldr.equals("accountId", tcrList.getAccountId()) : prdBldr.alwaysFalse() + ) + )); Optional depoPredicate = Optional.ofNullable(depoAccountId) - .map(accId -> sql.apply(RegistryTradingParams.AS__)) - .map(prdBldr::sql) - .map(codePredicate -> prdBldr.and(codePredicate, prdBldr.equals("accountId", depoAccountId))); + .map(accId -> sql.apply(RegistryTradingParams.AS__)) + .map(prdBldr::sql) + .map(codePredicate -> prdBldr.and(codePredicate, prdBldr.equals("accountId", depoAccountId))); if (moneyPredicate.isEmpty() && depoPredicate.isEmpty()) { return Optional.empty(); } @@ -493,16 +484,15 @@ public class RegistryService { accIdPrdct = prdBldr.and(moneyPredicate.orElse(prdBldr.alwaysTrue()), depoPredicate.orElse(prdBldr.alwaysTrue())); } return Optional.ofNullable(prdBldr.and( - accIdPrdct, - prdBldr.equals("companyId", companyId), - prdBldr.sql("tradingClearingRegistryId == null") + accIdPrdct, + prdBldr.equals("companyId", companyId), + prdBldr.sql("tradingClearingRegistryId == null") )); } private RegistryTradingParams createRegistryInfoByType(String type) { TradingClearingRegistryType registryType = IEnumKey.getEnumByKey(TradingClearingRegistryType.class, type); RegistryTradingParams registryInfo = null; - //todo спросить про дубль C и T switch (registryType) { case Owner_A -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M, RegistryCapacity.A, RegistryUnit.T); case Client_B -> registryInfo = new RegistryTradingParams(RegistryDesignation.A, RegistryInstrumentType.M, RegistryCapacity.B, RegistryUnit.T); @@ -531,7 +521,7 @@ public class RegistryService { if (byCodeRes.size() > 1) { Optional any = group.stream().findFirst(); - if (any.isEmpty()) throw new IllegalStateException(); //never + if (any.isEmpty()) throw new IllegalStateException(); String err = "FATAL: found %d entries by code %s in group %s".formatted( byCodeRes.size(), rgsCode, @@ -634,7 +624,6 @@ public class RegistryService { else if (!groupId.equals(baseRegistry.getGroupId())) { log.warn("Group id different: groupId={}; registry[{}].groupId={}", groupId, baseRegistry.getId(), baseRegistry.getGroupId()); } - // 1. Первая группа Registry firstRegistry = baseRegistry.clone(); firstRegistry.setId(null); firstRegistry.setCreated(now); @@ -649,7 +638,6 @@ public class RegistryService { firstRegistry.setContract(cntrctWithoutTilda + "~" + (index + 1)); firstRegistry.setParentId(baseRegistry.getId()); registryTMap.insert(firstRegistry); - // 2. Вторая группа Registry secondRegistry = null; if (InOutDirection.out == direction) { secondRegistry = baseRegistry.clone(); @@ -663,15 +651,13 @@ public class RegistryService { secondRegistry.setParentId(baseRegistry.getId()); registryTMap.insert(secondRegistry); } - - // 3. Текущим обязательствам установить статус SPLT baseRegistry.setRegistryStatus(RegistryStatus.SPLT.getKey()); baseRegistry.setUpdated(Instant.now()); registryTMap.update(baseRegistry); log.debug("Registry[{}] groupId={} split to: id1={} {}, id2={} {}", - baseRegistry.getId(), baseRegistry.getGroupId(), - firstRegistry == null ? null : firstRegistry.getId(), firstRegistry == null ? null : firstRegistry.getContract(), - secondRegistry == null ? null : secondRegistry.getId(), secondRegistry == null ? null : secondRegistry.getContract() + baseRegistry.getId(), baseRegistry.getGroupId(), + firstRegistry == null ? null : firstRegistry.getId(), firstRegistry == null ? null : firstRegistry.getContract(), + secondRegistry == null ? null : secondRegistry.getId(), secondRegistry == null ? null : secondRegistry.getContract() ); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf12Creator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf12Creator.java index 81569b37a..7ae69d0db 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf12Creator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf12Creator.java @@ -51,7 +51,6 @@ public class Sdf12Creator { if (security != null) { sDf12.setSecurityCode(security.getSecuritySymbol()); } -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } @@ -59,7 +58,7 @@ public class Sdf12Creator { public SDf12 createWithoutIntermediate(PaymentInstruction paymentInstruction) { log.debug("creating sdf12"); - SDf12 sDf12 = new SDf12(); //todo remove + SDf12 sDf12 = new SDf12(); sDf12.setId(idGenerator.nextId()); sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); @@ -70,7 +69,6 @@ public class Sdf12Creator { } sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf54Creator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf54Creator.java index 8d25bccbb..55e5957c3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf54Creator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/Sdf54Creator.java @@ -62,12 +62,11 @@ public class Sdf54Creator { Instant now = Instant.now(); String c_acc_cred = null; Account anltAcc = accountImdg.getFirstObjectBySQL("accountType = '%s' and status = '%s' and currency = '%s'" - .formatted( - AccountType.Anlt.getKey(), - Status.Active.getKey(), - pmt.getCreditLeg_currencyCode() - )); -// c_acc_deb = c_acc_deb == null ? paymentInstruction.getCreditLeg_account() : c_acc_deb; + .formatted( + AccountType.Anlt.getKey(), + Status.Active.getKey(), + pmt.getCreditLeg_currencyCode() + )); c_acc_cred = c_acc_cred == null ? pmt.getDebitLeg_account() : c_acc_cred; @@ -75,8 +74,6 @@ public class Sdf54Creator { SDf54 sDf54 = new SDf54(); sDf54.setId(idGenerator.nextId()); sDf54.setSeg_type("V"); - - //********************** String tranBic = selectSymbolValue(Sender.Prc.getId(), CompanySymbol.BIC); if (tranBic == null) { log.warn("CompanySymbols BIC not found for companyId={}", Sender.Prc.getId()); @@ -95,11 +92,11 @@ public class Sdf54Creator { } } SpecifUtil.fillSegmentsBy35Symbols(senderSbankName, - sDf54::setSbanknam1, - sDf54::setSbanknam2, - sDf54::setSbanknam3, - sDf54::setSbanknam4, - sDf54::setSbanknam5); + sDf54::setSbanknam1, + sDf54::setSbanknam2, + sDf54::setSbanknam3, + sDf54::setSbanknam4, + sDf54::setSbanknam5); sDf54.setOp_type("01"); sDf54.setOp_order("5"); String innDeb = selectSymbolValue(Sender.One.getId(), CompanySymbol.INN); @@ -142,42 +139,37 @@ public class Sdf54Creator { { Account prcCorrAcc = accountImdg.getFirstObjectBySQL("companyId=%d and accountType = '%s' and status = '%s' and currency = '%s'" - .formatted( - Sender.Prc.getId(), - AccountType.Bank.getKey(), - Status.Active.getKey(), - pmt.getCreditLeg_currencyCode() - )); + .formatted( + Sender.Prc.getId(), + AccountType.Bank.getKey(), + Status.Active.getKey(), + pmt.getCreditLeg_currencyCode() + )); if (prcCorrAcc == null) { log.warn("Account for PRC CORR not found"); } else { sDf54.setC_acc_deb(prcCorrAcc.getAccount()); } } - //********************** sDf54.setSend_type(resolver.resolve(ClearingMessage.urgent, locale)); sDf54.setDoc_type("002"); sDf54.setDocnm_ref(docnmRefFormatter.format(TimeUtil.toDateTime(now))); - -// Account rBnkAccount = accountImdg.getFirstObjectBySQL("companyId=%s and accountType = '%s' and status = '%s'" -// .formatted(paymentInstruction.getAddresseeId(), AccountType.Bank.getKey(), Status.Active.getKey())); -// BankAccount rBnkAcc = rBnkAccount == null ? null : bankAccountImdg.getFirstObjectBySQL("accountId = %d".formatted(rBnkAccount.getId())); if (bnkAcc != null) { sDf54.setRbankcode(bnkAcc.getBankIdentificationCode()); SpecifUtil.fillSegmentsBy35Symbols(bnkAcc.getCorrespondentAccountName(), - sDf54::setRbanknam1, - sDf54::setRbanknam2, - sDf54::setRbanknam3, - sDf54::setRbanknam4, - sDf54::setRbanknam5); + sDf54::setRbanknam1, + sDf54::setRbanknam2, + sDf54::setRbanknam3, + sDf54::setRbanknam4, + sDf54::setRbanknam5); } sDf54.setC_acc_cred(c_acc_cred); { Company company1 = companyImdg.getSingleObjectByID(Sender.One.getId()); - if (company1 != null) { // "АО СПВБ" company.shortName[id = 1] + if (company1 != null) { String sclientn; if (LocaleUtil.isRus(locale)) { sclientn = company1.getShortName(); @@ -187,10 +179,10 @@ public class Sdf54Creator { sclientn = ""; } SpecifUtil.fillSegmentsBy35Symbols(sclientn, - sDf54::setSclientn1, - sDf54::setSclientn2, - sDf54::setSclientn3, - sDf54::setSclientn4); + sDf54::setSclientn1, + sDf54::setSclientn2, + sDf54::setSclientn3, + sDf54::setSclientn4); } else { log.warn("Company id=1 not exist"); } @@ -198,10 +190,10 @@ public class Sdf54Creator { { if (bnkAcc != null) { SpecifUtil.fillSegmentsBy35Symbols(bnkAcc.getBankName(), - sDf54::setRclientn1, - sDf54::setRclientn2, - sDf54::setRclientn3, - sDf54::setRclientn4); + sDf54::setRclientn1, + sDf54::setRclientn2, + sDf54::setRclientn3, + sDf54::setRclientn4); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SdfCreatorBySTLDPayment.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SdfCreatorBySTLDPayment.java index 7f9c5a279..97da32290 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SdfCreatorBySTLDPayment.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/SdfCreatorBySTLDPayment.java @@ -57,13 +57,10 @@ public class SdfCreatorBySTLDPayment { public void createSdfFromPaymentInstructionSTLD() { - //generationId для созадаваемых Sdf03/Sdf11 Long generationId = idGenerator.nextId(); - //выгружаем PaymentInstructions с нужным статусом Collection paymentInstructionFound = paymentImdgs.getCollectionObjectsByFieldValues( - Map.of("transactionStatus", TransactionStatus.stld.getKey())); + Map.of("transactionStatus", TransactionStatus.stld.getKey())); log.info("Found {} PaymentInstruction by status {}", paymentInstructionFound.size(), TransactionStatus.stld.getKey()); - /*Map> byOrder = */ List>>> allEntries = group(paymentInstructionFound); Set queueToSend = new HashSet<>(); @@ -80,69 +77,57 @@ public class SdfCreatorBySTLDPayment { log.info("Send command target queue: {}", queueToSend); sendToKafkaSDFRequests(queueToSend, generationId); allEntries.forEach(entry -> { - //category group GroupWrapper group = entry.getKey(); log.info("updating transactionStatus Group category {} index {}", - group.category, group.getSortIndex()); + group.category, group.getSortIndex()); TransactionStatus stat; if (group.category.equals(ClearingCategory.I) - || group.category.equals(ClearingCategory.V) - || group.category.equals(ClearingCategory.B)) { + || group.category.equals(ClearingCategory.V) + || group.category.equals(ClearingCategory.B)) { stat = TransactionStatus.sent; } else { stat = TransactionStatus.notSent; } entry.getValue() - .forEach(senderInstructions -> { - senderInstructions.forEach(paymentInstruction -> { - paymentInstruction.setTransactionStatus(stat.getKey()); - paymentImdgs.update(paymentInstruction); - }); + .forEach(senderInstructions -> { + senderInstructions.forEach(paymentInstruction -> { + paymentInstruction.setTransactionStatus(stat.getKey()); + paymentImdgs.update(paymentInstruction); }); + }); }); } public List>>> group(Collection payments) { return payments.stream().flatMap(paymentInstruction -> { - ClearingCategory clearingCategory = getClearingCategory(paymentInstruction); - Long senderId = paymentInstruction.getSenderId(); - if (senderId == null) { - return Stream.empty(); - } else { - return Stream.of(new Pair<>(new GroupWrapper(clearingCategory, senderId), paymentInstruction)); - } - //группируем по equals/hashCode группы - }).collect(Collectors.groupingBy(Pair::getFirst, Collectors.mapping(Pair::getSecond, Collectors.toList()))) - .entrySet() - .stream() - //сортируем по группе compareTo - .sorted(Map.Entry.comparingByKey()) - //преобразуем поток entry>, разбиваем список на группы по senderId - .map((Function>, Map.Entry>>>) entry -> { + ClearingCategory clearingCategory = getClearingCategory(paymentInstruction); + Long senderId = paymentInstruction.getSenderId(); + if (senderId == null) { + return Stream.empty(); + } else { + return Stream.of(new Pair<>(new GroupWrapper(clearingCategory, senderId), paymentInstruction)); + } + }).collect(Collectors.groupingBy(Pair::getFirst, Collectors.mapping(Pair::getSecond, Collectors.toList()))) + .entrySet() + .stream() + .sorted(Map.Entry.comparingByKey()) + .map((Function>, Map.Entry>>>) entry -> { Collection> values = entry.getValue().stream().collect(Collectors.groupingBy(PaymentInstruction::getSenderId)).values(); return new AbstractMap.SimpleEntry<>(entry.getKey(), values); }).toList(); } - /** - * - * @param senderId - * @param category - * @param batch - * @param generationId - * @return kafka queue: Consts.SDF03_PROCESS/Consts.SDF11_PROCESS - */ private String saveSdfBeforeSendToKafka(Long senderId, ClearingCategory category, List batch, Long generationId) { String queue = null; if (Sender.One.equalsById(senderId) || category.equals(ClearingCategory.I) || category.equals(ClearingCategory.V)) { batch.stream() - .map(paymentInstruction -> new Sdf03Builder(companyImdg).buildSdf03(paymentInstruction, generationId)) - .forEach(sdf03Imdg::insert); + .map(paymentInstruction -> new Sdf03Builder(companyImdg).buildSdf03(paymentInstruction, generationId)) + .forEach(sdf03Imdg::insert); queue = Consts.SDF03_PROCESS; } else if (category.equals(ClearingCategory.B)) { batch.stream() - .map(paymentInstruction -> new Sdf11Builder(companyImdg).buildSdf11(paymentInstruction, generationId)) - .forEach(sdf11Imdg::insert); + .map(paymentInstruction -> new Sdf11Builder(companyImdg).buildSdf11(paymentInstruction, generationId)) + .forEach(sdf11Imdg::insert); queue = Consts.SDF11_PROCESS; } else { log.error("Unknown action (sdf03/sdf11) senderId {}, generationId {}, category {}", senderId, generationId, category); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java index 8efaa429a..b4fcab9d9 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/StatementService.java @@ -31,7 +31,6 @@ import ru.spcex.platform.utils.collection.Pair; import java.util.*; import java.util.stream.Collectors; -//@Service @Deprecated public class StatementService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -43,12 +42,8 @@ public class StatementService extends QueueConsumer implements InitializingBean private final Reviser reviser; private final StatementServiceV2 stmtSrvV2; - /** - * Пары sdf запросов пришедшие с модуля dbf-import - */ private final Map> pairOfSdfRequest = new HashMap<>(); -// @Autowired public StatementService(Consumer kafkaQueue, ImdgProvider imdgProvider, KafkaSender kafkaSender, @@ -71,47 +66,42 @@ public class StatementService extends QueueConsumer implements InitializingBean @Override public void afterPropertiesSet() throws Exception { callback(StatementRequest.class) - .setConsumer(systemRequest -> { - StatementRequest payload = systemRequest.getRequestPayload(); - if (payload.getTable() == null - || !Arrays.asList(SdfTable.SDF_01, - SdfTable.SDF_04, - SdfTable.SDF_57, - SdfTable.SDF_08, - SdfTable.SDF_13, - SdfTable.SDF_21, - SdfTable.SDF_10, - SdfTable.SDF_55, - SdfTable.SDF_20).contains(payload.getTable())) { - log.debug("StatementService: skipping table {}", payload.getTable()); - return; - } - if (Arrays.asList( - SdfTable.SDF_01, - SdfTable.SDF_04, - SdfTable.SDF_08, - SdfTable.SDF_10, - SdfTable.SDF_13, - SdfTable.SDF_20, - SdfTable.SDF_21, - SdfTable.SDF_55, - SdfTable.SDF_57).contains(payload.getTable())) { - stmtSrvV2.processReq(systemRequest); - } else if (payload.isContinueSdf()) { - processAccountAnswer(systemRequest); - } else { - processPaired(systemRequest); - } - }) - .forDestination(Consts.STATEMENT_PROCESS, callbacks::put); + .setConsumer(systemRequest -> { + StatementRequest payload = systemRequest.getRequestPayload(); + if (payload.getTable() == null + || !Arrays.asList(SdfTable.SDF_01, + SdfTable.SDF_04, + SdfTable.SDF_57, + SdfTable.SDF_08, + SdfTable.SDF_13, + SdfTable.SDF_21, + SdfTable.SDF_10, + SdfTable.SDF_55, + SdfTable.SDF_20).contains(payload.getTable())) { + log.debug("StatementService: skipping table {}", payload.getTable()); + return; + } + if (Arrays.asList( + SdfTable.SDF_01, + SdfTable.SDF_04, + SdfTable.SDF_08, + SdfTable.SDF_10, + SdfTable.SDF_13, + SdfTable.SDF_20, + SdfTable.SDF_21, + SdfTable.SDF_55, + SdfTable.SDF_57).contains(payload.getTable())) { + stmtSrvV2.processReq(systemRequest); + } else if (payload.isContinueSdf()) { + processAccountAnswer(systemRequest); + } else { + processPaired(systemRequest); + } + }) + .forDestination(Consts.STATEMENT_PROCESS, callbacks::put); init(); } - /** - * fromAccService передается когда пришел ответ от account-service - * в этом случае: по key находим пару в которой сохранен sdf57 запрос и частично выполненный sdf01 - * вместо старого sdf01 запроса выполняем новый пришедший от account-service - */ private void processSdf01And57(Long key, StatementRequest fromAccService) { Pair pair = pairOfSdfRequest.get(key); Result sdf01Res = processSdf01(fromAccService == null ? pair.getFirst() : fromAccService); @@ -119,10 +109,8 @@ public class StatementService extends QueueConsumer implements InitializingBean log.info("sdf01 execution wasn't complete, waiting for an answer from account-service"); return; } - //затем sdf57 processSdf57(pair.getSecond()); reviser.doRevise(pair.getFirst().getGroupId()); - //теперь можем продолжить сессию с шага 1 SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_01, SdfTable.SDF_57); kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); pairOfSdfRequest.remove(key); @@ -130,11 +118,6 @@ public class StatementService extends QueueConsumer implements InitializingBean } - /** - * fromAccService передается когда пришел ответ от account-service - * в этом случае: по key находим пару в которой сохранен sdf57 запрос и частично выполненный sdf01 - * вместо старого sdf01 запроса выполняем новый пришедший от account-service - */ private void processSdf08And21(Long key, StatementRequest fromAccService) { Pair pair = pairOfSdfRequest.get(key); Result sdf08Res = processSdf08(fromAccService == null ? pair.getFirst() : fromAccService); @@ -142,12 +125,7 @@ public class StatementService extends QueueConsumer implements InitializingBean log.info("sdf08 execution wasn't complete, waiting for an answer from account-service"); return; } - //затем sdf21 processSdf21(pair.getSecond()); -//fixme ревизия для бумаг reviser.doRevise(pair.getFirst().getGroupId()); - //теперь можем продолжить сессию с шага 1 -// ContinueSessionBnRequest continueSessionBn = new ContinueSessionBnRequest(); -// kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); pairOfSdfRequest.remove(key); log.info("pair sdf08/sdf21 processed successfully"); @@ -158,18 +136,17 @@ public class StatementService extends QueueConsumer implements InitializingBean Optional key = findCompleteKey(payload.getTable()); if (key.isEmpty()) { log.error("FATAL: response from account-service received id={} table {} sdf ids={}", systemRequest.getId(), - payload.getTable(), - payload - .getAccountCreationResults() - .stream() - .map(res -> String.valueOf(res.getSdfId())) - .collect(Collectors.joining(",", "[", "]")) + payload.getTable(), + payload + .getAccountCreationResults() + .stream() + .map(res -> String.valueOf(res.getSdfId())) + .collect(Collectors.joining(",", "[", "]")) ); return; } switch (payload.getTable()) { case SDF_01 -> { - //там нужно переиспользовать SDF57 запрос приходивший ранее и сохраненный в pairOfSdfRequest processSdf01And57(key.get(), payload); } case SDF_08 -> { @@ -225,7 +202,7 @@ public class StatementService extends QueueConsumer implements InitializingBean log.debug("For table {} done.", table); } else { log.warn("No operation for request.id={}; statementRequest GroupId={}, table={}", - systemRequest.getId(), statementRequest.getGroupId(), statementRequest.getTable()); + systemRequest.getId(), statementRequest.getGroupId(), statementRequest.getTable()); } } } @@ -233,25 +210,23 @@ public class StatementService extends QueueConsumer implements InitializingBean private void processSdf57(StatementRequest statementRequest) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf57, SDf57.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", statementRequest.getGroupId())); AbstractExecutor service = executorsMap.get(SdfTable.SDF_57); Result res = service.execute(sdfGroup, statementRequest); -// finishSendCommand(res, service, statementRequest); } private void processSdf21(StatementRequest statementRequest) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf21, SDf21.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", statementRequest.getGroupId())); AbstractExecutor service = executorsMap.get(SdfTable.SDF_21); Result res = service.execute(sdfGroup, statementRequest); -// finishSendCommand(res, service, statementRequest); } private void processSdf04(StatementRequest statementRequest) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf04, SDf04.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", statementRequest.getGroupId())); AbstractExecutor service = executorsMap.get(SdfTable.SDF_04); if (service != null) { Result res = service.execute(sdfGroup, statementRequest); @@ -262,7 +237,7 @@ public class StatementService extends QueueConsumer implements InitializingBean nRequest.setPriority(Priority.HIGH.getKey()); nRequest.setComment("Поручения из клиринговой системы имеют неисполненный статус в ответе ДФ-04 из расчетной организации"); kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, nRequest); - } else { // отправить в SessionMonitor + } else { kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); } } else { @@ -275,13 +250,13 @@ public class StatementService extends QueueConsumer implements InitializingBean Collection sdfGroup; if (statementRequest.getAccountCreationResults().size() == 0) { sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", statementRequest.getGroupId())); } else { sdfGroup = statementRequest.getAccountCreationResults() - .stream() - .filter(part -> part.getErrorCode() == null) - .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) - .collect(Collectors.toList()); + .stream() + .filter(part -> part.getErrorCode() == null) + .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) + .collect(Collectors.toList()); } AbstractExecutor service = executorsMap.get(SdfTable.SDF_08); Result res = service.execute(sdfGroup, statementRequest); @@ -296,7 +271,7 @@ public class StatementService extends QueueConsumer implements InitializingBean private void processSdf13(StatementRequest statementRequest) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf13, SDf13.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", statementRequest.getGroupId())); AbstractExecutor service = executorsMap.get(SdfTable.SDF_13); Result res = service.execute(sdfGroup, statementRequest); SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_13); @@ -309,7 +284,6 @@ public class StatementService extends QueueConsumer implements InitializingBean } else { kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); } -// finishSendCommand(res, service, statementRequest); } private Result processSdf01(StatementRequest statementRequest) { @@ -317,16 +291,14 @@ public class StatementService extends QueueConsumer implements InitializingBean Collection sdfGroup; if (statementRequest.getAccountCreationResults().size() == 0) { sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", statementRequest.getGroupId())); } else { log.debug("accounts were created: {} for generationId {} child generationId {}", - statementRequest.getAccountCreationResults().size(), statementRequest.getGroupId(), statementRequest.getChildGenerationId()); - //todo могут ли тут реквесты бегать по кругу, если да, то у нас проблемы + statementRequest.getAccountCreationResults().size(), statementRequest.getGroupId(), statementRequest.getChildGenerationId()); sdfGroup = statementRequest.getAccountCreationResults() - .stream() -// .filter(part -> part.getErrorCode() == null) //fixme эти случае должны попадать в ошибочный sdf02 - .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) - .collect(Collectors.toList()); + .stream() + .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) + .collect(Collectors.toList()); } AbstractExecutor service = executorsMap.get(SdfTable.SDF_01); Result res = service.execute(sdfGroup, statementRequest); @@ -342,7 +314,6 @@ public class StatementService extends QueueConsumer implements InitializingBean private Optional saveRequest(StatementRequest statementRequest) { SdfTable sdfTable = statementRequest.getTable(); - //immediately process if (List.of(SdfTable.SDF_08, SdfTable.SDF_04, SdfTable.SDF_13).contains(sdfTable)) { Long id = imdgProvider.getImdgIdGenerator().nextId(); pairOfSdfRequest.put(id, new Pair<>(statementRequest, null)); @@ -352,7 +323,6 @@ public class StatementService extends QueueConsumer implements InitializingBean Long id = imdgProvider.getImdgIdGenerator().nextId(); pairOfSdfRequest.put(id, getPairByTableName(sdfTable, statementRequest)); } else { - //найдем первую неполноценную пару Optional uncompletedPairId = findUncompletedPairByTableName(sdfTable); if (uncompletedPairId.isPresent()) { Long key = uncompletedPairId.get(); @@ -363,10 +333,8 @@ public class StatementService extends QueueConsumer implements InitializingBean completed.setSecond(statementRequest); } pairOfSdfRequest.put(key, completed); - //укомплектованная пара return Optional.of(key); } else { - //если таких нет, то просто создаем новую с одной частью Long id = imdgProvider.getImdgIdGenerator().nextId(); pairOfSdfRequest.put(id, getPairByTableName(sdfTable, statementRequest)); } @@ -388,14 +356,10 @@ public class StatementService extends QueueConsumer implements InitializingBean private Optional findUncompletedPairByTableName(SdfTable sdfTable) { Optional uncompletedPair = Optional.empty(); switch (sdfTable) { - case SDF_01 -> - uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() == null && entry.getValue().getSecond() != null).findFirst().map(Map.Entry::getKey); - case SDF_57 -> - uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() == null).findFirst().map(Map.Entry::getKey); - case SDF_08 -> - uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() == null && entry.getValue().getSecond() != null).findFirst().map(Map.Entry::getKey); - case SDF_13 -> - uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() == null).findFirst().map(Map.Entry::getKey); + case SDF_01 -> uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() == null && entry.getValue().getSecond() != null).findFirst().map(Map.Entry::getKey); + case SDF_57 -> uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() == null).findFirst().map(Map.Entry::getKey); + case SDF_08 -> uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() == null && entry.getValue().getSecond() != null).findFirst().map(Map.Entry::getKey); + case SDF_13 -> uncompletedPair = pairOfSdfRequest.entrySet().stream().filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() == null).findFirst().map(Map.Entry::getKey); } return uncompletedPair; } @@ -404,18 +368,18 @@ public class StatementService extends QueueConsumer implements InitializingBean Optional key = Optional.empty(); switch (sdfTable) { case SDF_01 -> key = pairOfSdfRequest.entrySet() - .stream() - .filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() != null) - .filter(entry -> SdfTable.SDF_01.equals(entry.getValue().getFirst().getTable()) - && SdfTable.SDF_57.equals(entry.getValue().getSecond().getTable())) - .map(Map.Entry::getKey) - .findFirst(); + .stream() + .filter(entry -> entry.getValue().getFirst() != null && entry.getValue().getSecond() != null) + .filter(entry -> SdfTable.SDF_01.equals(entry.getValue().getFirst().getTable()) + && SdfTable.SDF_57.equals(entry.getValue().getSecond().getTable())) + .map(Map.Entry::getKey) + .findFirst(); case SDF_08 -> key = pairOfSdfRequest.entrySet() - .stream() - .filter(entry -> entry.getValue().getFirst() != null) - .filter(entry -> SdfTable.SDF_08.equals(entry.getValue().getFirst().getTable())) - .map(Map.Entry::getKey) - .findFirst(); + .stream() + .filter(entry -> entry.getValue().getFirst() != null) + .filter(entry -> SdfTable.SDF_08.equals(entry.getValue().getFirst().getTable())) + .map(Map.Entry::getKey) + .findFirst(); } return key; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/TcrSearcher.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/TcrSearcher.java index 6929e8e44..fa93f46a3 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/TcrSearcher.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/TcrSearcher.java @@ -104,7 +104,6 @@ public class TcrSearcher { pb.equals("status", ServiceStatus.Active.getKey()), pb.equals("status", ServiceStatus.Reopened.getKey()) ); - //fixme BASED ON CURRENCY TradingClearingRegistry tcr = tcrImdg.getSingleObjectByPredicate( pb.and( pb.equals("moneyAccountId", accountId), diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java index c10007d94..d563727c0 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/VerificationResultComponent.java @@ -26,10 +26,6 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; -/** - * 1.70. verificationResult - Результаты сверки - * Раздел I - Функционал сверок - */ @Component public class VerificationResultComponent { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -54,7 +50,6 @@ public class VerificationResultComponent { this.idGenerator = imdgProvider.getImdgIdGenerator(); this.verificationResultImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_VerificationResult, VerificationResult.class); - //this.kafkaSender = KafkaSender kafkaSender } protected void executeRevision() { @@ -68,7 +63,6 @@ public class VerificationResultComponent { } protected void executeRevision(Collection allSDf01, Collection allAccountBalance, Collection allAccount) { - // 1. Сумму по остаткам List vResLst = new ArrayList<>(); Map> companyAccountBalance = indexList(allAccountBalance, AccountBalance::getCompanyId); @@ -89,7 +83,7 @@ public class VerificationResultComponent { allPresentCompanyId.addAll(companyAccount.keySet()); allPresentCompanyId.addAll(companySDf01.keySet()); log.info("Found {} AccountBalance, {} Account, {} SDf01 for {} companyId's.", - allAccountBalance.size(), allAccount.size(), allSDf01.size(), allPresentCompanyId.size()); + allAccountBalance.size(), allAccount.size(), allSDf01.size(), allPresentCompanyId.size()); for (Long companyId : allPresentCompanyId) { Company company = companyId == null ? null : companyImdg.getSingleObjectByID(companyId); if (company == null) { @@ -103,11 +97,11 @@ public class VerificationResultComponent { if (localCompanyAccount == null) localCompanyAccount = new ArrayList<>(); if (localCompanySDf01 == null) localCompanySDf01 = new ArrayList<>(); log.debug("Verification company[{}] with {} AccountBalance, {} Account, {} SDf01.", - companyId, localCompanyAccountBalance.size(), localCompanyAccount.size(), - localCompanySDf01.size()); + companyId, localCompanyAccountBalance.size(), localCompanyAccount.size(), + localCompanySDf01.size()); try { List result = checkOnCompany(company, - localCompanySDf01, localCompanyAccountBalance, localCompanyAccount); + localCompanySDf01, localCompanyAccountBalance, localCompanyAccount); log.trace("For company {} get {} ResultStatuses record", companyId, result.size()); for (VerificationResult rItem : result) { verificationResultImdg.insert(rItem); @@ -115,21 +109,16 @@ public class VerificationResultComponent { vResLst.addAll(result); } catch (Exception e) { log.error("Error verification for company {}: {}", - companyId, ExceptionUtils.getStackTrace(e)); + companyId, ExceptionUtils.getStackTrace(e)); } } boolean allSuccess = vResLst.stream().allMatch(vr -> ResultStatuses.success.equalsByKey(vr.getGenerationStatus())); log.debug("Total {} VerificationResult created. {}", vResLst.size(), allSuccess ? "All success." : "Has same mismatch data."); } - /** - * @param forCompany - * @param accountId Account.id by Account.account - * @return new - */ VerificationResult newVerification(Instant now, Company forCompany, Long accountId) { VerificationResult vResult = new VerificationResult(); - vResult.setId(idGenerator.nextId()); // imdg + vResult.setId(idGenerator.nextId()); if (now == null) { now = Instant.now(); } @@ -138,7 +127,7 @@ public class VerificationResultComponent { vResult.setClearingCode(forCompany.getClearingCode()); } if (accountId != null) { - vResult.setAccountId(accountId); // accountId bigint = Из accountBalance.account + vResult.setAccountId(accountId); } return vResult; } @@ -155,7 +144,7 @@ public class VerificationResultComponent { indexAccountIdByAccount.put(account.getAccount(), account.getCompanyId()); } } - { // 1.70 verificationResult + { Map indexSDf01 = index(allSDf01, SDf01::getAccount); for (AccountBalance account : allAccountBalance) { VerificationResult vResult = newVerification(now, forCompany, indexAccountIdByAccount.get(account.getAccount())); @@ -171,17 +160,15 @@ public class VerificationResultComponent { remainder = new BigDecimal(document.getRemainder()); } catch (NumberFormatException nfe) { log.warn("SDf01[{}].remainder=\"{}\" is not parseable: {}", - document.getId(), document.getRemainder(), nfe.getMessage()); + document.getId(), document.getRemainder(), nfe.getMessage()); } } BigDecimal balance = account.getCloseBalanceAmount() == null ? BigDecimal.ZERO : account.getCloseBalanceAmount(); - // сравнить remainder==balance BigDecimal diff = balance.subtract(remainder).setScale(2, RoundingMode.HALF_UP).abs(); vResult.setDiffSum(diff); vResult.setInSum(account.getOpenBalanceAmount()); vResult.setOutIntSum(account.getCloseBalanceAmount()); vResult.setOutExtSum(remainder); - //todo похоже надо группировку по String account сделать, сверить с ТЗ. log.trace("company[{}] AccountBalance[{}] diff = {}", forCompany.getId(), account.getId(), diff); if (BigDecimal.ZERO.compareTo(diff) == 0) { vResult.setResultStatus(ResultStatuses.success.getKey()); @@ -191,20 +178,17 @@ public class VerificationResultComponent { } } } - - // 2.1 Номера торговых/клиринговых счетов, соответствующие загруженным в КС - // -sDf01.deal = account.account & accountType=CLRN & accountStatus=UNBL { Set sDf01Keys = allSDf01.stream() - .filter(sdf01 -> sdf01.getDeal() != null) - .map(sdf01 -> sdf01.getDeal()) - .collect(Collectors.toSet()); + .filter(sdf01 -> sdf01.getDeal() != null) + .map(sdf01 -> sdf01.getDeal()) + .collect(Collectors.toSet()); Set accountKeys = allAccount.stream() - .filter(account -> AccountType.Clrn.equalsByKey(account.getAccountType()) && "UNBL".equals(account.getStatus())) - .map(sdf01 -> sdf01.getAccount()) - .collect(Collectors.toSet()); + .filter(account -> AccountType.Clrn.equalsByKey(account.getAccountType()) && "UNBL".equals(account.getStatus())) + .map(sdf01 -> sdf01.getAccount()) + .collect(Collectors.toSet()); boolean isOk = sDf01Keys.size() == accountKeys.size() && - sDf01Keys.containsAll(accountKeys) && accountKeys.containsAll(sDf01Keys); + sDf01Keys.containsAll(accountKeys) && accountKeys.containsAll(sDf01Keys); VerificationResult vResult = newVerification(now, forCompany, null); checks.add(vResult); @@ -214,10 +198,8 @@ public class VerificationResultComponent { vResult.setResultStatus(ResultStatuses.notSuccess.getKey()); } log.trace("Control summ 1, count: sDf01Keys={}, accountKeys={}; check result:{}", - sDf01Keys.size(), accountKeys.size(), vResult.getResultStatus()); + sDf01Keys.size(), accountKeys.size(), vResult.getResultStatus()); } - - // 2.2 Количество торговых/клиринговых счетов, соответствующие загруженным в КС - COUNT[sDf01.deal] = COUNT [account.account] { long countSDf01 = allSDf01.stream().filter(sDf01 -> sDf01.getDeal() != null).count(); long countAccount = allAccount.stream().filter(account -> account.getAccount() != null).count(); @@ -230,10 +212,8 @@ public class VerificationResultComponent { vResult.setResultStatus(ResultStatuses.notSuccess.getKey()); } log.trace("countSDf01={}, countAccount={}, result: {}", - countSDf01, countAccount, vResult.getResultStatus()); + countSDf01, countAccount, vResult.getResultStatus()); } - - // 2.3 Суммарный остаток по счетам { Map summOfSDf01 = new HashMap<>(); for (SDf01 document : allSDf01) { @@ -247,7 +227,7 @@ public class VerificationResultComponent { summOfSDf01.put(account, a); } catch (NumberFormatException nfe) { log.warn("SDf01[{}].remainder=\"{}\" is not parseable: {}", - document.getId(), document.getRemainder(), nfe.getMessage()); + document.getId(), document.getRemainder(), nfe.getMessage()); } } else { log.debug("SDf01[{}].remainder is null or empty", document.getId()); @@ -265,7 +245,6 @@ public class VerificationResultComponent { summOfAccountBalance.put(accountKey, a); } } - // summSDf01==summAccount Set allAccountStr = new HashSet<>(); allAccountStr.addAll(summOfSDf01.keySet()); allAccountStr.addAll(summOfAccountBalance.keySet()); @@ -292,12 +271,12 @@ public class VerificationResultComponent { vResult.setDiffSum(diff); vResult.setOutExtSum(fromSDf01); log.trace("for company[{}], account \"{}\" summ of fromSDf01={}, of fromBalance={}; result {}", - forCompany.getId(), account, fromSDf01, fromBalance, vResult.getResultStatus()); + forCompany.getId(), account, fromSDf01, fromBalance, vResult.getResultStatus()); } } boolean hasMissmatch = checks.stream() - .anyMatch(check -> ResultStatuses.notSuccess.equalsByKey(check.getResultStatus())); + .anyMatch(check -> ResultStatuses.notSuccess.equalsByKey(check.getResultStatus())); final String finalStatus = hasMissmatch ? ResultStatuses.notSuccess.getKey() : ResultStatuses.success.getKey(); log.trace("For company {} set GenerationStatus = {}", forCompany.getId(), finalStatus); Long generationId = idGenerator.nextId(); @@ -316,7 +295,7 @@ public class VerificationResultComponent { V exist = index.put(key, obj); if (exist != null) { log.warn("{} with id={},{} has duplicate Account=\"{}\"", - exist.getClass().getSimpleName(), exist.getId(), obj.getId(), key); + exist.getClass().getSimpleName(), exist.getId(), obj.getId(), key); } } return index; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsAssetsCreator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsAssetsCreator.java index 7048bac2f..668fa8523 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsAssetsCreator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsAssetsCreator.java @@ -40,7 +40,6 @@ public class LiabilitiesClaimsAssetsCreator { private LiabilitiesClaimsAssets createLCA(ExecutionDeposit executionDeposit, Account account) { LiabilitiesClaimsAssets liabilitiesClaimsAssets = new LiabilitiesClaimsAssets(); liabilitiesClaimsAssets.setCompanyId(executionDeposit.getCompanyId()); -// todo new fields liabilitiesClaimsAssets.setAccountId(executionDeposit.getAccountId()); liabilitiesClaimsAssets.setAccountType(account.getAccountType()); liabilitiesClaimsAssets.setAccount(account.getAccount()); liabilitiesClaimsAssets.setCurrency(executionDeposit.getSettlementCurrency()); @@ -61,7 +60,7 @@ public class LiabilitiesClaimsAssetsCreator { public LiabilitiesClaimsAssets createFirstLegLCA(ClearingCategory category, ExecutionDeposit executionDeposit) { - Account account = null; // todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId()); + Account account = null; LiabilitiesClaimsAssets lca = createLCA(executionDeposit, account); lca.setSettlementDate(executionDeposit.getFirstLegSettlementDate()); AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()); @@ -79,7 +78,7 @@ public class LiabilitiesClaimsAssetsCreator { } public LiabilitiesClaimsAssets createSecondLegLCA(ClearingCategory category, ExecutionDeposit executionDeposit) { - Account account = null;// todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId()); + Account account = null; LiabilitiesClaimsAssets lca = createLCA(executionDeposit, account); lca.setSettlementDate(executionDeposit.getSecondLegSettlementDate()); AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()); @@ -115,7 +114,7 @@ public class LiabilitiesClaimsAssetsCreator { public void updateSecondLegLca(LiabilitiesClaimsAssets lca, ExecutionDeposit executionDeposit, ClearingCategory category) { - Account account = null; // todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId()); + Account account = null; AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()); boolean iClrn = ClearingCategory.I.equals(category) && AccountType.Clrn.equals(accType); boolean vInfo = ClearingCategory.V.equals(category) && AccountType.Info.equals(accType); @@ -135,14 +134,11 @@ public class LiabilitiesClaimsAssetsCreator { } public void updateFirstLegLca(LiabilitiesClaimsAssets lca, ExecutionDeposit executionDeposit, ClearingCategory category) { - Account account = null; // todo CLS-275 accountImdg.getSingleObjectByID(executionDeposit.getAccountId()); + Account account = null; AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()); boolean iClrn = ClearingCategory.I.equals(category) && AccountType.Clrn.equals(accType); boolean vInfo = ClearingCategory.V.equals(category) && AccountType.Info.equals(accType); boolean bClrn = ClearingCategory.B.equals(category) && AccountType.Clrn.equals(accType); - //liabilitiesQuantity - //Клиринг (по первой ноге и категория I и счет CLRN): - //текущее значение liabilitiesClaimsAssets.liabilitiesQuantity + executionDeposit.firstLegAmount if (iClrn || vInfo) { BigDecimal prevLQuantity = BigDecimalUtil.safeBD(lca.getLiabilitiesQuantity()); BigDecimal firstLegAmount = BigDecimalUtil.safeBD(executionDeposit.getFirstLegAmount()); @@ -155,20 +151,5 @@ public class LiabilitiesClaimsAssetsCreator { log.trace("update first leg LCA: prevClaimsQuantity={}, firstLegAmount={}", prevCQuantity, firstLegAmount); lca.setClaimsQuantity(prevCQuantity.add(firstLegAmount)); } - // - //Клиринг (по второй ноге и категория I и счет CLRN): - //не меняется. - // - // Клиринг (по первой ноге и категория V и счет INFO): - //текущее значение liabilitiesClaimsAssets.liabilitiesQuantity + executionDeposit.firstLegAmount - // - //Клиринг (по второй ноге и категория V и счет INFO): - //не меняется. - // - //Клиринг (по первой ноге и категория B и счет CLRN): - //не меняется. - // - //Клиринг (по второй ноге и категория B и счет CLRN): - //= текущее значение liabilitiesClaimsAssets.liabilitiesQuantity + executionDeposit.secondLegAmount } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java index 891f6e367..d6d6077c1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/LiabilitiesClaimsMoneyCreator.java @@ -19,7 +19,7 @@ import java.util.Optional; import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; -@Deprecated // liabilitiesClaimsMoney даляется +@Deprecated @Component public class LiabilitiesClaimsMoneyCreator { private final Logger log = LoggerFactory.getLogger(this.getClass()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilder.java index cf11cdb6e..0b7227522 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilder.java @@ -53,12 +53,12 @@ public class PaymentInstructionBuilder { Imdg securityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class); Optional registryLM = registries.stream() - .filter(rgst -> RegistryDesignation.L.equalsByKey(rgst.getRegistryDesignation())) - .findFirst(); + .filter(rgst -> RegistryDesignation.L.equalsByKey(rgst.getRegistryDesignation())) + .findFirst(); Optional registryCM = registries.stream() - .filter(rgst -> RegistryDesignation.C.equalsByKey(rgst.getRegistryDesignation())) - .findFirst(); + .filter(rgst -> RegistryDesignation.C.equalsByKey(rgst.getRegistryDesignation())) + .findFirst(); PaymentInstruction paymentInstruction = new PaymentInstruction(); @@ -68,8 +68,8 @@ public class PaymentInstructionBuilder { paymentInstruction.setSenderId(registry.getCompanyId()); CompanySymbols companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(Map.of( - "companyId", registry.getCompanyId(), - "companySymbol", CompanySymbol.BIC.getKey())); + "companyId", registry.getCompanyId(), + "companySymbol", CompanySymbol.BIC.getKey())); if (companySymbols != null) { paymentInstruction.setPayeeBic(companySymbols.getCompanySymbolValue()); @@ -102,8 +102,8 @@ public class PaymentInstructionBuilder { CompanySymbols companySymbols = null; if (registry.getCounterPartyId() != null) { companySymbols = companySymbolsImdg.getFirstObjectByFieldValues(Map.of( - "companyId", registry.getCompanyId(), - "companySymbol", CompanySymbol.BIC.getKey()) + "companyId", registry.getCompanyId(), + "companySymbol", CompanySymbol.BIC.getKey()) ); } if (companySymbols != null) { @@ -126,8 +126,6 @@ public class PaymentInstructionBuilder { paymentInstruction.setDebitLeg_securityId(security.getId()); } } - -// paymentInstruction.setPaymentPurpose("Расчеты клиринговой сессии"); paymentInstruction.setCreditLeg_direction(InOutDirection.out.getKey()); paymentInstruction.setDebitLeg_direction(InOutDirection.in.getKey()); paymentInstruction.setTransactionStatus("STLD"); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderFinalMkrDeals.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderFinalMkrDeals.java index 36680c070..77c5cf3fd 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderFinalMkrDeals.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderFinalMkrDeals.java @@ -30,9 +30,6 @@ import ru.spcex.platform.utils.collection.Pair; import ru.spcex.platform.utils.text.TextUtil; import ru.spcex.platform.utils.time.TimeUtil; -/** - * Builder для кейса итоговой сессии МКР, 7 шаг, кейс - по сделкам - */ public class PaymentInstructionBuilderFinalMkrDeals { private final static Logger log = LoggerFactory.getLogger(PaymentInstructionBuilderFinalMkrDeals.class); @@ -48,7 +45,7 @@ public class PaymentInstructionBuilderFinalMkrDeals { private Long sessionId; private BigDecimal amount; protected LocalDate documentNumberResetAt; - protected AtomicLong documentNumberId = new AtomicLong(0L); // порядковый номер (сквозной по всем компаниям за день + protected AtomicLong documentNumberId = new AtomicLong(0L); private static final DateTimeFormatter DATE_FORMATTER_ddMMyy = DateTimeFormatter.ofPattern("ddMMyy"); private String purpose; private String currency; @@ -111,9 +108,9 @@ public class PaymentInstructionBuilderFinalMkrDeals { PaymentInstruction payment2; Instant now = Instant.now(); - String symbolPRC = selectSymbolValue(Sender.Prc.getId(), CompanySymbol.BIC); // 2 "НКО АО ПРЦ" + String symbolPRC = selectSymbolValue(Sender.Prc.getId(), CompanySymbol.BIC); String tranBic; - { // record 1 + { payment1 = new PaymentInstruction(); payment1.setCreated(now); payment1.setClearingDate(TimeUtil.toLocalDate(now)); @@ -128,7 +125,7 @@ public class PaymentInstructionBuilderFinalMkrDeals { } } { - Company companyPRC = companyImdg.getSingleObjectByID(Sender.Prc.getId()); // 2 "НКО АО ПРЦ" + Company companyPRC = companyImdg.getSingleObjectByID(Sender.Prc.getId()); if (companyPRC == null) { log.warn("Company.id={} not found", Sender.Prc.getId()); } else { @@ -193,13 +190,11 @@ public class PaymentInstructionBuilderFinalMkrDeals { payment1.setDebitLeg_securityId(lm_t.getSecurityId()); payment1.setSessionId(sessionId); } - - //**************** - { // record 2 + { payment2 = new PaymentInstruction(); payment2.setCreated(now); payment2.setClearingDate(TimeUtil.toLocalDate(now)); - payment2.setSenderId(Sender.One.getId()); // СПВБ + payment2.setSenderId(Sender.One.getId()); payment2.setAddresseeId(cm_t.getCompanyId()); String symbol2 = selectSymbolValue(payment2.getAddresseeId(), CompanySymbol.BIC); if (symbol2 == null) { @@ -259,7 +254,7 @@ public class PaymentInstructionBuilderFinalMkrDeals { } LocalDate nowD = LocalDate.now(); if (documentNumberResetAt == null || documentNumberResetAt.isBefore(nowD)) synchronized (this) { - long oldNum = documentNumberId.get(); // reset optimistic + long oldNum = documentNumberId.get(); if (oldNum > 0) { while (!documentNumberId.compareAndSet(oldNum, 0)) { oldNum = documentNumberId.get(); @@ -270,8 +265,8 @@ public class PaymentInstructionBuilderFinalMkrDeals { } String paymentDate = DATE_FORMATTER_ddMMyy.format(TimeUtil.toLocalDate(paymentInstruction.getPaymentDate())); String num = String.format("%s/%s/%s/%s", - rgs.getContract(), paymentDate, - paymentInstruction.getSenderId(), documentNumberId.incrementAndGet() + rgs.getContract(), paymentDate, + paymentInstruction.getSenderId(), documentNumberId.incrementAndGet() ); return num; } @@ -281,8 +276,8 @@ public class PaymentInstructionBuilderFinalMkrDeals { return null; } CompanySymbols cSymbol = companySymbolsImdg.getFirstObjectByFieldValues(Map.of( - "companyId", companyId, - "companySymbol", symbol.getKey())); + "companyId", companyId, + "companySymbol", symbol.getKey())); if (cSymbol == null) { return null; } else { @@ -295,18 +290,18 @@ public class PaymentInstructionBuilderFinalMkrDeals { return null; } Account account = accountImdg.getFirstObjectByFieldValues(Map.of( - "companyId", companyId, - "accountType", accountType.getKey(), - "status", accountStatus.getKey(), - "processingSign", processingSign.getKey() + "companyId", companyId, + "accountType", accountType.getKey(), + "status", accountStatus.getKey(), + "processingSign", processingSign.getKey() )); if (account == null) { log.trace("Account not found by: companyId={} accountType={} accountStatus={} processingSign={}", - companyId, accountType.getKey(), accountStatus.getKey(), processingSign.getKey() + companyId, accountType.getKey(), accountStatus.getKey(), processingSign.getKey() ); } else { log.trace("Found Account.id={} by: companyId={} accountType={} accountStatus={} processingSign={}", account.getId(), - companyId, accountType.getKey(), accountStatus.getKey(), processingSign.getKey() + companyId, accountType.getKey(), accountStatus.getKey(), processingSign.getKey() ); } return account; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderForSecurities.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderForSecurities.java index 55b5bc356..cf3a61fa7 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderForSecurities.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderForSecurities.java @@ -38,7 +38,7 @@ public class PaymentInstructionBuilderForSecurities { private String purpose; protected LocalDate documentNumberResetAt; - protected AtomicLong documentNumberId = new AtomicLong(0L); // порядковый номер (сквозной по всем компаниям за день + protected AtomicLong documentNumberId = new AtomicLong(0L); private static final DateTimeFormatter DATE_FORMATTER_ddMMyy = DateTimeFormatter.ofPattern("ddMMyy"); private Long senderId; private Long addresseeId; @@ -110,31 +110,6 @@ public class PaymentInstructionBuilderForSecurities { payment.setClearingDate(TimeUtil.toLocalDate(now)); payment.setSenderId(senderId); payment.setAddresseeId(addresseeId); -// { -// String tranBic = selectSymbolValue(payment.getAddresseeId(), CompanySymbol.BIC); -// if (tranBic == null) { -// log.warn("CompanySymbols BIC not found for companyId={}", payment.getAddresseeId()); -// } else { -// payment.setAdresseeBic(tranBic); -// } -// } -// { -// Company companyPRC = companyImdg.getSingleObjectByID(Sender.Prc.getId()); // 2 "НКО АО ПРЦ" -// if (companyPRC == null) { -// log.warn("Company.id={} not found", Sender.Prc.getId()); -// } else { -// payment.setPayeeBankName(companyPRC.getShortName()); -// payment.setAddresseeBankName(companyPRC.getShortName()); -// } -// } -// { -// String payeeBic = selectSymbolValue(payment.getSenderId(), CompanySymbol.BIC); -// if (payeeBic == null) { -// log.warn("payeeBic by senderId={} not found", payment.getSenderId()); -// } else { -// payment.setPayeeBic(payeeBic); -// } -// } if (registry.getSettlementDate() != null) { payment.setPaymentDate(TimeUtil.localDateToInstant(registry.getSettlementDate())); @@ -178,7 +153,7 @@ public class PaymentInstructionBuilderForSecurities { } LocalDate nowD = LocalDate.now(); if (documentNumberResetAt == null || documentNumberResetAt.isBefore(nowD)) synchronized (this) { - long oldNum = documentNumberId.get(); // reset optimistic + long oldNum = documentNumberId.get(); if (oldNum > 0) { while (!documentNumberId.compareAndSet(oldNum, 0)) { oldNum = documentNumberId.get(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderV2.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderV2.java index 9150f0b07..d510b1041 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderV2.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionBuilderV2.java @@ -52,7 +52,7 @@ public class PaymentInstructionBuilderV2 { private Account debitLegAccount; private String purpose; protected LocalDate documentNumberResetAt; - protected AtomicLong documentNumberId = new AtomicLong(0L); // порядковый номер (сквозной по всем компаниям за день + protected AtomicLong documentNumberId = new AtomicLong(0L); private static final DateTimeFormatter DATE_FORMATTER_ddMMyy = DateTimeFormatter.ofPattern("ddMMyy"); private Long senderId; private Long addresseeId; @@ -144,7 +144,7 @@ public class PaymentInstructionBuilderV2 { } } { - Company companyPRC = companyImdg.getSingleObjectByID(Sender.Prc.getId()); // 2 "НКО АО ПРЦ" + Company companyPRC = companyImdg.getSingleObjectByID(Sender.Prc.getId()); if (companyPRC == null) { log.warn("Company.id={} not found", Sender.Prc.getId()); } else { @@ -213,7 +213,7 @@ public class PaymentInstructionBuilderV2 { } LocalDate nowD = LocalDate.now(); if (documentNumberResetAt == null || documentNumberResetAt.isBefore(nowD)) synchronized (this) { - long oldNum = documentNumberId.get(); // reset optimistic + long oldNum = documentNumberId.get(); if (oldNum > 0) { while (!documentNumberId.compareAndSet(oldNum, 0)) { oldNum = documentNumberId.get(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java index 02d9be6c6..21891370d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/PaymentInstructionCreator.java @@ -29,8 +29,8 @@ import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; @Service public class PaymentInstructionCreator { - protected static final Long SPVB_ID = 1L; // СПВБ - protected static final Long PRC_ID = 2L; // 2 "НКО АО ПРЦ" + protected static final Long SPVB_ID = 1L; + protected static final Long PRC_ID = 2L; private static final DateTimeFormatter DATE_FORMATTER_ddMMyy = DateTimeFormatter.ofPattern("ddMMyy"); private final Logger log = LoggerFactory.getLogger(getClass()); @@ -44,7 +44,7 @@ public class PaymentInstructionCreator { protected final Imdg liabilitiesClaimsMoneyImdg; protected final Imdg executionDepositImdg; - protected AtomicLong documentNumberId = new AtomicLong(0L); // порядковый номер (сквозной по всем компаниям за день + protected AtomicLong documentNumberId = new AtomicLong(0L); protected LocalDate documentNumberResetAt; @Autowired @@ -59,16 +59,11 @@ public class PaymentInstructionCreator { this.idGenerator = imdgProvider.getImdgIdGenerator(); } - /** - * 2.2.2. Выполнить Создание paymentInstruction по liabilitiesClaimsAssets - * - * @return Созданные PaymentInstruction, может быть несколько. Они уже сохранены в IMDG. - */ public List createAndSavePaymentInstructions(ExecutionDeposit executionDeposit, LiabilitiesClaimsAssets liabilitiesClaimsAssets, Collection clearingCategory) { List newPaymentInstructions = createPaymentInstructions(executionDeposit, liabilitiesClaimsAssets, clearingCategory); log.trace("Created {} PaymentInstruction by LiabilitiesClaimsAssets[{}], category {}. Do save in IMDG.", - newPaymentInstructions.size(), liabilitiesClaimsAssets.getId(), clearingCategory); + newPaymentInstructions.size(), liabilitiesClaimsAssets.getId(), clearingCategory); for (PaymentInstruction instruction : newPaymentInstructions) { paymentInstructionImdg.insert(instruction); } @@ -80,80 +75,66 @@ public class PaymentInstructionCreator { LiabilitiesClaimsAssets liabilitiesClaimsAssets, Instant now) { - payment1.setClearingDate(TimeUtil.toLocalDate(now)); - payment1.setSenderId(liabilitiesClaimsAssets.getCompanyId()); - payment1.setAddresseeId(SPVB_ID); // СПВБ + payment1.setClearingDate(TimeUtil.toLocalDate(now)); + payment1.setSenderId(liabilitiesClaimsAssets.getCompanyId()); + payment1.setAddresseeId(SPVB_ID); - String symbol1 = selectSymbolValue(payment1.getAddresseeId(), CompanySymbol.BIC); - if (symbol1 == null) { - log.warn("CompanySymbols BIC not found for companyId={}", payment1.getAddresseeId()); - } else { - payment1.setAdresseeBic(symbol1); + String symbol1 = selectSymbolValue(payment1.getAddresseeId(), CompanySymbol.BIC); + if (symbol1 == null) { + log.warn("CompanySymbols BIC not found for companyId={}", payment1.getAddresseeId()); + } else { + payment1.setAdresseeBic(symbol1); + } + + Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); + String companyPRCName = null; + if (companyPRC == null) { + log.warn("Company.id={} not found", PRC_ID); + } else { + companyPRCName = companyPRC.getShortName(); + } + payment1.setPayeeBankName(companyPRCName); + + String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); + payment1.setPayeeBic(symbolPRC); + + payment1.setAddresseeBankName(companyPRCName); + payment1.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); + + payment1.setPaymentPurpose(paymentPurpose(liabilitiesClaimsAssets.getContract())); + + payment1.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); + BigDecimal amount = liabilitiesClaimsAssets.getLiabilitiesQuantity() == null ? null : liabilitiesClaimsAssets.getLiabilitiesQuantity().abs(); + payment1.setCreditLeg_amount(amount); + payment1.setDebitLeg_amount(amount); + + payment1.setCreditLeg_accountId(liabilitiesClaimsAssets.getAccountId()); + + payment1.setCredit_csAccount(null); + + { + Account acc1 = accountImdg.getSingleObjectByID(payment1.getCreditLeg_accountId()); + if (acc1 != null) { + payment1.setCreditLeg_account(acc1.getAccount()); } + } - Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); // 2 "НКО АО ПРЦ" - String companyPRCName = null; - if (companyPRC == null) { - log.warn("Company.id={} not found", PRC_ID); - } else { - companyPRCName = companyPRC.getShortName(); + { + Account acc1 = selectAccount(payment1.getAddresseeId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); + if (acc1 != null) { + payment1.setDebitLeg_accountId(acc1.getId()); + payment1.setDebitLeg_account(acc1.getAccount()); } - payment1.setPayeeBankName(companyPRCName); + } - String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); // 2 "НКО АО ПРЦ" - payment1.setPayeeBic(symbolPRC); + payment1.setDebit_csAccount(null); - payment1.setAddresseeBankName(companyPRCName); - payment1.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); + payment1.setCreditLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); + payment1.setDebitLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); - payment1.setPaymentPurpose(paymentPurpose(liabilitiesClaimsAssets.getContract())); - - payment1.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); - BigDecimal amount = liabilitiesClaimsAssets.getLiabilitiesQuantity() == null ? null : liabilitiesClaimsAssets.getLiabilitiesQuantity().abs(); - payment1.setCreditLeg_amount(amount); - payment1.setDebitLeg_amount(amount); - - payment1.setCreditLeg_accountId(liabilitiesClaimsAssets.getAccountId()); - - payment1.setCredit_csAccount(null); - - { - Account acc1 = accountImdg.getSingleObjectByID(payment1.getCreditLeg_accountId()); - if (acc1 != null) { - payment1.setCreditLeg_account(acc1.getAccount()); - } - } - - { - Account acc1 = selectAccount(payment1.getAddresseeId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); - if (acc1 != null) { - payment1.setDebitLeg_accountId(acc1.getId()); - payment1.setDebitLeg_account(acc1.getAccount()); - } - } - - payment1.setDebit_csAccount(null); -// payment1.setCreditLeg_direction(InOutDirection.out.getKey()); -// payment1.setDebitLeg_direction(InOutDirection.in.getKey()); - - payment1.setCreditLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); - payment1.setDebitLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); - - payment1.setTransactionStatus(TransactionStatus.stld.getKey()); - - -// payment1.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment1)); + payment1.setTransactionStatus(TransactionStatus.stld.getKey()); } - /** - * Создаёт и сохраняет - * - * - * @param executionDeposit - * @param liabilitiesClaimsAssets - * @param clearingCategory - * @return - */ protected List createPaymentInstructions(ExecutionDeposit executionDeposit, LiabilitiesClaimsAssets liabilitiesClaimsAssets, Collection clearingCategory) { List newPaymentInstructions = new ArrayList<>(); @@ -163,9 +144,7 @@ public class PaymentInstructionCreator { log.debug("For liabilitiesClaimsAssets.SettlementDate={} is not today.", liabilitiesClaimsAssets.getSettlementDate()); return newPaymentInstructions; } - // I if (clearingCategory.contains(ClearingCategory.I)) { - // см. updatePaymentInstructionsFirstI() - код одинаковый log.debug("By liabilitiesClaimsAssets[{}] create for category I 1 PaymentInstruction record", liabilitiesClaimsAssets.getId()); PaymentInstruction payment1 = new PaymentInstruction(); @@ -178,360 +157,168 @@ public class PaymentInstructionCreator { payment1.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment1)); newPaymentInstructions.add(payment1); - - /*{ - PaymentInstruction payment2 = new PaymentInstruction(); - - payment2.setId(idGenerator.nextId()); - payment2.setCreated(now); - payment2.setClearingDate(TimeUtil.toLocalDate(now)); - - payment2.setSenderId(SPVB_ID); // СПВБ - - { - String sqlLCA = String.format("exchangeExecutionId = %s and side != '%s'", - executionDeposit.getExchangeExecutionId(), executionDeposit.getSide()); - ExecutionDeposit counterExecutionDeposit = executionDepositImdg.getSingleObjectBySQL(sqlLCA); - if (counterExecutionDeposit == null) { - log.warn("Counter ExecutionDeposit not found for : {}", sqlLCA); - } else { - payment2.setAddresseeId(counterExecutionDeposit.getCompanyId()); - log.trace("payment2.AddresseeId={} found by: {}", payment2.getAddresseeId(), sqlLCA); - } - } - - String symbol2 = selectSymbolValue(payment2.getAddresseeId(), CompanySymbol.BIC); - if (symbol2 == null) { - log.warn("CompanySymbols BIC not found for companyId={}", payment2.getAddresseeId()); - } else { - payment2.setAdresseeBic(symbol2); - } - - Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); // 2 "НКО АО ПРЦ" - String companyPRCName = null; - if (companyPRC == null) { - log.warn("Company.id={} not found", PRC_ID); - } else { - companyPRCName = companyPRC.getShortName(); - } - payment2.setPayeeBankName(companyPRCName); - - String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); // 2 "НКО АО ПРЦ" - payment2.setPayeeBic(symbolPRC); - - payment2.setAddresseeBankName(companyPRCName); - - payment2.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); - - payment2.setPaymentPurpose("Размещение депозита " + liabilitiesClaimsAssets.getContract()); - - payment2.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); - - Long amount = liabilitiesClaimsAssets.getLiabilitiesQuantity() == null ? null : liabilitiesClaimsAssets.getLiabilitiesQuantity().abs().longValue(); - payment2.setCreditLegAmount(amount); - payment2.setDebitLegAmount(amount); - - { - Account anotherAcc = selectAccount(payment2.getSenderId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); - if (anotherAcc == null) { - log.warn("Account not found: companyId = {} AND accountType={} AND accountStatus={} AND processingSign={}", - payment2.getSenderId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); - } else { - payment2.setCreditLegAccountId(anotherAcc.getId()); - } - } - - payment2.setCreditCsAccount(null); - - { - Account acc2 = accountImdg.getSingleObjectByID(payment2.getCreditLegAccountId()); - if (acc2 != null) { - payment2.setCreditLegAccount(acc2.getAccount()); - } - } - - { - Account acc2 = selectAccount(payment2.getAddresseeId(), AccountType.Clrn, Status.Active, Allowed.ALLOWED); - if (acc2 != null) { - payment2.setDebitLegAccountId(acc2.getId()); - payment2.setDebitLegAccount(acc2.getAccount()); - } - } - - payment2.setDebitCsAccount(null); - -// payment2.setCreditLegDirection(InOutDirection.out.getKey()); -// payment2.setDebitLegDirection(InOutDirection.in.getKey()); - - payment2.setCreditLegCurrencyCode(liabilitiesClaimsAssets.getCurrency()); - payment2.setDebitLegCurrencyCode(liabilitiesClaimsAssets.getCurrency()); - - payment2.setTransactionStatus(TransactionStatus.stld.getKey()); - - - payment2.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment2)); - - newPaymentInstructions.add(payment2); - }*/ } else { - // V / B if (clearingCategory.contains(ClearingCategory.V)) { log.debug("By liabilitiesClaimsAssets[{}] create for category V 0 PaymentInstruction record - ignore", liabilitiesClaimsAssets.getId()); -// PaymentInstruction payment1 = new PaymentInstruction(); -// payment1.setId(idGenerator.nextId()); -// payment1.setCreated(now); -// payment1.setClearingDate(TimeUtil.toLocalDate(now)); -// -// payment1.setSenderId(SPVB_ID); // СПВБ -// -// { -// String sqlLCA = String.format("exchangeExecutionId = %s and side != '%s'", -// executionDeposit.getExchangeExecutionId(), executionDeposit.getSide()); -// ExecutionDeposit counterExecutionDeposit = executionDepositImdg.getSingleObjectBySQL(sqlLCA); -// if (counterExecutionDeposit == null) { -// log.warn("Counter ExecutionDeposit not found for : {}", sqlLCA); -// } else { -// payment1.setAddresseeId(counterExecutionDeposit.getCompanyId()); -// log.trace("payment1.AddresseeId={} found by: {}", payment1.getAddresseeId(), sqlLCA); -// } -// } -// -// String symbol1 = selectSymbolValue(payment1.getAddresseeId(), CompanySymbol.BIC); -// if (symbol1 == null) { -// log.warn("CompanySymbols BIC not found for companyId={}", payment1.getAddresseeId()); -// } else { -// payment1.setAdresseeBic(symbol1); -// } -// -// Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); // 2 "НКО АО ПРЦ" -// String companyPRCName = null; -// if (companyPRC == null) { -// log.warn("Company.id={} not found", PRC_ID); -// } else { -// companyPRCName = companyPRC.getShortName(); -// } -// payment1.setPayeeBankName(companyPRCName); -// -// String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); // 2 "НКО АО ПРЦ" -// payment1.setPayeeBic(symbolPRC); -// -// payment1.setAddresseeBankName(companyPRCName); -// -// payment1.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); -// -// payment1.setPaymentPurpose("Размещение депозита " + liabilitiesClaimsAssets.getContract()); -// -// payment1.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); -// -// Long amount = liabilitiesClaimsAssets.getLiabilitiesQuantity() == null ? null : liabilitiesClaimsAssets.getLiabilitiesQuantity().abs().longValue(); -// payment1.setCreditLegAmount(amount); -// payment1.setDebitLegAmount(amount); -// -// { -// Account acc1 = selectAccount(payment1.getSenderId(), AccountType.Anlt, Status.Active, Allowed.ALLOWED); -// if (acc1 == null) { -// log.warn("Account not found: companyId = {} AND accountType={} AND accountStatus={} AND processingSign={}", -// payment1.getSenderId(), AccountType.Anlt, Status.Active, Allowed.ALLOWED); -// } else { -// payment1.setCreditLegAccountId(acc1.getId()); -// payment1.setCreditLegAccount(acc1.getAccount()); -// } -// } -// -// payment1.setCreditCsAccount(null); -// -// { -// Account acc1 = selectAccount(payment1.getAddresseeId(), AccountType.Corr, Status.Active, Allowed.ALLOWED); -// if (acc1 != null) { -// payment1.setDebitLegAccountId(acc1.getId()); -// payment1.setDebitLegAccount(acc1.getAccount()); -// } -// } -// -// payment1.setDebitCsAccount(null); -// -//// payment1.setCreditLegDirection(InOutDirection.out.getKey()); -//// payment1.setDebitLegDirection(InOutDirection.in.getKey()); -// -// payment1.setCreditLegCurrencyCode(liabilitiesClaimsAssets.getCurrency()); -// payment1.setDebitLegCurrencyCode(liabilitiesClaimsAssets.getCurrency()); -// -// payment1.setTransactionStatus(TransactionStatus.stld.getKey()); -// -// -// payment1.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment1)); -// -// newPaymentInstructions.add(payment1); } - if (clearingCategory.contains(ClearingCategory.B)) { - log.debug("By liabilitiesClaimsAssets[{}] create for category B 2 PaymentInstruction record", liabilitiesClaimsAssets.getId()); - { // record 1 - { - PaymentInstruction payment1 = new PaymentInstruction(); - payment1.setId(idGenerator.nextId()); - payment1.setCreated(now); - payment1.setClearingDate(TimeUtil.toLocalDate(now)); + if (clearingCategory.contains(ClearingCategory.B)) { + log.debug("By liabilitiesClaimsAssets[{}] create for category B 2 PaymentInstruction record", liabilitiesClaimsAssets.getId()); + { + { + PaymentInstruction payment1 = new PaymentInstruction(); + payment1.setId(idGenerator.nextId()); + payment1.setCreated(now); + payment1.setClearingDate(TimeUtil.toLocalDate(now)); - payment1.setSenderId(SPVB_ID); // СПВБ - payment1.setAddresseeId(liabilitiesClaimsAssets.getCompanyId()); + payment1.setSenderId(SPVB_ID); + payment1.setAddresseeId(liabilitiesClaimsAssets.getCompanyId()); - String symbol2 = selectSymbolValue(payment1.getAddresseeId(), CompanySymbol.BIC); - if (symbol2 == null) { - log.warn("CompanySymbols BIC not found for companyId={}", payment1.getAddresseeId()); - } else { - payment1.setAdresseeBic(symbol2); - } - - Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); // 2 "НКО АО ПРЦ" - String companyPRCName = null; - if (companyPRC == null) { - log.warn("Company.id={} not found", PRC_ID); - } else { - companyPRCName = companyPRC.getShortName(); - } - payment1.setPayeeBankName(companyPRCName); - - String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); // 2 "НКО АО ПРЦ" - payment1.setPayeeBic(symbolPRC); - - payment1.setAddresseeBankName(companyPRCName); - payment1.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); - payment1.setPaymentPurpose("Размещение депозита " + liabilitiesClaimsAssets.getContract()); - payment1.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); - - BigDecimal amount = liabilitiesClaimsAssets.getClaimsQuantity() == null ? null : liabilitiesClaimsAssets.getClaimsQuantity().abs(); - payment1.setCreditLeg_amount(amount); - payment1.setDebitLeg_amount(amount); - - { - Account anotherAcc = selectAccount(payment1.getSenderId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); - if (anotherAcc == null) { - log.warn("Account not found: companyId = {} AND accountType={} AND accountStatus={} AND processingSign={}", - payment1.getSenderId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); - } else { - payment1.setCreditLeg_accountId(anotherAcc.getId()); - } - } - - payment1.setCredit_csAccount(null); - - { - Account acc2 = accountImdg.getSingleObjectByID(payment1.getCreditLeg_accountId()); - if (acc2 != null) { - payment1.setCreditLeg_account(acc2.getAccount()); - } - } - - { - Account acc2 = accountImdg.getSingleObjectByID(liabilitiesClaimsAssets.getAccountId()); - if (acc2 != null) { - payment1.setDebitLeg_accountId(acc2.getId()); - payment1.setDebitLeg_account(acc2.getAccount()); - } - } - - payment1.setDebit_csAccount(null); - -// payment2.setCreditLeg_direction(InOutDirection.out.getKey()); -// payment2.setDebitLeg_direction(InOutDirection.in.getKey()); - - payment1.setCreditLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); - payment1.setDebitLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); - - payment1.setTransactionStatus(TransactionStatus.stld.getKey()); - - payment1.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment1)); - - newPaymentInstructions.add(payment1); - } - - } - { // record 2 - PaymentInstruction payment2 = new PaymentInstruction(); - payment2.setId(idGenerator.nextId()); - payment2.setCreated(now); - payment2.setClearingDate(TimeUtil.toLocalDate(now)); - - payment2.setSenderId(liabilitiesClaimsAssets.getCompanyId()); - - payment2.setAddresseeId(liabilitiesClaimsAssets.getCompanyId()); - - String symbol1 = selectSymbolValue(payment2.getAddresseeId(), CompanySymbol.BIC); - if (symbol1 == null) { - log.warn("CompanySymbols BIC not found for companyId={}", payment2.getAddresseeId()); + String symbol2 = selectSymbolValue(payment1.getAddresseeId(), CompanySymbol.BIC); + if (symbol2 == null) { + log.warn("CompanySymbols BIC not found for companyId={}", payment1.getAddresseeId()); } else { - payment2.setAdresseeBic(symbol1); + payment1.setAdresseeBic(symbol2); } - Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); // 2 "НКО АО ПРЦ" + Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); String companyPRCName = null; if (companyPRC == null) { log.warn("Company.id={} not found", PRC_ID); } else { companyPRCName = companyPRC.getShortName(); } - payment2.setPayeeBankName(companyPRCName); + payment1.setPayeeBankName(companyPRCName); - String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); // 2 "НКО АО ПРЦ" - payment2.setPayeeBic(symbolPRC); + String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); + payment1.setPayeeBic(symbolPRC); - payment2.setAddresseeBankName(companyPRCName); - - payment2.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); - - payment2.setPaymentPurpose("Размещение депозита " + liabilitiesClaimsAssets.getContract()); - - payment2.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); + payment1.setAddresseeBankName(companyPRCName); + payment1.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); + payment1.setPaymentPurpose("Размещение депозита " + liabilitiesClaimsAssets.getContract()); + payment1.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); BigDecimal amount = liabilitiesClaimsAssets.getClaimsQuantity() == null ? null : liabilitiesClaimsAssets.getClaimsQuantity().abs(); - payment2.setCreditLeg_amount(amount); - payment2.setDebitLeg_amount(amount); + payment1.setCreditLeg_amount(amount); + payment1.setDebitLeg_amount(amount); { - Long accountId = liabilitiesClaimsAssets.getAccountId(); - Account acc1 = accountImdg.getSingleObjectByID(accountId); - if (acc1 == null) { - log.warn("Account not found: {}", accountId); + Account anotherAcc = selectAccount(payment1.getSenderId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); + if (anotherAcc == null) { + log.warn("Account not found: companyId = {} AND accountType={} AND accountStatus={} AND processingSign={}", + payment1.getSenderId(), AccountType.Tran, Status.Active, Allowed.ALLOWED); } else { - payment2.setCreditLeg_accountId(acc1.getId()); - payment2.setCreditLeg_account(acc1.getAccount()); + payment1.setCreditLeg_accountId(anotherAcc.getId()); } } - payment2.setCredit_csAccount(null); + payment1.setCredit_csAccount(null); { - Account acc1 = selectAccount(payment2.getAddresseeId(), AccountType.Corr, Status.Active, Allowed.ALLOWED); - if (acc1 != null) { - payment2.setDebitLeg_accountId(acc1.getId()); - payment2.setDebitLeg_account(acc1.getAccount()); + Account acc2 = accountImdg.getSingleObjectByID(payment1.getCreditLeg_accountId()); + if (acc2 != null) { + payment1.setCreditLeg_account(acc2.getAccount()); } } - payment2.setDebit_csAccount(null); + { + Account acc2 = accountImdg.getSingleObjectByID(liabilitiesClaimsAssets.getAccountId()); + if (acc2 != null) { + payment1.setDebitLeg_accountId(acc2.getId()); + payment1.setDebitLeg_account(acc2.getAccount()); + } + } -// payment1.setCreditLegDirection(InOutDirection.out.getKey()); -// payment1.setDebitLegDirection(InOutDirection.in.getKey()); + payment1.setDebit_csAccount(null); - payment2.setCreditLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); - payment2.setDebitLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); + payment1.setCreditLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); + payment1.setDebitLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); - payment2.setTransactionStatus(TransactionStatus.stld.getKey()); + payment1.setTransactionStatus(TransactionStatus.stld.getKey()); - payment2.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment2)); + payment1.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment1)); - newPaymentInstructions.add(payment2); + newPaymentInstructions.add(payment1); } + } + { + PaymentInstruction payment2 = new PaymentInstruction(); + payment2.setId(idGenerator.nextId()); + payment2.setCreated(now); + payment2.setClearingDate(TimeUtil.toLocalDate(now)); + + payment2.setSenderId(liabilitiesClaimsAssets.getCompanyId()); + + payment2.setAddresseeId(liabilitiesClaimsAssets.getCompanyId()); + + String symbol1 = selectSymbolValue(payment2.getAddresseeId(), CompanySymbol.BIC); + if (symbol1 == null) { + log.warn("CompanySymbols BIC not found for companyId={}", payment2.getAddresseeId()); + } else { + payment2.setAdresseeBic(symbol1); + } + + Company companyPRC = companyImdg.getSingleObjectByID(PRC_ID); + String companyPRCName = null; + if (companyPRC == null) { + log.warn("Company.id={} not found", PRC_ID); + } else { + companyPRCName = companyPRC.getShortName(); + } + payment2.setPayeeBankName(companyPRCName); + + String symbolPRC = selectSymbolValue(PRC_ID, CompanySymbol.BIC); + payment2.setPayeeBic(symbolPRC); + + payment2.setAddresseeBankName(companyPRCName); + + payment2.setPaymentDate(TimeUtil.localDateToInstant(liabilitiesClaimsAssets.getSettlementDate())); + + payment2.setPaymentPurpose("Размещение депозита " + liabilitiesClaimsAssets.getContract()); + + payment2.setSettlementDate(liabilitiesClaimsAssets.getSettlementDate()); + + BigDecimal amount = liabilitiesClaimsAssets.getClaimsQuantity() == null ? null : liabilitiesClaimsAssets.getClaimsQuantity().abs(); + payment2.setCreditLeg_amount(amount); + payment2.setDebitLeg_amount(amount); + + { + Long accountId = liabilitiesClaimsAssets.getAccountId(); + Account acc1 = accountImdg.getSingleObjectByID(accountId); + if (acc1 == null) { + log.warn("Account not found: {}", accountId); + } else { + payment2.setCreditLeg_accountId(acc1.getId()); + payment2.setCreditLeg_account(acc1.getAccount()); + } + } + + payment2.setCredit_csAccount(null); + + { + Account acc1 = selectAccount(payment2.getAddresseeId(), AccountType.Corr, Status.Active, Allowed.ALLOWED); + if (acc1 != null) { + payment2.setDebitLeg_accountId(acc1.getId()); + payment2.setDebitLeg_account(acc1.getAccount()); + } + } + + payment2.setDebit_csAccount(null); + + payment2.setCreditLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); + payment2.setDebitLeg_currencyCode(liabilitiesClaimsAssets.getCurrency()); + + payment2.setTransactionStatus(TransactionStatus.stld.getKey()); + + payment2.setDocumentNumber(nextDocumentNumber(liabilitiesClaimsAssets, payment2)); + + newPaymentInstructions.add(payment2); + } + } } return newPaymentInstructions; } - /** - * - * @param contract liabilitiesClaimsAssets.contract - * @return - */ protected String paymentPurpose(String contract) { return "Размещение депозита " + (contract == null ? "" : contract); } @@ -546,12 +333,6 @@ public class PaymentInstructionCreator { return payment1; } - /** - * Обновление п оаналогии с createPaymentInstructions - * @param payment1 - * @param liabilitiesClaimsAssets - * @param clearingCategory - */ public void updatePaymentInstructionsFirstI(PaymentInstruction payment1, LiabilitiesClaimsAssets liabilitiesClaimsAssets, ClearingCategory clearingCategory) { @@ -563,9 +344,7 @@ public class PaymentInstructionCreator { } log.debug("By liabilitiesClaimsAssets[{}] update for category I 1 PaymentInstruction {} record", - liabilitiesClaimsAssets.getId(), payment1.getId()); - - // I check + liabilitiesClaimsAssets.getId(), payment1.getId()); if (!ClearingCategory.I.equals(clearingCategory)) { throw new IllegalArgumentException("Clearing category is not I. Method not implemented for " + clearingCategory); } @@ -580,7 +359,7 @@ public class PaymentInstructionCreator { protected String nextDocumentNumber(LiabilitiesClaimsAssets liabilitiesClaimsAssets, PaymentInstruction paymentInstruction) { LocalDate nowD = LocalDate.now(); if (documentNumberResetAt == null || documentNumberResetAt.isBefore(nowD)) synchronized (this) { - long oldNum = documentNumberId.get(); // reset optimistic + long oldNum = documentNumberId.get(); if (oldNum > 0) { while (!documentNumberId.compareAndSet(oldNum, 0)) { oldNum = documentNumberId.get(); @@ -634,63 +413,16 @@ public class PaymentInstructionCreator { } - /** - * 2.2.2.1. Выполнить Изменение liabilitiesClaimsAssets по paymentInstruction. - */ public void updateFieldLiabilitiesClaimsAssetsByPayment(LiabilitiesClaimsAssets liabilitiesClaimsAssets, LiabilitiesClaimsMoney liabilitiesClaimsMoney, List paymentInstructions, Collection clearingCategory) { -// final boolean isFirstLeg = true; -// final boolean isSecondLeg = !isFirstLeg; - PaymentInstruction paymentIAny = paymentInstructions.get(paymentInstructions.size() - 1); // брать последнюю запись для ID - -// if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) { -// BigDecimal amount = bdFromLongSafe(paymentIAny.getCreditLegAmount()); -//// При обновлении (по paymentInstruction и категория I и счет CLRN):=liabilitiesClaimsAssets.liabilitiesQuantity - paymentInstruction.creditLeg_amount -//// При обновлении (по paymentInstruction и категория V и счет INFO):=liabilitiesClaimsAssets.liabilitiesQuantity - paymentInstruction.creditLeg_amount -// amount = liabilitiesClaimsAssets.getLiabilitiesQuantity().subtract(amount); -// liabilitiesClaimsAssets.setLiabilitiesQuantity(amount); -// } -// if (clearingCategory.contains(ClearingCategory.B)) { -// BigDecimal amount = bdFromLongSafe(paymentIAny.getCreditLegAmount()); -// // При обновлении (по paymentInstruction и категория B и счет CLRN): из paymentInstruction.creditLeg_amount -// liabilitiesClaimsAssets.setLiabilitiesQuantity(amount); -// } - -// if (clearingCategory.contains(ClearingCategory.I) || clearingCategory.contains(ClearingCategory.V)) { -// BigDecimal amount = bdFromLongSafe(paymentIAny.getDebitLegAmount()); -// liabilitiesClaimsAssets.setClaimsQuantity(amount); -// } -// if (clearingCategory.contains(ClearingCategory.B)) { -// BigDecimal amount = bdFromLongSafe(paymentIAny.getDebitLegAmount()); -// amount = safeBD(liabilitiesClaimsAssets.getClaimsQuantity()).subtract(amount); -// liabilitiesClaimsAssets.setClaimsQuantity(amount); -// } - -// //на базе успешного/неуспешного изменения по paymentInstruction -// if (TransactionStatus.fail.equalsByKey(paymentIAny.getTransactionStatus())) { -// liabilitiesClaimsAssets.setClearingStatus(ClearingStatus.FAIL.getKey()); -// } else if (TransactionStatus.ok.equalsByKey(paymentIAny.getTransactionStatus())) { -// liabilitiesClaimsAssets.setClearingStatus(ClearingStatus.OK.getKey()); -// } - -// liabilitiesClaimsAssets.setLiabilitiesClaimsMoneyId(liabilitiesClaimsMoney.getId()); + PaymentInstruction paymentIAny = paymentInstructions.get(paymentInstructions.size() - 1); liabilitiesClaimsAssets.setPaymentId(paymentIAny.getId()); liabilitiesClaimsAssets.setUpdated(Instant.now()); } - /** - * 2.2.2.2. Выполнить Изменение liabilitiesClaimsMoney по paymentInstruction. - * Обновление liabilitiesClaimsMoney первой/второй ноги по liabilitiesClaimsAssets - * - * @param liabilitiesClaimsMoney обновить этот объект (firstLeg) - * @param isFirstLeg true - первая, false вторая - * @param paymentInstructions - * @param clearingCategory - * @return были внесены изменения в liabilitiesClaimsMoney - */ public boolean updateFieldLiabilitiesClaimsMoneyByPayment(LiabilitiesClaimsMoney liabilitiesClaimsMoney, boolean isFirstLeg, List paymentInstructions, @@ -707,7 +439,6 @@ public class PaymentInstructionCreator { modified = true; } if (isSecondLeg) { - // liabilitiesAmount не меняется } } @@ -718,7 +449,6 @@ public class PaymentInstructionCreator { modified = true; } if (isSecondLeg) { - // liabilitiesAmount не меняется ; } } @@ -726,7 +456,7 @@ public class PaymentInstructionCreator { liabilitiesClaimsMoney.setUpdated(Instant.now()); } log.debug("updateFieldLiabilitiesClaimsMoneyByPayment: isFirstLeg={}, isSecondLeg={}, modified={}, LiabilitiesClaimsMoney.id={}", - isFirstLeg, isSecondLeg, modified, liabilitiesClaimsMoney.getId()); + isFirstLeg, isSecondLeg, modified, liabilitiesClaimsMoney.getId()); return modified; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java index 7bc429dfb..039cfe5e7 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistryBuilder.java @@ -131,17 +131,11 @@ public class RegistryBuilder { String securitySymbol = obtainSecuritySymbol(statement.getSecurityId()); rgs.setSecuritySymbol(securitySymbol); } - //fixme !rgs.setSettlementCode(); - rgs.setTradingDate(statement.getSettlementDate()); //fixme ! today ? + rgs.setTradingDate(statement.getSettlementDate()); rgs.setClearingDate(LocalDate.now()); - //fixme rgs.setRefundDate(); - //fixme rgs.setValueDate(); rgs.setContract(statement.getContract()); - //создается на базе stmt, companyCred, accountDeb rgs.setCounterPartyId(statement.getAddresseeId()); rgs.setCreated(Instant.now()); - - //по дефолту создаем с балансом 0, а потом пересчитываем по необходимости rgs.setBalance(BigDecimal.ZERO); rgs.setDebit(BigDecimal.ZERO); rgs.setCredit(BigDecimal.ZERO); @@ -152,7 +146,6 @@ public class RegistryBuilder { } private String obtainSecuritySymbol(Long securityId) { - // похожий код есть в SecuritySelector Security security = fixedIncomeSecurityImdg.getSingleObjectByID(securityId); if (security != null) return security.getSecuritySymbol(); security = moneyMarketSecurityImdg.getSingleObjectByID(securityId); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistrySecurityBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistrySecurityBuilder.java index c00e5aced..26ac10a3d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistrySecurityBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/RegistrySecurityBuilder.java @@ -100,20 +100,12 @@ public class RegistrySecurityBuilder { rgs.setRegistryInstrumentType(RegistryInstrumentType.S.getKey()); AccountType accType = IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()); - //if (AccountType.Clrn.equals(accType)) { - // ClearingAccount accountForStatement = clearingAccountImdg.getFirstObjectByFieldValues(Map.of("accountId", statement.getAccountId())); - // if (accountForStatement != null) { - // rgs.setRegistryCapacity(accountForStatement.getClearingAccountType()); - // } - //} else if (AccountType.Info.equals(accType) || AccountType.Anlt.equals(accType)) { - // rgs.setRegistryCapacity(RegistryCapacity.A.getKey()); - //} rgs.setRegistryUnit(RegistryUnit.T.getKey()); Collection tcrsByAccount = tradingClearingRegistryImdg.getCollectionObjectsByFieldValues(Map.of( - "depoAccountId", account.getId(), - "companyId", company.getId(), - "status", ServiceStatus.Active.getKey() + "depoAccountId", account.getId(), + "companyId", company.getId(), + "status", ServiceStatus.Active.getKey() )); if (!tcrsByAccount.isEmpty()) { TradingClearingRegistry tcr = tcrsByAccount.iterator().next(); @@ -129,17 +121,11 @@ public class RegistrySecurityBuilder { String securitySymbol = obtainSecuritySymbol(statement.getSecurityId()); rgs.setSecuritySymbol(securitySymbol); } - //fixme !rgs.setSettlementCode(); - rgs.setTradingDate(statement.getSettlementDate()); //fixme ! today ? + rgs.setTradingDate(statement.getSettlementDate()); rgs.setClearingDate(LocalDate.now()); - //fixme rgs.setRefundDate(); - //fixme rgs.setValueDate(); rgs.setContract(statement.getContract()); - //создается на базе stmt, companyCred, accountDeb rgs.setCounterPartyId(statement.getAddresseeId()); rgs.setCreated(Instant.now()); - - //по дефолту создаем с балансом 0, а потом пересчитываем по необходимости rgs.setPlanBalance(BigDecimalUtil.parse(sdf21.getCloseBalance())); rgs.setBalance(BigDecimal.ZERO); rgs.setDebit(BigDecimal.ZERO); @@ -151,7 +137,6 @@ public class RegistrySecurityBuilder { } private String obtainSecuritySymbol(Long securityId) { - // похожий код есть в SecuritySelector Security security = fixedIncomeSecurityImdg.getSingleObjectByID(securityId); if (security != null) return security.getSecuritySymbol(); security = moneyMarketSecurityImdg.getSingleObjectByID(securityId); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java index ef31d5c3e..ee8e4d5fb 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf03Builder.java @@ -27,19 +27,16 @@ public class Sdf03Builder { sDf03.setSeg_type("U"); sDf03.setDoc_type("002"); sDf03.setDocnm_ref(paymentInstruction.getId().toString()); -// sDf03.setPriority("9"); -// sDf03.setSbankcode(Sender.One.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0"); sDf03.setC_acc_deb(paymentInstruction.getCreditLeg_account()); if (paymentInstruction.getSenderId().equals(Sender.One.getId())) { sDf03.setSbanknam1(paymentInstruction.getPayeeBankName()); } else { - Company company = companyImdg.getSingleObjectByID(paymentInstruction.getSenderId()); + Company company = companyImdg.getSingleObjectByID(paymentInstruction.getSenderId()); if (company != null) { sDf03.setSbanknam1(company.getShortName()); } } if (sDf03.getSbanknam1() != null && sDf03.getSbanknam1().length() > 35) { - //(если всё значение не помещается в sbanknam1, то остаток записать в sbanknam2 и т.д. до sbanknam5). sDf03.setSbanknam2(sDf03.getSbanknam1().substring(35)); sDf03.setSbanknam1(sDf03.getSbanknam1().substring(0, 35)); if (sDf03.getSbanknam2().length() > 35) { @@ -52,21 +49,16 @@ public class Sdf03Builder { sDf03.setSbanknam5(sDf03.getSbanknam4().substring(35)); sDf03.setSbanknam4(sDf03.getSbanknam4().substring(0, 35)); if (sDf03.getSbanknam5().length() > 35) { - //warn: too large for all field - //sDf03.setSbanknam5(sDf03.getSbanknam2().substring(0, 35)); } } } } } - // =@00100, если ?; - // =@00000, если ?. -// sDf03.setRbankcode(Sender.One.equalsById(paymentInstruction.getAddresseeId()) ? "@09999" : "@0"); sDf03.setC_acc_cred(paymentInstruction.getDebitLeg_account()); if (paymentInstruction.getAddresseeId().equals(Sender.One.getId())) { sDf03.setRbanknam1(paymentInstruction.getAddresseeBankName()); } else { - Company company = companyImdg.getSingleObjectByID(paymentInstruction.getAddresseeId()); + Company company = companyImdg.getSingleObjectByID(paymentInstruction.getAddresseeId()); if (company != null) { sDf03.setRbanknam1(company.getShortName()); } @@ -78,22 +70,11 @@ public class Sdf03Builder { sDf03.setPay_val("RUR"); String sumDeb = paymentInstruction.getDebitLeg_amount() != null ? paymentInstruction.getDebitLeg_amount().toString() : null; sDf03.setSum_deb(BigDecimalUtil.limitDecimalPlaces(sumDeb, 2)); - //37 sp_code varchar(2) Код назначения платежа String[] splitPaymentPurpose = SpecifUtil.split5SegmentsBy35Symbols(paymentInstruction.getPaymentPurpose()); for (int i = 0; i < splitPaymentPurpose.length; i++) { String specif = splitPaymentPurpose[i]; if (i == 0) { sDf03.setSpecif_1(specif); -// } else if (i == 1) { -// sDf03.setSpecif_2(specif); -// } else if (i == 2) { -// sDf03.setSpecif_3(specif); -// } else if (i == 3) { -// sDf03.setSpecif_4(specif); -// } else if (i == 4) { -// sDf03.setSpecif_5(specif); -// } else if (i == 5) { -// sDf03.setSpecif_6(specif); } } sDf03.setGenerationTime(Instant.now()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf11Builder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf11Builder.java index 3caca1a33..f18fe18bf 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf11Builder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/builder/Sdf11Builder.java @@ -22,78 +22,6 @@ public class Sdf11Builder { public SDf11 buildSdf11(PaymentInstruction paymentInstruction, Long generationId) { SDf11 sDf11 = new SDf11(); -// todo поменялись классы sDf11.setSeg_type("U"); -// sDf11.setDoc_type("002"); -// sDf11.setDocnm_ref(paymentInstruction.getId().toString()); -// sDf11.setPriority("9"); -// sDf11.setSbankcode(Sender.One.equalsById(paymentInstruction.getSenderId()) ? "@09999" : "@0"); -// sDf11.setC_acc_deb(paymentInstruction.getCreditLegAccount()); -// if (paymentInstruction.getAddresseeId().equals(Sender.One.getId())) { -// sDf11.setSbanknam1(paymentInstruction.getAddresseeBankName()); -// //(если всё значение не помещается в sbanknam1, то остаток записать в sbanknam2 и т.д. до sbanknam5). -// sDf11.setSbanknam2(sDf11.getSbanknam1().substring(35)); -// sDf11.setSbanknam1(sDf11.getSbanknam1().substring(0, 35)); -// if (sDf11.getSbanknam2().length() > 35) { -// sDf11.setSbanknam3(sDf11.getSbanknam2().substring(35)); -// sDf11.setSbanknam2(sDf11.getSbanknam2().substring(0, 35)); -// if (sDf11.getSbanknam3().length() > 35) { -// sDf11.setSbanknam4(sDf11.getSbanknam3().substring(35)); -// sDf11.setSbanknam3(sDf11.getSbanknam3().substring(0, 35)); -// if (sDf11.getSbanknam4().length() > 35) { -// sDf11.setSbanknam5(sDf11.getSbanknam4().substring(35)); -// sDf11.setSbanknam4(sDf11.getSbanknam4().substring(0, 35)); -// if (sDf11.getSbanknam5().length() > 35) { -// //warn: too large for all field -// //sDf03.setSbanknam5(sDf03.getSbanknam2().substring(0, 35)); -// } -// } -// } -// } -// } else { -// Company company = companyImdg.getSingleObjectByID(paymentInstruction.getAddresseeId()); -// if (company != null) { -// sDf11.setSbanknam1(company.getShortName()); -// } -// } -// // =@00100, если ?; -// // =@00000, если ?. -// sDf11.setRbankcode(Sender.One.equalsById(paymentInstruction.getAddresseeId()) ? "@09999" : "@0"); -// sDf11.setC_acc_cred(paymentInstruction.getDebitLegAccount()); -// if (paymentInstruction.getAddresseeId().equals(Sender.One.getId())) { -// sDf11.setRbanknam1(paymentInstruction.getAddresseeBankName()); -// } else { -// Company company = companyImdg.getSingleObjectByID(paymentInstruction.getAddresseeId()); -// if (company != null) { -// sDf11.setRbanknam1(company.getShortName()); -// } -// } -// LocalDate paymtDt = TimeUtil.toLocalDate(paymentInstruction.getPaymentDate()); -// if (paymtDt != null) { -// sDf11.setPay_date(paymtDt.format(PROPERTY_DATE_FORMATTER_YY)); -// } -// sDf11.setPay_val("RUR"); -// sDf11.setSum_deb(paymentInstruction.getDebitLegAmount() != null ? paymentInstruction.getDebitLegAmount().toString() : null); -// //37 sp_code varchar(2) Код назначения платежа -// String[] splitPaymentPurpose = SpecifUtil.splitPaymentPurpose(paymentInstruction.getPaymentPurpose()); -// for (int i = 0; i < splitPaymentPurpose.length; i++) { -// String specif = splitPaymentPurpose[i]; -// if (i == 0) { -// sDf11.setSpecif_1(specif); -// } else if (i == 1) { -// sDf11.setSpecif_2(specif); -// } else if (i == 2) { -// sDf11.setSpecif_3(specif); -// } else if (i == 3) { -// sDf11.setSpecif_4(specif); -// } else if (i == 4) { -// sDf11.setSpecif_5(specif); -// } else if (i == 5) { -// sDf11.setSpecif_6(specif); -// } -// } -// sDf11.setGenerationTime(Instant.now()); -// sDf11.setGenerationId(generationId); -// sDf11.setPaymentInstructionId(paymentInstruction.getId()); return sDf11; } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java index f0200fa4a..dd001e935 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponent.java @@ -42,9 +42,6 @@ import ru.spcex.platform.utils.log.ExceptionUtils; import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.validation.IValidator; -/** - * ExecutionCurrency - Сделки на Валютной секции - */ @Component @EnableScheduling public class ExecutionCurrencyComponent { @@ -54,15 +51,12 @@ public class ExecutionCurrencyComponent { private final Imdg executionCurrencyImdg; private final Imdg

listingImdg; -// protected transient Long tradeNum; //todo used? -// protected transient Instant tradingDay; private final IMessageResolver msgResolver; private final Function stradesValidator; private final KafkaSender kafkaSender; private static final DateTimeFormatter contractFormatter = DateTimeFormatter.ofPattern("ddMMyy"); - @Autowired public ExecutionCurrencyComponent(ImdgProvider imdgProvider, Producer kafka, @Qualifier("sTradesValidatorCurrency") Function stradesValidator, @@ -74,31 +68,14 @@ public class ExecutionCurrencyComponent { this.stradesValidator = stradesValidator; this.kafkaSender = kafkaSender; this.msgResolver = msgResolver; - -// resetTradingDay(); } -// /** -// * Сбрасывать каждый день в 01:00:01 "0 1 0 1 * ?" -// */ -// @Scheduled(cron = "0 1 0 1 * ?") -// public void resetTradingDay() { -// log.trace("Recheck today trading day for search STrade. Current state: tradeNum={}, tradeDat={}", tradeNum, tradingDay); -// Instant today = TimeUtil.localDateToInstant(LocalDate.now()); -// if (tradingDay == null || !tradingDay.equals(today)) { -// tradeNum = -1L; -// tradingDay = today; -// } -// log.info("Reset trading day for search STrade: tradeNum={}, tradeDat={}", tradeNum, tradingDay); -// } - public void processNewTS() { LocalDate today = LocalDate.now(); log.debug("Start check new S_TRADE at {}", today); - //выбираем STrades на сегодня с правильным section Collection sTrades = sTradeImdg.getCollectionObjectsByFieldValues(Map.of( - "tradeDate", today, - "section", Section.CURR.getKey() + "tradeDate", today, + "section", Section.CURR.getKey() )); log.info("Found {} s_trade for today", sTrades.size()); @@ -106,26 +83,21 @@ public class ExecutionCurrencyComponent { logError(ClearingError.NewDealsNotFound); return; } - - //убираем уже добавленные в ExecutionCurrency sTrades.removeIf(sTrd -> { Side sTrdSide = IEnumKey.getEnumByKey(Side.class, sTrd.getOperation()); if (sTrdSide == null || !(sTrdSide.equals(Side.BUY) || sTrdSide.equals(Side.SELL))) { log.warn("cannot parse strade.tradeNum={} strade.operation {}", sTrd.getTradeNum(), sTrd.getOperation()); return true; } -// MoneyFlowSide excDepSide = sTrdSide == Side.BUY ? MoneyFlowSide.BUY : MoneyFlowSide.SELL; return executionCurrencyImdg.getFirstObjectByFieldValues( - Map.of("tradingDate", sTrd.getTradeDate(), - "exchangeExecutionId", sTrd.getTradeNum(), - "side", sTrdSide.getKey())) != null; + Map.of("tradingDate", sTrd.getTradeDate(), + "exchangeExecutionId", sTrd.getTradeNum(), + "side", sTrdSide.getKey())) != null; }); log.info("{} strades left after already-added filtering", sTrades.size()); for (STrades sTrd : sTrades) { log.trace("S_TRADE[{}] new", sTrd.getId()); - - //проверки IValidator validator = stradesValidator.apply(sTrd); Optional error = validator.tillFirstError(); if (error.isPresent()) { @@ -145,7 +117,7 @@ public class ExecutionCurrencyComponent { } } - Long newMaxTradeNum = sTrades.stream().mapToLong(STrades::getTradeNum).max().orElse(0); // orElseGet(() -> tradeNum) + Long newMaxTradeNum = sTrades.stream().mapToLong(STrades::getTradeNum).max().orElse(0); log.info("Process completed. Next tradeNum is {}", newMaxTradeNum); } @@ -167,7 +139,7 @@ public class ExecutionCurrencyComponent { } protected ExecutionCurrency createExecutionCurrency(STrades sTrades, - IValidator validator) throws ClearingException { + IValidator validator) throws ClearingException { Security security = validator.getStored(ValidationStored.STradesSecurity); Company company = validator.getStored(ValidationStored.STradesCompany); Company counterCompany = validator.getStored(ValidationStored.STradesCounterCompany); @@ -181,14 +153,10 @@ public class ExecutionCurrencyComponent { eCurrency.setClearingDate(TimeUtil.toLocalDate(now)); eCurrency.setExchangeExecutionId(sTrades.getTradeNum()); eCurrency.setExchangeExecutionTime(TimeUtil.instPlusMicros(sTrades.getTradeDateTime(), sTrades.getTradeTimeMs())); - eCurrency.setExchangeExecutionMicroseconds(sTrades.getTradeDateTime()); // todo проверить это дата+время или нет - eCurrency.setPartyTradingClearingRegistryId(rgstr.getId()); // setTradingClearingRegistryId - eCurrency.setPartyTradingClearingRegistry(rgstr.getCode()); // todo уточнить rgstr.code/strades.account? + eCurrency.setExchangeExecutionMicroseconds(sTrades.getTradeDateTime()); + eCurrency.setPartyTradingClearingRegistryId(rgstr.getId()); + eCurrency.setPartyTradingClearingRegistry(rgstr.getCode()); eCurrency.setMarket(sTrades.getClassCode()); -// { todo нет поля Description и не понятно как искать Market -// Market market = market=market.code ; -// eCurrency.setDescription(market.getDescription()); -// } eCurrency.setPrice(sTrades.getPrice()); eCurrency.setLots(sTrades.getQty()); eCurrency.setSettlementAmount(sTrades.getValue()); @@ -199,31 +167,16 @@ public class ExecutionCurrencyComponent { eCurrency.setQuantity(lots.multiply(listingLotSize)); } } - //todo fill eCurrency.setSessionId(); -// String companyContract = null; { Side sTradeSide = IEnumKey.getEnumByKey(Side.class, sTrades.getOperation()); if (sTradeSide != null) { eCurrency.setSide(sTradeSide.getKey()); -// switch (sTradeSide) { -// case BUY -> { -// companyContract = sTrades.getFirmId(); -// eCurrency.setSide(?MoneyFlowSide.BUY.getKey()); -// } -// case SELL -> { -// companyContract = sTrades.getCpFirmId(); -// eCurrency.setSide(?MoneyFlowSide.SELL.getKey()); -// } -// } } } - eCurrency.setCurrencyCode(sTrades.getSettleCurrency());//todo verify TZ -// eCurrency.setSettlementCurrency(sTrades.getSettleCurrency()); + eCurrency.setCurrencyCode(sTrades.getSettleCurrency()); eCurrency.setCompanyId(company.getId()); - //todo fill eCurrency.setSettlementOrganization(); - //todo fill eCurrency.setCoverageStatus(); "Cтатус достаточности обеспечения" будет ли на следующих этапах? - eCurrency.setSettlementCode(sTrades.getSettleCode()); // todo не по заданию, но наверное так + eCurrency.setSettlementCode(sTrades.getSettleCode()); eCurrency.setSettlementDate(sTrades.getSettleDate()); eCurrency.setSecurityName(security.getFullName()); @@ -233,16 +186,16 @@ public class ExecutionCurrencyComponent { { ImdgPredicateBuilder strPb = sTradeImdg.predicateBuilder(); STrades counterSTrades = sTradeImdg.getFirstObjectByPredicate(strPb.and( - strPb.equals("tradeNum", sTrades.getTradeNum()), - strPb.equals("section", sTrades.getSection()), - strPb.not(strPb.equals("operation", sTrades.getOperation())))); + strPb.equals("tradeNum", sTrades.getTradeNum()), + strPb.equals("section", sTrades.getSection()), + strPb.not(strPb.equals("operation", sTrades.getOperation())))); if (counterSTrades != null) { eCurrency.setCounterPartyTradingClearingRegistry(counterSTrades.getAccount()); searchTcrByStrades(counterSTrades) - .ifPresent(tcr -> eCurrency.setCounterPartyTradingClearingRegistryId(tcr.getId())); + .ifPresent(tcr -> eCurrency.setCounterPartyTradingClearingRegistryId(tcr.getId())); } else { log.trace("Counter STRade for {tradeNum={}, section={}, operation={}} not found.", - sTrades.getTradeNum(), sTrades.getSection(), sTrades.getOperation()); + sTrades.getTradeNum(), sTrades.getSection(), sTrades.getOperation()); } } return eCurrency; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java index 0d1fa7746..287e50b1d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionDepositComponent.java @@ -44,10 +44,6 @@ import ru.spcex.platform.utils.log.ExceptionUtils; import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.validation.IValidator; -/** - * 1.35. executionDeposit - Сделки - * I - Изменение executionDeposit при получении новых сделок из ТС (s_trade) - */ @Component @EnableScheduling public class ExecutionDepositComponent { @@ -57,7 +53,6 @@ public class ExecutionDepositComponent { private final Imdg executionDepositImdg; private final Imdg listingImdg; - //fixme ждать ТЗ Long tradeNum; Instant tradingDay; private final IMessageResolver msgResolver; @@ -66,7 +61,6 @@ public class ExecutionDepositComponent { private static final DateTimeFormatter contractFormatter = DateTimeFormatter.ofPattern("ddMMyy"); - @Autowired public ExecutionDepositComponent(ImdgProvider imdgProvider, Producer kafka, @Qualifier("sTradesValidatorDeposit") Function stradesValidator, @@ -82,9 +76,6 @@ public class ExecutionDepositComponent { resetTradingDay(); } - /** - * Сбрасывать каждый день в 01:00:01 "0 1 0 1 * ?" - */ @Scheduled(cron = "0 1 0 1 * ?") public void resetTradingDay() { log.trace("Recheck today trading day for search STrade. Current state: tradeNum={}, tradeDat={}", tradeNum, tradingDay); @@ -98,10 +89,9 @@ public class ExecutionDepositComponent { public void processNewTS() { log.debug("Start check new S_TRADE after {}", tradingDay); - //выбираем STrades на сегодня с правильным section Collection sTrades = sTradeImdg.getCollectionObjectsByFieldValues(Map.of( - "tradeDate", LocalDate.now(), - "section", Section.MKR.getKey() + "tradeDate", LocalDate.now(), + "section", Section.MKR.getKey() )); log.info("Found {} s_trade for today", sTrades.size()); @@ -109,8 +99,6 @@ public class ExecutionDepositComponent { logError(ClearingError.NewDealsNotFound); return; } - - //убираем уже добавленные в ExecutionDeposit sTrades.removeIf(sTrd -> { Side sTrdSide = IEnumKey.getEnumByKey(Side.class, sTrd.getOperation()); if (sTrdSide == null || !(sTrdSide.equals(Side.BUY) || sTrdSide.equals(Side.SELL))) { @@ -119,16 +107,14 @@ public class ExecutionDepositComponent { } MoneyFlowSide excDepSide = sTrdSide.equals(Side.BUY) ? MoneyFlowSide.BUY : MoneyFlowSide.SELL; return executionDepositImdg.getFirstObjectByFieldValues( - Map.of("tradingDate", sTrd.getTradeDate(), - "exchangeExecutionId", sTrd.getTradeNum(), - "side", excDepSide.getKey())) != null; + Map.of("tradingDate", sTrd.getTradeDate(), + "exchangeExecutionId", sTrd.getTradeNum(), + "side", excDepSide.getKey())) != null; }); log.info("{} strades left after already-added filtering", sTrades.size()); for (STrades sTrd : sTrades) { log.trace("S_TRADE[{}] new", sTrd.getId()); - - //проверки IValidator validator = stradesValidator.apply(sTrd); Optional error = validator.tillFirstError(); if (error.isPresent()) { @@ -224,8 +210,8 @@ public class ExecutionDepositComponent { } else if (sTrdSettleDate != null && sTrades.getSecCode() != null && (sTrades.getSecCode().length() > 7)) { Optional daysNumber = stripDaysFromSecCode(sTrades.getSecCode()); daysNumber.ifPresentOrElse( - days -> eDeposit.setSecondLegSettlementDate(sTrdSettleDate.plusDays(days)), - () -> log.info("couldn't extract #days for secondLegSettlementDate from secCode {}", sTrades.getSecCode())); + days -> eDeposit.setSecondLegSettlementDate(sTrdSettleDate.plusDays(days)), + () -> log.info("couldn't extract #days for secondLegSettlementDate from secCode {}", sTrades.getSecCode())); } } eDeposit.setFirstLegSettlementCode(sTrades.getSettleCode()); @@ -234,23 +220,23 @@ public class ExecutionDepositComponent { eDeposit.setSecuritySymbol(security.getSecuritySymbol()); eDeposit.setSecurityId(security.getId()); String contract = String.format("%s/%s/%s/%s", - sTrades.getSecCode(), - LocalDate.now().format(contractFormatter), - companyContract, - sTrades.getTradeNum()); + sTrades.getSecCode(), + LocalDate.now().format(contractFormatter), + companyContract, + sTrades.getTradeNum()); eDeposit.setContract(contract); eDeposit.setCounterPartyId(counterCompany.getId()); eDeposit.setSecurityCode(sTrades.getSecCode()); { ImdgPredicateBuilder strPb = sTradeImdg.predicateBuilder(); STrades counterSTrades = sTradeImdg.getFirstObjectByPredicate(strPb.and( - strPb.equals("tradeNum", sTrades.getTradeNum()), - strPb.equals("section", sTrades.getSection()), - strPb.not(strPb.equals("operation", sTrades.getOperation())))); + strPb.equals("tradeNum", sTrades.getTradeNum()), + strPb.equals("section", sTrades.getSection()), + strPb.not(strPb.equals("operation", sTrades.getOperation())))); if (counterSTrades != null) { eDeposit.setCounterPartyTradingClearingRegistry(counterSTrades.getAccount()); searchTcrByStrades(counterSTrades) - .ifPresent(tcr -> eDeposit.setCounterPartyTradingClearingRegistryId(tcr.getId())); + .ifPresent(tcr -> eDeposit.setCounterPartyTradingClearingRegistryId(tcr.getId())); } } return eDeposit; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java index 70fb5a45b..fd3adb13c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/execution/ExecutionFondComponent.java @@ -71,7 +71,6 @@ public class ExecutionFondComponent { private final Imdg marketImdg; private final Imdg crossRateImdg; - //fixme ждать ТЗ Long tradeNum; Instant tradingDay; private final IMessageResolver msgResolver = new SimpleMessageResolver(); @@ -94,7 +93,7 @@ public class ExecutionFondComponent { this.marketImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Market, Market.class); this.fixedIncomeCashFlowImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class); this.crossRateImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SCrossRate, SCrossRate.class); - this.valuation = settings.getTrade().getValuation(); //fixme + this.valuation = settings.getTrade().getValuation(); this.stradesValidator = stradesValidator; this.kafkaSender = kafkaSender; this.notifications = notifications; @@ -102,9 +101,6 @@ public class ExecutionFondComponent { resetTradingDay(); } - /** - * Сбрасывать каждый день в 01:00:01 "0 1 0 1 * ?" - */ @Scheduled(cron = "0 1 0 1 * ?") public void resetTradingDay() { log.trace("Recheck today trading day for search STrade. Current state: tradeNum={}, tradeDat={}", tradeNum, tradingDay); @@ -118,10 +114,9 @@ public class ExecutionFondComponent { public void processNewTS() { log.debug("Start check new S_TRADE after {}", tradingDay); - //выбираем STrades на сегодня с правильным section Collection sTrades = sTradeImdg.getCollectionObjectsByFieldValues(Map.of( - "tradeDate", LocalDate.now(), - "section", Section.FOND.getKey() + "tradeDate", LocalDate.now(), + "section", Section.FOND.getKey() )); log.info("Found {} s_trade for today", sTrades.size()); @@ -129,8 +124,6 @@ public class ExecutionFondComponent { logError(ClearingError.NewDealsNotFound); return; } - - //убираем уже добавленные в ExecutionDeposit sTrades.removeIf(sTrd -> { Side sTrdSide = IEnumKey.getEnumByKey(Side.class, sTrd.getOperation()); if (sTrdSide == null || !(sTrdSide.equals(Side.BUY) || sTrdSide.equals(Side.SELL))) { @@ -139,16 +132,14 @@ public class ExecutionFondComponent { } Side excDepSide = sTrdSide.equals(Side.BUY) ? Side.BUY : Side.SELL; return executionFondImdg.getFirstObjectByFieldValues( - Map.of("tradingDate", sTrd.getTradeDate(), - "exchangeExecutionId", sTrd.getTradeNum(), - "side", excDepSide.getKey())) != null; + Map.of("tradingDate", sTrd.getTradeDate(), + "exchangeExecutionId", sTrd.getTradeNum(), + "side", excDepSide.getKey())) != null; }); log.info("{} strades left after already-added filtering", sTrades.size()); for (STrades sTrd : sTrades) { log.info("new S_TRADE[{}], valuation {}", sTrd.getId(), valuation); - - //проверки IValidator validator = stradesValidator.apply(sTrd); Optional error = validator.tillFirstError(); if (error.isPresent()) { @@ -192,7 +183,6 @@ public class ExecutionFondComponent { protected ExecutionFond createExecutionFond(STrades sTrades, IValidator validator) throws ClearingException { Security security = validator.getStored(ValidationStored.STradesSecurity); -// Listing listing = listingImdg.getFirstObjectByFieldValues(Map.of("securityId", security.getId())); Company company = validator.getStored(ValidationStored.STradesCompany); Company counterCompany = validator.getStored(ValidationStored.STradesCounterCompany); TradingClearingRegistry rgstr = validator.getStored(ValidationStored.STradesTradingClearingRegistry); @@ -206,8 +196,6 @@ public class ExecutionFondComponent { eFond.setExchangeExecutionId(sTrades.getTradeNum()); eFond.setExchangeExecutionTime(TimeUtil.instPlusMicros(sTrades.getTradeDateTime(), sTrades.getTradeTimeMs())); eFond.setTradingClearingRegistryId(rgstr.getId()); - - //todo можем ли просто переложить sTrades.getClassCode() или все такие искать, одно и тоже же Market market = marketImdg.getFirstObjectBySQL("code = '%s'".formatted(sTrades.getClassCode())); eFond.setMarket(sTrades.getClassCode()); @@ -223,9 +211,7 @@ public class ExecutionFondComponent { } } } - //fixme символьный код по справочнику currencyCode, соответствующий значению из sTrades.settleCurrency eFond.setSettlementCurrency(sTrades.getSettleCurrency()); - //fixme micro vs milli eFond.setExchangeExecutionMicroseconds(Instant.ofEpochMilli(sTrades.getTradeTimeMs())); eFond.setCompanyId(company.getId()); eFond.setDuration(sTrades.getRepoTerm()); @@ -245,16 +231,16 @@ public class ExecutionFondComponent { BigDecimal lotSize = listing != null ? safeBD(listing.getLotSize()) : BigDecimal.ONE; BigDecimal qty = safeBD(eFond.getLots()).multiply(lotSize); eFond.setQuantity(qty); - BigDecimal price = safeBD(sTrades.getPrice());// eFond.setPrice + BigDecimal price = safeBD(sTrades.getPrice()); BigDecimal settlementAmount = BigDecimal.ZERO; if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { FixedIncomeSecurity fixedIncome = (FixedIncomeSecurity) security; BigDecimal nominalValue; ImdgPredicateBuilder pb = fixedIncomeCashFlowImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.equals("securityId", fixedIncome.getId()), - sTrades.getSettleDate() != null ? - pb.equals("valueDate", sTrades.getSettleDate()) : pb.alwaysFalse() + pb.equals("securityId", fixedIncome.getId()), + sTrades.getSettleDate() != null ? + pb.equals("valueDate", sTrades.getSettleDate()) : pb.alwaysFalse() ); FixedIncomeCashFlow cashFlow = fixedIncomeCashFlowImdg.getFirstObjectByPredicate(prdct); if (cashFlow != null) { @@ -281,10 +267,10 @@ public class ExecutionFondComponent { } } settlementAmount = eFond.getQuantity() - .multiply(nominalValue.multiply(crossRate)) - .multiply(price) - .divide(new BigDecimal(100), RoundingMode.HALF_UP) - .setScale(2, RoundingMode.HALF_UP); + .multiply(nominalValue.multiply(crossRate)) + .multiply(price) + .divide(new BigDecimal(100), RoundingMode.HALF_UP) + .setScale(2, RoundingMode.HALF_UP); } } else if (InstrumentType.EQTY.equalsByKey(security.getInstrumentType())) { BigDecimal lotsEqty = safeBD(eFond.getQuantity()); @@ -293,16 +279,16 @@ public class ExecutionFondComponent { eFond.setSettlementAmount(settlementAmount); if (settlementAmount.compareTo(safeBD(sTrades.getValue())) != 0) { log.warn("sTrades.TradeNum={} sTrades.value({}) != eFond({})", - sTrades.getTradeNum(), - safeBD(sTrades.getValue()), - settlementAmount); + sTrades.getTradeNum(), + safeBD(sTrades.getValue()), + settlementAmount); notifications.sendNotification( - ObjectType.vfrs, - "Для сделки %s объем сделки в ТС %s не совпадает с расчитанным в КС %s" - .formatted(sTrades.getTradeNum(), - safeBD(sTrades.getValue()).toString(), - settlementAmount.toString()), - Priority.HIGH + ObjectType.vfrs, + "Для сделки %s объем сделки в ТС %s не совпадает с расчитанным в КС %s" + .formatted(sTrades.getTradeNum(), + safeBD(sTrades.getValue()).toString(), + settlementAmount.toString()), + Priority.HIGH ); } } else { @@ -312,9 +298,9 @@ public class ExecutionFondComponent { { ImdgPredicateBuilder strPb = sTradeImdg.predicateBuilder(); STrades counterSTrades = sTradeImdg.getFirstObjectByPredicate(strPb.and( - strPb.equals("tradeNum", sTrades.getTradeNum()), - strPb.equals("section", sTrades.getSection()), - strPb.not(strPb.equals("operation", sTrades.getOperation())))); + strPb.equals("tradeNum", sTrades.getTradeNum()), + strPb.equals("section", sTrades.getSection()), + strPb.not(strPb.equals("operation", sTrades.getOperation())))); if (counterSTrades != null) { eFond.setCounterPartyTradingClearingRegistry(counterSTrades.getAccount()); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java index 8dc6a5353..6d8870439 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf01Executor.java @@ -97,8 +97,6 @@ public class Sdf01Executor extends AbstractExecutor { this.filenameObtainer = filenameObtainer; } - //todo доделать контроль sdf01 и sdf57 - @Override public String exportTableName() { return "DF-02"; @@ -125,17 +123,14 @@ public class Sdf01Executor extends AbstractExecutor { result.setFileName(filenameObtainer.getFilename(sdf, sdf01Imdg, statementRequest.getGroupId())); log.info("SDF01 execution: sdf01 file={} number={}, groupId={}", result.getFileName(), sdf.size(), sdf.stream().findFirst().map(SDf01::getGenerationId).orElse(null)); ArrayList orderedSdf = new ArrayList<>(sdf); - orderedSdf.sort(Comparator.comparing(SDf01::getId));// Сортировка по возрастанию id, чтобы сохранить последовательность строк SDF02, как в SDF01 + orderedSdf.sort(Comparator.comparing(SDf01::getId)); for (SDf01 sdf01 : orderedSdf) { IValidator validator = sDf01Validator.apply(sdf01); Optional error = validator.tillFirstError(); Company company = validator.getStored(ValidationStored.Sdf01Company); Account account = validator.getStored(ValidationStored.Sdf01Account); if (!statementRequest.isFromAccount() - && ClearingError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { - //на данном шаге company существует -> getId ok - //формируем пакетный запрос на добавление account - //ответ придет в этот же метод, process + && ClearingError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { if (company == null) { log.warn("account {} for sdf01.id={} not found. Can not send request for creation, cause company not found too", sdf01.getAccount(), sdf01.getId()); } else { @@ -148,7 +143,6 @@ public class Sdf01Executor extends AbstractExecutor { } if (error.isPresent()) { log.error("sdf01.id={} error: {}", sdf01.getId(), messageResolver.resolve(error.get())); - //fixme инициировать = команда для другого сервиса? sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup)); sdf02Imdg.insert(createErrorSdf02(sdf01, error.get(), generationIdForGroup)); continue; } @@ -167,21 +161,21 @@ public class Sdf01Executor extends AbstractExecutor { Optional reg = findReg(stmt); Registry rgs; log.debug("sdf01.id={}, stmt.id={}: registry {}", - sdf01.getId(), - stmt.getId(), - reg.map(r -> "found id=" + r.getId()).orElse("not found")); + sdf01.getId(), + stmt.getId(), + reg.map(r -> "found id=" + r.getId()).orElse("not found")); if (reg.isPresent()) { rgs = reg.get(); updateReg(stmt, rgs); registryImdg.update(rgs); } else { rgs = RegistryBuilder.builder(imdgProvider) - .statement(stmt) - .company(company) - .account(account) - .designation(RegistryDesignation.A) - .loadTcrForCurrency(sdf01.getCurr_code()) - .build(); + .statement(stmt) + .company(company) + .account(account) + .designation(RegistryDesignation.A) + .loadTcrForCurrency(sdf01.getCurr_code()) + .build(); calcBalance(rgs, stmt); Registry registryB = copyRegB(rgs); Registry registryF = copyRegF(rgs); @@ -190,29 +184,15 @@ public class Sdf01Executor extends AbstractExecutor { registryImdg.insert(registryB); registryImdg.insert(rgs); } - //if (!checkDiffBalance(rgs.getDiffBalance())) { - // log.info("sdf01.id={}, stmt.id={}, registry.id={} diffBalance is not zero: {}", - // sdf01.getId(), - // stmt.getId(), - // rgs.getId(), - // rgs.getDiffBalance()); - // reviseFailed = true; - //} stmt.setOperationStatus(OperationStatus.Executed.getKey()); statementImdg.update(stmt); } else { log.debug("sdf01.id={} activeness checks failed {}", sdf01.getId(), messageResolver.resolve(err.get())); - stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert + stmt.setErrorCodeId(err.get().getSubject().getId()); stmt.setOperationStatus(OperationStatus.Rejected.getKey()); statementImdg.update(stmt); } } - //NotificationNewRequest reviseNotification = new NotificationNewRequest(); - //reviseNotification.setObjectType(ObjectType.rgst.getKey()); - //reviseNotification.setComment(reviseFailed ? reviseFailedMessage : reviseSuccessMessage); - //reviseNotification.setPriority(reviseFailed ? Priority.HIGH.getKey() : Priority.LOW.getKey()); - //kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, reviseNotification); - //log.info("revise notification sent (revise {})", reviseFailed ? "error" : "success"); return result; } @@ -354,14 +334,14 @@ public class Sdf01Executor extends AbstractExecutor { private Optional findReg(Statement s) { RegistryTradingParams p = new RegistryTradingParams( - RegistryDesignation.A, RegistryInstrumentType.M, null, RegistryUnit.T + RegistryDesignation.A, RegistryInstrumentType.M, null, RegistryUnit.T ); String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and( - pb.sql(sql), - pb.equals("accountId", s.getAccountId()), - pb.equals("companyId", s.getAddresseeId()) + pb.sql(sql), + pb.equals("accountId", s.getAccountId()), + pb.equals("companyId", s.getAddresseeId()) ); log.debug("Reg search query: {}", rgstrPredicate); return Optional.ofNullable(registryImdg.getSingleObjectByPredicate(rgstrPredicate)); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java index 75266b563..941a4bccd 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf04Executor.java @@ -86,7 +86,6 @@ public class Sdf04Executor extends AbstractExecutor { Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); result.setChildGenerationId(generationIdForGroup); for (SDf04 sdf04 : sdf) { - //обычно мы ищем по группу sdf04, здесь как будто всегда только одна запись, todo нужно прочекать этот момент log.debug("Process sdf04 record; sdf04.id: {}", sdf04.getId()); Account accDeb = accountImdg.getFirstObjectBySQL("account = '%s'".formatted(sdf04.getC_acc_deb())); @@ -99,7 +98,6 @@ public class Sdf04Executor extends AbstractExecutor { if (isType.apply(acc, AccountType.Clrn) || isType.apply(acc, AccountType.Tran)) { registries = selectRegistryForSDF04(acc.getAccount()); } else if (isType.apply(acc, AccountType.Anlt)) { - //в сдф04 указан ANLT или TRAN счет, ищем по контракту AnltSearcher.AnltSearch anltSearch = anltSearcher.loadByAnlt(sdf04.getSpecif_1(), sdf04.getPay_val()); if (!anltSearch.isFound()) { log.error("sdf04.id={} search by specif1 failed {}", sdf04.getId(), msgRslv.resolve(anltSearch.getError())); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java index 9503b41ab..f42b1afb2 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf06Executor.java @@ -81,17 +81,12 @@ public class Sdf06Executor { private final AssetTBFProcessing assets; private final static BigDecimal successResult = BigDecimal.ZERO; - //идет сессия (не возвращаем такую ошибку) private final static BigDecimal errorResult1 = new BigDecimal("1"); - //Участник не найден – переход в ручной режим private final static BigDecimal errorResult2 = new BigDecimal("2"); - //отказ от gateway либо недостаточно средств у нас private final static BigDecimal errorResult3 = new BigDecimal("3"); private final static BigDecimal errorResult4 = new BigDecimal("4"); - //not thread safe: used in EventReceiver single thread executor - //переменная контроля за тем что от гейтвея пришел ответ именно на наш запрос LinkedList> cachedRequests = new LinkedList<>(); private Long sdf06GroupId; private Long sdf07GroupId; @@ -147,7 +142,7 @@ public class Sdf06Executor { Statement stmt = null; if (needToCreateStatement(err.get())) { stmt = createStatementBySdf06(sDf06, - ((Company) validator.getStored(ValidationStored.Sdf06Company)).getId(), + ((Company) validator.getStored(ValidationStored.Sdf06Company)).getId(), account, null); } errorSdf07 = createSdf07(sDf06, now, errorResult); @@ -164,7 +159,6 @@ public class Sdf06Executor { Company company = validator.getStored(ValidationStored.Sdf06Company); TradingClearingRegistry tcr = validator.getStored(ValidationStored.Sdf06Tcr); Currency currency = validator.getStored(Stored.currency); - //проверка существует ли statement пока убрал Statement stmt = createStatementBySdf06(sDf06, company.getId(), account, @@ -178,9 +172,9 @@ public class Sdf06Executor { processedApproved(stmt, sDf06, now, sdf07GroupId); if (tcr != null) { dmiService.setProcContract(tcr.getId(), - sDf06.getPay_val(), - safeBD(sDf06.getSum()), - sDf06.getNumber().toString()); + sDf06.getPay_val(), + safeBD(sDf06.getSum()), + sDf06.getNumber().toString()); Optional asts = assets.searchMoneyByAccAndCompany(company.getId(), account.getId()); asts.ifPresent(ast -> assets.process(ast.a__b(), ast.a__t(), ast.a__f(), BigDecimal.ZERO)); } @@ -245,20 +239,17 @@ public class Sdf06Executor { } public void processGatewayResponse(BaseRequest req) { - //может прийти неограниченно позже 06го, после того как прошел клиринг например... Instant now = Instant.now(); String fileName = null; boolean requestIsIntendedForSdf06 = false; for (SingleAssetResponse gatewayMsg : req.getRequestPayload().getApprovals()) { - //получаем запрос для текущей группы sdf06 - //находим группу Long statementId = gatewayMsg.getEntityId(); ImdgPredicateBuilder pb = statementImdg.predicateBuilder(); Statement stmt = statementImdg.getFirstObjectByPredicate( - pb.and( - pb.equals("id", statementId), - pb.equals("inOutSDfType", InOutSDfType.type6.getKey()) - ) + pb.and( + pb.equals("id", statementId), + pb.equals("inOutSDfType", InOutSDfType.type6.getKey()) + ) ); if (stmt == null) { log.debug("Statement.id {} with type {} not found", statementId, InOutSDfType.type6.getKey()); @@ -277,12 +268,11 @@ public class Sdf06Executor { } Long groupId = sdf06.getGenerationId(); - //сверяем группу SDF06 пришедшего запроса с ожидаемой if (sdf06GroupId == null || !sdf06GroupId.equals(groupId)) { log.error("do not currently waiting for gateway response for statement.id {} sdf06 groupId {}; waiting for {}", - statementId, - groupId, - sdf06Id); + statementId, + groupId, + sdf06Id); return; } @@ -291,9 +281,9 @@ public class Sdf06Executor { processedApproved(stmt, sdf06, updatedTime); Optional tcr = searchTcrOnGatewayResponse(sdf06); dmiService.setProcContract(tcr.map(SpcexObjectBase::getId).orElse(null), - sdf06.getPay_val(), - safeBD(sdf06.getSum()), - sdf06.getNumber().toString() + sdf06.getPay_val(), + safeBD(sdf06.getSum()), + sdf06.getNumber().toString() ); if (tcr.isPresent()) { Optional asts = assets.searchMoneyByAccAndCompany(tcr.get().getCompanyId(), tcr.get().getMoneyAccountId()); @@ -301,9 +291,9 @@ public class Sdf06Executor { } } else { log.trace("statement.id={}, sdf07.id={}, sdf06.id={} rejected (by gateway answer)", - statementId, - sdf06.getGenerationId(), - sdf06.getId()); + statementId, + sdf06.getGenerationId(), + sdf06.getId()); SDf07 sdf07 = createSdf07(sdf06, now, errorResult3); sdf07.setGenerationId(sdf07GroupId); sdf07Imdg.insert(sdf07); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java index fbaf1ce3c..310d5eb71 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf08Executor.java @@ -136,8 +136,8 @@ public class Sdf08Executor extends AbstractExecutor { Account account = validator.getStored(ValidationStored.Sdf08Account); if (statementRequest.getAccountCreationResults().size() == 0 && ClearingErrorInternal.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { - Company company = searchCompany(sdf08.getDepoCode()); // validator.getStored(ValidationStored.Sdf08Company); - Long companyId = company == null ? null : company.getId(); // account == null сегда, т.к. кейс AccountNotPresent + Company company = searchCompany(sdf08.getDepoCode()); + Long companyId = company == null ? null : company.getId(); if (companyId == null) { SDf09 errSdf = createErrorSdf09(sdf08, generationIdForGroup, new EnumMessage(ClearingError.AccountNotFoundB, sdf08.getDepoCode())); sdf09Imdg.insert(errSdf); @@ -155,7 +155,7 @@ public class Sdf08Executor extends AbstractExecutor { continue; } stmt = createSdf08Statement(sdf08, account); - SDf09 sdf09New = createSuccessSdf09(sdf08, generationIdForGroup); //fixme тоже мб убрать + SDf09 sdf09New = createSuccessSdf09(sdf08, generationIdForGroup); sdf09Imdg.insert(sdf09New); stmt.setOutSDfId(sdf09New.getId()); statementImdg.insert(stmt); @@ -171,12 +171,11 @@ public class Sdf08Executor extends AbstractExecutor { rgs = reg.get(); updateReg(stmt, rgs); Registry registryUnitB = findRegByUnit(company.getId(), account.getId(), stmt.getSecurityId(), stmt.getContract(), rgs, RegistryUnit.B).orElse(copyRegB(rgs)); - Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getSecurityId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs)); //передаю null т.к. отнимется ниже по коду + Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getSecurityId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs)); if (registryUnitF.getId() == null) { registryImdg.insert(registryUnitF); log.debug("stmt.id={}, new AM*F.id={}", stmt.getId(), registryUnitF.getId()); } - //нужно сохранить registry B только если его не было if (registryUnitB.getId() == null) { registryImdg.insert(registryUnitB); log.debug("stmt.id={}, new AM*B.id={}", stmt.getId(), registryUnitB.getId()); @@ -192,11 +191,10 @@ public class Sdf08Executor extends AbstractExecutor { registryImdg.insert(registryB); registryImdg.insert(registryF); } - //2. отправить notification на backend stmt.setOperationStatus(OperationStatus.Executed.getKey()); statementImdg.update(stmt); } else { - stmt.setErrorCodeId(error.get().getSubject().getId()); // fixme ErrorText insert + stmt.setErrorCodeId(error.get().getSubject().getId()); stmt.setOperationStatus(OperationStatus.Rejected.getKey()); sdf09New.setResult(""); sdf09Imdg.update(sdf09New); @@ -236,22 +234,16 @@ public class Sdf08Executor extends AbstractExecutor { String accountType = null; if (depoCode != null) { int p = depoCode.indexOf(":"); - if (p == -1) { // двоеточие распарсили заранее при импорте файла, пример: 758200000AT0:000000000:SOVKB-BV-01:NW:0:РНКБ Банк(ПАО) + if (p == -1) { p = depoCode.length(); } - if (p > 3) { // выбрать 3-ю букву, отсчитывая от последнего символа + if (p > 3) { accountType = depoCode.substring(p - 3, p - 2); } } return accountType; } - /** - * @param sdf01Id - * @param account DepoCode - * @param companyId - * @return AccountSdfRequestPart - */ private AccountSdfRequestPart createAccountRequestPart(Long sdf01Id, String account, Long companyId) { AccountSdfRequestPart req = new AccountSdfRequestPart(); req.setAccount(account); @@ -336,8 +328,8 @@ public class Sdf08Executor extends AbstractExecutor { rgs.setRegistryUnit(RegistryUnit.T.getKey()); rgs.setRegistryCode(RegistryUtil.clearingCode(rgs)); Collection tcrsByAccount = tradingClearingRegistryImdg.getCollectionObjectsByFieldValues(Map.of( - "depoAccountId", statement.getAccountId(), - "companyId", statement.getAddresseeId() + "depoAccountId", statement.getAccountId(), + "companyId", statement.getAddresseeId() )); if (!tcrsByAccount.isEmpty()) { TradingClearingRegistry tcr = tcrsByAccount.iterator().next(); @@ -365,7 +357,6 @@ public class Sdf08Executor extends AbstractExecutor { rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); rgs.setTradingDate(statement.getSettlementDate()); rgs.setClearingDate(LocalDate.now()); - //создается на базе stmt, companyCred, accountDeb rgs.setCounterPartyId(statement.getAddresseeId()); rgs.setCreated(Instant.now()); return rgs; @@ -397,10 +388,10 @@ public class Sdf08Executor extends AbstractExecutor { String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), - pb.sql(sql), - pb.equals("companyId", companyId), //fixme companyId? - pb.equals("accountId", accountId), - pb.equals("securityId", securityId) + pb.sql(sql), + pb.equals("companyId", companyId), + pb.equals("accountId", accountId), + pb.equals("securityId", securityId) ); if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) { rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", contract)); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf10Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf10Executor.java index a3d24aaea..23bddcb81 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf10Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf10Executor.java @@ -251,15 +251,13 @@ public class Sdf10Executor { Instant now = Instant.now(); boolean requestIsIntendedForSdf10 = false; for (SingleAssetResponse gatewayMsg : req.getRequestPayload().getApprovals()) { - //получаем запрос для текущей группы sdf10 - //находим группу Long statementId = gatewayMsg.getEntityId(); - ImdgPredicateBuilder pb = statementImdg.predicateBuilder(); + ImdgPredicateBuilder pb = statementImdg.predicateBuilder(); Statement stmt = statementImdg.getFirstObjectByPredicate( - pb.and( - pb.equals("id", statementId), - pb.equals("inOutSDfType", InOutSDfType.type10.getKey()) - ) + pb.and( + pb.equals("id", statementId), + pb.equals("inOutSDfType", InOutSDfType.type10.getKey()) + ) ); if (stmt == null) { log.debug("Statement.id {} with type {} not found", statementId, InOutSDfType.type10.getKey()); @@ -275,12 +273,11 @@ public class Sdf10Executor { } Long groupId = sdf10.getGenerationId(); - //сверяем группу SDF10 пришедшего запроса с ожидаемой if (sdf10GroupId == null || !sdf10GroupId.equals(groupId)) { log.error("do not currently waiting for gateway response for statement.id {} sdf10 groupId {}; waiting for {}", - statementId, - groupId, - sdf10Id); + statementId, + groupId, + sdf10Id); return; } @@ -288,18 +285,16 @@ public class Sdf10Executor { if (gatewayMsg.isApproved()) { Security security = scrtSlct.selectSecurityById(stmt.getSecurityId()); createDs_iResponseFromGateway( - stmt.getAccountId(), -// stmt.getAddresseeId(), - security != null ? security.getSecuritySymbol() : null, - stmt.getAmount().negate(), - sdf10.getOutDocument()); - //tcrId, companyId, securitySymbol + stmt.getAccountId(), + security != null ? security.getSecuritySymbol() : null, + stmt.getAmount().negate(), + sdf10.getOutDocument()); processedApproved(stmt, sdf10, updatedTime); } else { log.trace("statement.id={}, sdf11.id={}, sdf10.id={} rejected (by gateway answer)", - statementId, - sdf10.getGenerationId(), - sdf10.getId()); + statementId, + sdf10.getGenerationId(), + sdf10.getId()); SDf11 sdf11 = createSdf11(sdf10, sdf11GroupId, now, GATEWAY_REJECTED); sdf11Imdg.insert(sdf11); stmt.setOperationStatus(OperationStatus.Rejected.getKey()); @@ -348,11 +343,10 @@ public class Sdf10Executor { stmt.setAddresseeId(companyId); stmt.setSenderId(Sender.Prc.getId()); stmt.setStatementType(StatementType.incr.getKey()); - //fixme stmt.setComment(sdf10.()); stmt.setSecurityId(securityId); stmt.setAccountId(account.getId()); stmt.setAccount(account.getAccount()); - BigDecimal amount = safeBD(new BigDecimal(sdf10.getQuantity())); //fixme safe new BigDecimal + BigDecimal amount = safeBD(new BigDecimal(sdf10.getQuantity())); if (amount.compareTo(BigDecimal.ZERO) >= 0) { stmt.setInOutDirection(InOutDirection.in.getKey()); } else { @@ -370,9 +364,8 @@ public class Sdf10Executor { private AssetOperationRequest requestFromStatement(Statement stmt, String tradingCode, String tcrCode, String securityCode) { AssetOperationRequest req = new AssetOperationRequest(); req.setEntityId(stmt.getId()); -// req.setAmount(stmt.getAmount()); req.setQuantity(stmt.getAmount()); - req.setSecuritySymbol(securityCode); //fixme retrieve security symbol from validator + req.setSecuritySymbol(securityCode); req.setTradingCode(tradingCode); req.setCode(tcrCode); req.setDirection(stmt.getInOutDirection()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf13Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf13Executor.java index 7b82237ab..1ba0ee7d1 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf13Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf13Executor.java @@ -73,26 +73,19 @@ public class Sdf13Executor extends AbstractExecutor { return result; } } -// for (SDf13 sdf13 : sdf) { -// //обычно мы ищем по группу sdf04, здесь как будто всегда только одна запись, todo нужно прочекать этот момент -// SDf12 sDf12 = selectSdf12bySdf13(sdf13); -// log.debug("Process sdf13 record; sdf13.id: {}", sdf13.getId()); -// Collection registries = selectRegistryForSDF12(sDf12.getDepoCodeSender(), sDf12.getSecurityCode()); -// registries.forEach(registry -> unlockRegistry(registry, new BigDecimal(sDf12.getQuantity()))); -// } Session activeSession = sessionImdg.getSingleObjectByFieldValues(Map.of("workflowStatus", Status.Active.getKey())); Instant now = Instant.now(); if (activeSession != null) { Collection registriesByActiveSessionId = selectASBRegistryBySessionId(activeSession.getId()); registriesByActiveSessionId - .forEach(registry -> { - registry.setBalance(BigDecimal.ZERO); - Optional registryUnitF = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.F); - Optional registryUnitT = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.T); - if (registryUnitF.isPresent() && registryUnitT.isPresent()) { - assets.process(registry, registryUnitT.get(), registryUnitF.get(), BigDecimal.ZERO); - } - }); + .forEach(registry -> { + registry.setBalance(BigDecimal.ZERO); + Optional registryUnitF = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.F); + Optional registryUnitT = registryManager.findRegByUnit(registry.getCompanyId(), registry.getAccountId(), registry.getContract(), registry, RegistryUnit.T); + if (registryUnitF.isPresent() && registryUnitT.isPresent()) { + assets.process(registry, registryUnitT.get(), registryUnitF.get(), BigDecimal.ZERO); + } + }); } return result; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf20Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf20Executor.java index 06cbac207..1c7e21c5c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf20Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf20Executor.java @@ -117,13 +117,13 @@ public class Sdf20Executor { if (assets == null) { log.debug("assets were not found for sdf20.id={} creating", sDf20.getId()); assets = assetsMng.createSAssets( - acc, - sDf20.getSecurity(), - security.getId(), - tcr.getTradingClearingRegistryType(), - tcr.getId(), - tcr.getCode(), - cmp + acc, + sDf20.getSecurity(), + security.getId(), + tcr.getTradingClearingRegistryType(), + tcr.getId(), + tcr.getCode(), + cmp ); rgsImdg.insert(assets.a__t()); rgsImdg.insert(assets.a__f()); @@ -139,7 +139,6 @@ public class Sdf20Executor { rgsImdg.insert(ds_i); log.debug("created DS*I.id={} for sdf20.id={}", ds_i.getId(), sDf20.getId()); } else if (RegistryStatus.OK.equalsByKey(ds_i.getRegistryStatus())) { - //защита от повторной обработки log.debug("DS*I.id={} found for sdf20.id={}. skipping sdf20", ds_i.getId(), sDf20.getId()); return; } @@ -164,7 +163,6 @@ public class Sdf20Executor { BigDecimal dsiBalance = safeBD(ds_i.getBalance()); as_t.setPlanBalance(planBalance.add(dsiBalance)); } - //тут меняем if (direction.equals(InOutDirection.in)) { as_t.setCredit(safeBD(as_t.getCredit()).add(quantity.abs())); } else { @@ -174,9 +172,6 @@ public class Sdf20Executor { as_t.setUpdated(now); rgsImdg.update(as_t); assetsMng.process(assets.a__b(), assets.a__t(), assets.a__f(), BigDecimal.ZERO); - - //statement recfree in - //statement delfree out Statement statement = createStatement(cmp.getId(), acc, quantity, sDf20.getId(), sDf20.getTransactionNumber(), security.getId()); stmtImdg.insert(statement); log.debug("sdf20.id={}, processing as_t.id={}, as_f.id={}, as_b.id={}, ds_t.id={}. statement.id={}", @@ -191,14 +186,13 @@ public class Sdf20Executor { sDf20.getTransactionNumber()); assetsMng.process(assets.a__b(), assets.a__t(), assets.a__f(), BigDecimal.ZERO); } - //только при зачислении на 20 и 21 идет запрос в gateway в Торговую систему if (InOutDirection.in.equals(direction)) { - Collection requests = new ArrayList<>(); + Collection requests = new ArrayList<>(); AssetOperationRequest req = requestFromStatement( - BigDecimalUtil.parseLeadingZeroes(sDf20.getQuantity()), - sDf20.getSecurity(), - cmp.getTradingCode(), - tcr.getCode() + BigDecimalUtil.parseLeadingZeroes(sDf20.getQuantity()), + sDf20.getSecurity(), + cmp.getTradingCode(), + tcr.getCode() ); requests.add(req); @@ -208,17 +202,17 @@ public class Sdf20Executor { } } - private AssetOperationRequest requestFromStatement(BigDecimal quantity, //из sdf - String securitySymbol, //из sdf - String tradingCode, //из компании - String tcrCode//из TCR - ) { + private AssetOperationRequest requestFromStatement(BigDecimal quantity, + String securitySymbol, + String tradingCode, + String tcrCode + ) { AssetOperationRequest req = new AssetOperationRequest(); req.setEntityId(null); - req.setQuantity(quantity); //+ - req.setSecuritySymbol(securitySymbol); //+ - req.setTradingCode(tradingCode); //??? - req.setCode(tcrCode); //TCR + req.setQuantity(quantity); + req.setSecuritySymbol(securitySymbol); + req.setTradingCode(tradingCode); + req.setCode(tcrCode); req.setDirection(InOutDirection.in.getKey()); return req; } @@ -233,7 +227,6 @@ public class Sdf20Executor { stmt.setAddresseeId(companyId); stmt.setSenderId(Sender.Rdc.getId()); stmt.setStatementType(StatementType.incr.getKey()); - //fixme stmt.setComment(sdf10.()); stmt.setAccountId(account.getId()); stmt.setAccount(account.getAccount()); stmt.setSecurityId(securityId); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java index a08ab39e8..13b2a2e53 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf21Executor.java @@ -109,8 +109,6 @@ public class Sdf21Executor extends AbstractExecutor { this.securityImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Security, Security.class); } - //todo доделать контроль sdf01 и sdf57 - @Override public String exportTableName() { return null; @@ -122,38 +120,15 @@ public class Sdf21Executor extends AbstractExecutor { } @Override - public void sendCommand(KafkaSender kafkaSender, Result result) {} + public void sendCommand(KafkaSender kafkaSender, Result result) { + } - //V - Изменение statement по sDf57 - // - //1. Перед изменением statement необходимо выполнить ряд проверок: - // 1.1. Найти в company запись, у которой company.tradingCode=sDf57.deal_deb. Если такой записи нет, записать в лог ошибку (5211) "Компания %s не найдена". - // 1.2. Найти в company запись, у которой company.tradingCode=sDf57.deal_cred. Если такой записи нет, записать в лог ошибку (5211) "Компания %s не найдена". - // 1.3. Проверить, есть ли в таблице account счет, у которого account.account=sDf57.c_acc_deb. Если такой записи нет, записать в лог ошибку (5217) "Счет %s не найден". - // 1.4. Проверить, есть ли в таблице account счет, у которого account.account=sDf57.c_acc_cred. Если такой записи нет, записать в лог ошибку (5217) "Счет %s не найден". - // 1.5. Проверить, что sDf57.pay_val=RUR. Иначе записать в лог ошибку (5213) "Валюта %s не найдена". - //2. В зависимости от результата прохождения проверок в п.1 раздела Изменение statement по sDf57: - // 2.1. Если все проверки пройдены, необходимо сформировать 2 новые записи согласно описанию с соответствующим тэгом, - // где первая запись будет содержать информацию о плательщике (по sDf57.deal_deb), - // а вторая о получателе (по sDf57.deal_cred) и связаны по одному inSDfId (= sDf57.id). - // 2.2. Иначе запись в statement не добавляется. - //3. По итогу добавления statement: - // Если в п.1 раздела Изменение statement по sDf57 ошибок не обнаружено, то инициировать изменение таблицы registry согласно описанию с соответствующим тэгом. - // По итогу изменения registry должны быть обновлены значения полей в statement: - // - operationStatus; - // - errorCode в случае выявления ошибки; - // - errorText в случае выявления ошибки. public Result execute(Collection sdf, StatementRequest statementRequest) { Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); result.setChildGenerationId(generationIdForGroup); log.info("SDF21 execution: sdf21 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf21::getGenerationId).orElse(null)); for (SDf21 sdf21 : sdf) { - //LocalDate opDt = operationDateParse(sdf21.getOperationDate()); - //if (opDt == null || !opDt.equals(LocalDate.now())) { - // log.debug("skip sdf21.id={}, operation date {}", sdf21.getId(), sdf21.getOperationDate()); - // continue; - //} IValidator validator = sDf21Validator.apply(sdf21); Optional error = validator.tillFirstError(); if (error.isPresent()) { @@ -163,7 +138,6 @@ public class Sdf21Executor extends AbstractExecutor { Company company = validator.getStored(ValidationStored.CompanyByTradingCode); Account account = validator.getStored(ValidationStored.Sdf21Account); log.debug("company.id={}, account.id={}", company.getId(), account.getId()); - //адресат CREDIT / владелец DEBIT Statement stmt = create(sdf21, company, account); statementImdg.insert(stmt); log.debug("created statement.id={}", stmt.getId()); @@ -171,20 +145,16 @@ public class Sdf21Executor extends AbstractExecutor { Optional err = validateActiveness(company, account); if (err.isEmpty()) { Optional astFound = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.AS_T) - .companyId(company.getId()) //раньше было stmt.getAddresseeId() - .accountId(account.getId()) //раньше было stmt.getAccountId() - .securityId(stmt.getSecurityId()) - .find(); + .rgsCode(RegistryTradingParams.AS_T) + .companyId(company.getId()) + .accountId(account.getId()) + .securityId(stmt.getSecurityId()) + .find(); astFound.ifPresentOrElse(rgs -> { log.debug("stmt.id={}, found AS*T.id={}, updating...", stmt.getId(), rgs.getId()); updateReg(stmt, rgs); - //добавил создание если не найдены Registry registryUnitB = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.B).orElse(copyRegB(rgs)); - Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); //передаю null т.к. отнимется ниже по коду -// registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance())); -// registryUnitF.setUpdated(Instant.now()); - //registry F всегда меняется + Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs, null)); if (registryUnitF.getId() == null) { registryImdg.insert(registryUnitF); log.debug("stmt.id={}, new AM*F.id={}", stmt.getId(), registryUnitF.getId()); @@ -195,22 +165,21 @@ public class Sdf21Executor extends AbstractExecutor { } assets.process(registryUnitB, rgs, registryUnitF, BigDecimal.ZERO); log.debug("stmt.id={}, updated AM*F.id={}", stmt.getId(), registryUnitF.getId()); - //нужно сохранить registry B только если его не было registryImdg.update(rgs); log.debug("stmt.id={}, updated AM*T.id={}: balance {}/debit {}/ credit {}", - stmt.getId(), - rgs.getId(), - rgs.getBalance(), - rgs.getDebit(), - rgs.getCredit()); + stmt.getId(), + rgs.getId(), + rgs.getBalance(), + rgs.getDebit(), + rgs.getCredit()); }, () -> { Registry registry = RegistrySecurityBuilder.builder(imdgProvider) - .sdf21(sdf21) - .statement(stmt) - .company(company) - .account(account) - .designation(RegistryDesignation.A) - .build(); + .sdf21(sdf21) + .statement(stmt) + .company(company) + .account(account) + .designation(RegistryDesignation.A) + .build(); calcBalance(registry, stmt); Registry registryB = copyRegB(registry); Registry registryF = copyRegF(registry, registryB.getBalance()); @@ -219,17 +188,17 @@ public class Sdf21Executor extends AbstractExecutor { registryImdg.insert(registryF); registryImdg.insert(registryB); log.debug("stmt.id={}, new AM*T.id={}, new AM*F.id={}, new AM*B.id={}", - stmt.getId(), - registry.getId(), - registryF.getId(), - registryB.getId()); + stmt.getId(), + registry.getId(), + registryF.getId(), + registryB.getId()); }); stmt.setOperationStatus(OperationStatus.Executed.getKey()); statementImdg.update(stmt); log.debug("stmt.id={} status -> {}", stmt.getId(), OperationStatus.Executed.getKey()); } else { log.debug("statement.id={} activness validation failed {}", stmt.getId(), messageResolver.resolve(err.get())); - stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert + stmt.setErrorCodeId(err.get().getSubject().getId()); stmt.setOperationStatus(OperationStatus.Rejected.getKey()); statementImdg.update(stmt); } @@ -275,7 +244,6 @@ public class Sdf21Executor extends AbstractExecutor { statement.setAddresseeId(cmp.getId()); statement.setSenderId(Sender.Rdc.getId()); statement.setStatementType(StatementType.incr.getKey()); - //fixme statement.setComment(sdf21.()); statement.setAccountId(acc.getId()); Security security = scrSlct.selectSecurityBySymbol(sdf21.getSecurityCode()); @@ -303,13 +271,6 @@ public class Sdf21Executor extends AbstractExecutor { private void calcBalance(Registry rgs, Statement statement) { InOutDirection inOutDirection = IEnumKey.getEnumByKey(InOutDirection.class, statement.getInOutDirection()); - //считаю balance при создании нулевым и исхожу из этого - //При добавлении (на базе изменения statement по sDf57): - //Если значение statement.inOutDirection=IN, то: - //= текущее значение registry.balance + statement.amount - // - //Если значение statement.inOutDirection=OUT, то: - //= текущее значение registry.balance - statement.amount switch (inOutDirection) { case in -> { rgs.setBalance(statement.getAmount()); @@ -321,11 +282,11 @@ public class Sdf21Executor extends AbstractExecutor { } } AccountType accType = IEnumKey.getEnumByKey(AccountType.class, rgs.getAccountType()); - if (!AccountType.Info.equals(accType)) {//fixme nuzhno li? + if (!AccountType.Info.equals(accType)) { rgs.setDiffBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgs.getCheckBalance()))); } rgs.setDiffBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgs.getCheckBalance()))); - rgs.setBalanceDimension(BalanceDimension.PICS.getKey()); //fixme??? + rgs.setBalanceDimension(BalanceDimension.PICS.getKey()); } private void updateReg(Statement s, Registry r) { @@ -396,8 +357,8 @@ public class Sdf21Executor extends AbstractExecutor { private RegistrySearch status() { predicate = pb.and(predicate, pb.or( - pb.equals("registryStatus", RegistryStatus.PROC.getKey()), - pb.equals("registryStatus", RegistryStatus.MNG.getKey()) + pb.equals("registryStatus", RegistryStatus.PROC.getKey()), + pb.equals("registryStatus", RegistryStatus.MNG.getKey()) )); return this; } @@ -409,17 +370,17 @@ public class Sdf21Executor extends AbstractExecutor { private Optional findRegByUnit(Long companyId, Long accountId, String contract, Registry registry, RegistryUnit unit) { RegistryTradingParams p = new RegistryTradingParams( - IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), - IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), - IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), - unit + IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), + IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), + IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), + unit ); String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), - pb.equals("companyId", companyId), - pb.equals("accountId", accountId), - pb.equals("securitySymbol", registry.getSecuritySymbol()) + pb.equals("companyId", companyId), + pb.equals("accountId", accountId), + pb.equals("securitySymbol", registry.getSecuritySymbol()) ); if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) { @@ -452,7 +413,7 @@ public class Sdf21Executor extends AbstractExecutor { StringBuilder buffer = new StringBuilder(); String afterN = specif.substring(index + 1); int countSlashes = 0; - for(int i = 0; i < afterN.length(); i++) { + for (int i = 0; i < afterN.length(); i++) { char c = afterN.charAt(i); if (!Character.isWhitespace(c)) { buffer.append(c); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java index d421a5b5b..fc87ef781 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/Sdf57Executor.java @@ -149,8 +149,6 @@ public class Sdf57Executor extends AbstractExecutor { this.notification = notification; } - //todo доделать контроль sdf01 и sdf57 - @Override public String exportTableName() { return null; @@ -165,25 +163,6 @@ public class Sdf57Executor extends AbstractExecutor { public void sendCommand(KafkaSender kafkaSender, Result result) { } - //V - Изменение statement по sDf57 - // - //1. Перед изменением statement необходимо выполнить ряд проверок: - // 1.1. Найти в company запись, у которой company.tradingCode=sDf57.deal_deb. Если такой записи нет, записать в лог ошибку (5211) "Компания %s не найдена". - // 1.2. Найти в company запись, у которой company.tradingCode=sDf57.deal_cred. Если такой записи нет, записать в лог ошибку (5211) "Компания %s не найдена". - // 1.3. Проверить, есть ли в таблице account счет, у которого account.account=sDf57.c_acc_deb. Если такой записи нет, записать в лог ошибку (5217) "Счет %s не найден". - // 1.4. Проверить, есть ли в таблице account счет, у которого account.account=sDf57.c_acc_cred. Если такой записи нет, записать в лог ошибку (5217) "Счет %s не найден". - // 1.5. Проверить, что sDf57.pay_val=RUR. Иначе записать в лог ошибку (5213) "Валюта %s не найдена". - //2. В зависимости от результата прохождения проверок в п.1 раздела Изменение statement по sDf57: - // 2.1. Если все проверки пройдены, необходимо сформировать 2 новые записи согласно описанию с соответствующим тэгом, - // где первая запись будет содержать информацию о плательщике (по sDf57.deal_deb), - // а вторая о получателе (по sDf57.deal_cred) и связаны по одному inSDfId (= sDf57.id). - // 2.2. Иначе запись в statement не добавляется. - //3. По итогу добавления statement: - // Если в п.1 раздела Изменение statement по sDf57 ошибок не обнаружено, то инициировать изменение таблицы registry согласно описанию с соответствующим тэгом. - // По итогу изменения registry должны быть обновлены значения полей в statement: - // - operationStatus; - // - errorCode в случае выявления ошибки; - // - errorText в случае выявления ошибки. public Result execute(Collection sdf, StatementRequest statementRequest) { Result result = new Result(); Long generationIdForGroup = imdgProvider.getImdgIdGenerator().nextId(); @@ -191,7 +170,7 @@ public class Sdf57Executor extends AbstractExecutor { log.info("SDF57 execution: sdf57 number={}, groupId={}", sdf.size(), sdf.stream().findFirst().map(SDf57::getGenerationId).orElse(null)); AtomicReference sessionIsNeededFlag = new AtomicReference<>(false); boolean sessionIsPresent = sessionImdg.getFirstObjectByFieldValues(Map.of( - "workflowStatus", SessionStatus.ACTV.getKey() + "workflowStatus", SessionStatus.ACTV.getKey() )) != null; sdf = sdf.stream().sorted(Comparator.comparing(SpcexObjectBase::getId)).toList(); for (SDf57 sdf57 : sdf) { @@ -213,23 +192,20 @@ public class Sdf57Executor extends AbstractExecutor { statementImdg.insert(statement); return Optional.of(statement); }; - //create by companyDeb - Company companyDeb = validator.getStored(ValidationStored.Sdf57CompanyDeb); //плательщик + Company companyDeb = validator.getStored(ValidationStored.Sdf57CompanyDeb); Account accountDeb = validator.getStored(ValidationStored.Sdf57AccountDeb); - Company companyCred = validator.getStored(ValidationStored.Sdf57CompanyCred);//получатель + Company companyCred = validator.getStored(ValidationStored.Sdf57CompanyCred); Account accountCred = validator.getStored(ValidationStored.Sdf57AccountCred); log.debug("companyDeb.id={}, accountDeb.id={}, companyCred.id={}, accountCred.id={}", - companyDeb != null ? companyDeb.getId() : null, - accountDeb != null ? accountDeb.getId() : null, - companyCred != null ? companyCred.getId() : null, - accountCred != null ? accountCred.getId() : null); - //адресат CREDIT / владелец DEBIT + companyDeb != null ? companyDeb.getId() : null, + accountDeb != null ? accountDeb.getId() : null, + companyCred != null ? companyCred.getId() : null, + accountCred != null ? accountCred.getId() : null); Optional statementDeb = createStatementIfNeeded.apply(companyDeb, accountDeb, InOutDirection.out); - //адресат DEBIT / владелец CREDIT Optional statementCred = createStatementIfNeeded.apply(companyCred, accountCred, InOutDirection.in); log.debug("created statementDeb.id={}, statementCred.id={}", - statementDeb.map(SpcexObjectBase::getId).orElse(null), - statementCred.map(SpcexObjectBase::getId).orElse(null)); + statementDeb.map(SpcexObjectBase::getId).orElse(null), + statementCred.map(SpcexObjectBase::getId).orElse(null)); Function> createRegistryIfNeeded = stmtCmpAcc -> { Statement stmt = stmtCmpAcc.statement(); @@ -238,28 +214,19 @@ public class Sdf57Executor extends AbstractExecutor { Optional err = validateActiveness(company, account); if (err.isEmpty()) { Optional amtFound = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.AM_T) - .companyId(company.getId()) //раньше было stmt.getAddresseeId() - .accountId(account.getId()) //раньше было stmt.getAccountId() - .find(); + .rgsCode(RegistryTradingParams.AM_T) + .companyId(company.getId()) + .accountId(account.getId()) + .find(); AssetTrio asts = amtFound.map(rgs -> { log.debug("stmt.id={}, found AM*T.id={}, updating...", stmt.getId(), rgs.getId()); updateReg(stmt, rgs, sdf57); - //добавил создание если не найдены Registry registryUnitB = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.B).orElse(copyRegB(rgs)); - Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs)); //передаю null т.к. отнимется ниже по коду -// registryUnitF.setBalance(rgs.getBalance().subtract(registryUnitB.getBalance())); -// registryUnitF.setUpdated(Instant.now()); - //registry F всегда меняется + Registry registryUnitF = findRegByUnit(company.getId(), account.getId(), stmt.getContract(), rgs, RegistryUnit.F).orElse(copyRegF(rgs)); if (registryUnitF.getId() == null) { registryImdg.insert(registryUnitF); log.debug("stmt.id={}, new AM*F.id={}", stmt.getId(), registryUnitF.getId()); } -// else { -// registryImdg.update(registryUnitF); -// log.debug("stmt.id={}, updated AM*F.id={}", stmt.getId(), registryUnitF.getId()); -// } - //нужно сохранить registry B только если его не было if (registryUnitB.getId() == null) { registryImdg.insert(registryUnitB); log.debug("stmt.id={}, new AM*B.id={}", stmt.getId(), registryUnitB.getId()); @@ -267,20 +234,20 @@ public class Sdf57Executor extends AbstractExecutor { registryImdg.update(rgs); assets.process(registryUnitB, rgs, registryUnitF, BigDecimal.ZERO); log.debug("stmt.id={}, updated AM*T.id={}: balance {}/debit {}/ credit {}", - stmt.getId(), - rgs.getId(), - rgs.getBalance(), - rgs.getDebit(), - rgs.getCredit()); + stmt.getId(), + rgs.getId(), + rgs.getBalance(), + rgs.getDebit(), + rgs.getCredit()); return new AssetTrio(registryUnitF, registryUnitB, rgs); }).orElseGet(() -> { Registry registry = RegistryBuilder.builder(imdgProvider) - .statement(stmt) - .company(company) - .account(account) - .loadTcrForCurrency(sdf57.getPay_val()) - .designation(RegistryDesignation.A) - .build(); + .statement(stmt) + .company(company) + .account(account) + .loadTcrForCurrency(sdf57.getPay_val()) + .designation(RegistryDesignation.A) + .build(); calcBalance(registry, stmt, sdf57); Registry registryB = copyRegB(registry); Registry registryF = copyRegF(registry); @@ -289,44 +256,40 @@ public class Sdf57Executor extends AbstractExecutor { registryImdg.insert(registryF); registryImdg.insert(registryB); log.debug("stmt.id={}, new AM*T.id={}, new AM*F.id={}, new AM*B.id={}", - stmt.getId(), - registry.getId(), - registryF.getId(), - registryB.getId()); + stmt.getId(), + registry.getId(), + registryF.getId(), + registryB.getId()); return new AssetTrio(registryF, registryB, registry); }); InOutDirection direction = IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection()); boolean dm_tWasCreated = false; if (!StringUtils.isEmpty(stmt.getContract()) && InOutDirection.in.equals(direction)) { - //todo доделать 11. Идентификация средств УК на клиринговом счете - //stmt.id=340270002, sdf57.specif=Возврат депозита по договору №DT1000S001U/280623/8/7 new DM*T.id=339610032 - //1. у stmt accountId 3021, addresseId 2610034, contract DT1000S001U/280623/8/7 - // Optional dm__Found = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.DM_T) - .companyId(company.getId()) - .accountId(account.getId()) - .contract(stmt.getContract()) - .find(); + .rgsCode(RegistryTradingParams.DM_T) + .companyId(company.getId()) + .accountId(account.getId()) + .contract(stmt.getContract()) + .find(); Optional om_tFound = Optional.empty(); Optional tm_tFound = Optional.empty(); if (dm__Found.isEmpty()) { om_tFound = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.OM_T) - .companyId(company.getId()) - .accountId(account.getId()) - .contract(stmt.getContract()) - .status() - .find(); + .rgsCode(OM_T) + .companyId(company.getId()) + .accountId(account.getId()) + .contract(stmt.getContract()) + .status() + .find(); } if (dm__Found.isEmpty() && om_tFound.isEmpty()) { tm_tFound = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.TM_T) - .companyId(company.getId()) - .accountId(account.getId()) - .contract(stmt.getContract()) - .status() - .find(); + .rgsCode(RegistryTradingParams.TM_T) + .companyId(company.getId()) + .accountId(account.getId()) + .contract(stmt.getContract()) + .status() + .find(); } if (dm__Found.isPresent() && !RegistryStatus.OK.equalsByKey(dm__Found.get().getRegistryStatus())) { Registry dm__ = dm__Found.get(); @@ -334,9 +297,9 @@ public class Sdf57Executor extends AbstractExecutor { dm__.setUpdated(Instant.now()); registryImdg.update(dm__); log.debug("stmt.id={}, sdf57.specif={} updated DM**.id={}", - stmt.getId(), - sdf57.getSpecif(), - dm__.getId()); + stmt.getId(), + sdf57.getSpecif(), + dm__.getId()); } else if (dm__Found.isPresent() && RegistryStatus.OK.equalsByKey(dm__Found.get().getRegistryStatus())) { log.warn(messageResolver.resolve(new EnumMessage(ClearingError.ObligationsAlreadyCalculated))); } else if (om_tFound.isPresent()) { @@ -345,28 +308,28 @@ public class Sdf57Executor extends AbstractExecutor { dm_tWasCreated = true; registryImdg.insert(registryD); log.debug("stmt.id={}, sdf57.specif={}, found OM*T.id={} new DM*T.id={}", - stmt.getId(), - sdf57.getSpecif(), - om_t.getId(), - registryD.getId()); + stmt.getId(), + sdf57.getSpecif(), + om_t.getId(), + registryD.getId()); sessionIsNeededFlag.set(true); } else if (tm_tFound.isPresent() && safeBD(stmt.getAmount()).compareTo(safeBD(tm_tFound.get().getBalance())) == 0) { Optional dm_xFound = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.DM_X) - .companyId(company.getId()) - .accountId(account.getId()) - .contract(stmt.getContract()) - .statusNotOk() - .find(); + .rgsCode(RegistryTradingParams.DM_X) + .companyId(company.getId()) + .accountId(account.getId()) + .contract(stmt.getContract()) + .statusNotOk() + .find(); if (dm_xFound.isEmpty()) { Registry tm_t = tm_tFound.get(); Registry registryD = copyRegD(tm_t, stmt, RegistryUnit.X); registryImdg.insert(registryD); log.debug("stmt.id={}, sdf57.specif={} found TM*T.id={} new DM*X.id={}. Return money identification for Initiator account based on TM*T registry searchin on companyId, accountId, contract and registry_status=PROC|MGN", - stmt.getId(), - sdf57.getSpecif(), - tm_t.getId(), - registryD.getId()); + stmt.getId(), + sdf57.getSpecif(), + tm_t.getId(), + registryD.getId()); sessionIsNeededFlag.set(true); } else { Registry dm_x = dm_xFound.get(); @@ -374,10 +337,10 @@ public class Sdf57Executor extends AbstractExecutor { dm_x.setUpdated(Instant.now()); registryImdg.update(dm_x); log.debug("stmt.id={}, sdf57.specif={} updated {}.id={}", - stmt.getId(), - sdf57.getSpecif(), - dm_x.getRegistryCode(), - dm_x.getId()); + stmt.getId(), + sdf57.getSpecif(), + dm_x.getRegistryCode(), + dm_x.getId()); sessionIsNeededFlag.set(true); } } else if (tm_tFound.isPresent()) { @@ -394,20 +357,20 @@ public class Sdf57Executor extends AbstractExecutor { if (!dm_tWasCreated && timeService.isTradingTime() && InOutDirection.in.equalsByKey(stmt.getInOutDirection())) { if (TextUtil.isEmpty(asts.a__t().getTradingClearingRegistry())) { log.trace("stmt.id={} {}.id={} TCR is empty, skipping gateway request", - stmt.getId(), asts.a__t().getRegistryCode(), asts.a__t().getId()); + stmt.getId(), asts.a__t().getRegistryCode(), asts.a__t().getId()); } else { log.trace("sending gateway request for stmt.id={}", stmt.getId()); Optional gtwReq = gatewayRequest(stmt, - company, - account, - asts.a__t().getTradingClearingRegistry()); + company, + account, + asts.a__t().getTradingClearingRegistry()); gtwReq.ifPresent(r -> kafka.sendRequestToQueue(Consts.ASSET_OPERATION, r)); } } return Optional.of(asts); } else { log.debug("statement.id={} activness validation failed {}", stmt.getId(), messageResolver.resolve(err.get())); - stmt.setErrorCodeId(err.get().getSubject().getId()); // fixme ErrorText insert + stmt.setErrorCodeId(err.get().getSubject().getId()); stmt.setOperationStatus(OperationStatus.Rejected.getKey()); statementImdg.update(stmt); return Optional.empty(); @@ -430,15 +393,15 @@ public class Sdf57Executor extends AbstractExecutor { AnltSearcher.AnltSearch searchResult = anltSearcher.loadByAnlt(stmt.getComment(), sdf57.getPay_val()); if (searchResult.isFound()) { log.debug("stmt.id={} comment={} is anlt, loaded account.id={}/companyId={}", - stmt.getId(), - stmt.getComment(), - searchResult.getAccount().getId(), - searchResult.getCompany().getId()); + stmt.getId(), + stmt.getComment(), + searchResult.getAccount().getId(), + searchResult.getCompany().getId()); asts = createRegistryIfNeeded.apply(new StmtCmpAcc(stmt, searchResult.getCompany(), searchResult.getAccount())); if (OperationStatus.Executed.equalsByKey(stmt.getOperationStatus())) { Optional dmiBalance = dmiService.setOk(searchResult.getTcr().getId(), - findCurr.apply(stmt), - sdf57.getDbfId().toString()); + findCurr.apply(stmt), + sdf57.getDbfId().toString()); asts.ifPresent(trio -> { if (dmiBalance.isPresent() && sessionIsPresent) { BigDecimal planBalance = safeBD(trio.a__t().getPlanBalance()); @@ -450,39 +413,38 @@ public class Sdf57Executor extends AbstractExecutor { } } else if (InOutDirection.in.equals(IEnumKey.getEnumByKey(InOutDirection.class, stmt.getInOutDirection()))) { log.debug("stmt.id={} comment='{}' error: {}. Operating through DMAU registry", - stmt.getId(), - stmt.getComment(), - messageResolver.resolve(searchResult.getError())); + stmt.getId(), + stmt.getComment(), + messageResolver.resolve(searchResult.getError())); Optional dmau = RegistrySearch.builder(registryImdg) - .rgsCode(RegistryTradingParams.DMAU) - .companyId(cmp.getId()) - .accountId(acc.getId()) - .accountType(AccountType.Anlt) - .find(); + .rgsCode(RegistryTradingParams.DMAU) + .companyId(cmp.getId()) + .accountId(acc.getId()) + .accountType(AccountType.Anlt) + .find(); dmau.ifPresentOrElse(rgs -> { log.debug("stmt.id={} DMAU.id={} found, updating", stmt.getId(), rgs.getId()); updateDmauReg(stmt, rgs); registryImdg.update(rgs); }, () -> { Registry newDmau = RegistryBuilder.builder(imdgProvider) - .statement(stmt) - .company(cmp) - .account(acc) - .designation(RegistryDesignation.D) - .build(); + .statement(stmt) + .company(cmp) + .account(acc) + .designation(RegistryDesignation.D) + .build(); newDmau.setRegistryUnit(RegistryUnit.U.getKey()); newDmau.setRegistryCode(RegistryUtil.clearingCode(newDmau)); newDmau.setBalance(safeBD(stmt.getAmount())); registryImdg.insert(newDmau); log.debug("stmt.id={} created DMAU.id={}", stmt.getId(), newDmau.getId()); }); - //DMAU подразумевает увеличение остатка поля balance и credit registry.code=DMAU } } else if (OperationStatus.Executed.equalsByKey(stmt.getOperationStatus())) { if (asts.isPresent()) { Optional dmiBalance = dmiService.setOk(asts.get().a__t().getTradingClearingRegistryId(), - findCurr.apply(stmt), - sdf57.getDbfId().toString()); + findCurr.apply(stmt), + sdf57.getDbfId().toString()); asts.ifPresent(trio -> { if (dmiBalance.isPresent() && sessionIsPresent) { BigDecimal planBalance = safeBD(trio.a__t().getPlanBalance()); @@ -493,8 +455,8 @@ public class Sdf57Executor extends AbstractExecutor { }); } else { log.error("stmt.id={} operationStatus={} but couldn't extract TCR.id for DM*I update", - stmt.getId(), - stmt.getOperationStatus()); + stmt.getId(), + stmt.getOperationStatus()); } } }; @@ -581,7 +543,7 @@ public class Sdf57Executor extends AbstractExecutor { statement.setInOutDirection(inOutDirection.getKey()); statement.setSettlementDate(payDate(sdf57.getPay_date())); statement.setAmount(TextUtil.isEmpty(sdf57.getSum_deb()) ? null : new BigDecimal(sdf57.getSum_deb())); - statement.setOperationStatus(OperationStatus.Pending.getKey());//todo тут что-то с апдейтом статуса на EXEC когда создались регистры с нулевым диффом? + statement.setOperationStatus(OperationStatus.Pending.getKey()); statement.setInSDfId(sdf57.getId()); statement.setInOutSDfType(InOutSDfType.type57.getKey()); @@ -594,13 +556,6 @@ public class Sdf57Executor extends AbstractExecutor { checkBalanceSendNotification(rgs, sdf57); BigDecimal checkBalance = getCheckBalance(rgs, sdf57); InOutDirection inOutDirection = IEnumKey.getEnumByKey(InOutDirection.class, statement.getInOutDirection()); - //считаю balance при создании нулевым и исхожу из этого - //При добавлении (на базе изменения statement по sDf57): - //Если значение statement.inOutDirection=IN, то: - //= текущее значение registry.balance + statement.amount - // - //Если значение statement.inOutDirection=OUT, то: - //= текущее значение registry.balance - statement.amount switch (inOutDirection) { case in -> { rgs.setBalance(statement.getAmount()); @@ -616,7 +571,7 @@ public class Sdf57Executor extends AbstractExecutor { rgs.setCheckBalance(checkBalance); rgs.setDiffBalance(safeBD(rgs.getBalance()).subtract(safeBD(rgs.getCheckBalance()))); } - rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme ! смотри описание и ссылка на начало html'ки + rgs.setBalanceDimension(BalanceDimension.MONY.getKey()); } private void checkBalanceSendNotification(Registry r, SDf57 sdf57) { @@ -741,16 +696,16 @@ public class Sdf57Executor extends AbstractExecutor { private RegistrySearch status() { predicate = pb.and(predicate, pb.or( - pb.equals("registryStatus", RegistryStatus.PROC.getKey()), - pb.equals("registryStatus", RegistryStatus.MNG.getKey()) + pb.equals("registryStatus", RegistryStatus.PROC.getKey()), + pb.equals("registryStatus", RegistryStatus.MNG.getKey()) )); return this; } private RegistrySearch statusNotOk() { predicate = pb.and(predicate, pb.or( - pb.equals("registryStatus", RegistryStatus.PROC.getKey()), - pb.equals("registryStatus", RegistryStatus.UNCV.getKey()) + pb.equals("registryStatus", RegistryStatus.PROC.getKey()), + pb.equals("registryStatus", RegistryStatus.UNCV.getKey()) )); return this; } @@ -762,17 +717,17 @@ public class Sdf57Executor extends AbstractExecutor { private Optional findRegByUnit(Long companyId, Long accountId, String contract, Registry registry, RegistryUnit unit) { RegistryTradingParams p = new RegistryTradingParams( - IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), - IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), - IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), - unit + IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), + IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), + IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), + unit ); String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), - pb.sql(sql), - pb.equals("companyId", companyId), //fixme companyId? - pb.equals("accountId", accountId) + pb.sql(sql), + pb.equals("companyId", companyId), + pb.equals("accountId", accountId) ); if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) { @@ -796,23 +751,23 @@ public class Sdf57Executor extends AbstractExecutor { } ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.sql(RegistryCodeSqlBuilder.getInstance(OM_T).build()), - pb.or( - pb.equals("registryStatus", RegistryStatus.PROC.getKey()), - pb.equals("registryStatus", RegistryStatus.MNG.getKey()) - ), - pb.notNull("contract"), - pb.not(pb.equals("contract", "")) + pb.sql(RegistryCodeSqlBuilder.getInstance(OM_T).build()), + pb.or( + pb.equals("registryStatus", RegistryStatus.PROC.getKey()), + pb.equals("registryStatus", RegistryStatus.MNG.getKey()) + ), + pb.notNull("contract"), + pb.not(pb.equals("contract", "")) ); String contract = registryImdg.getCollectionObjectsByPredicate(prdct) - .stream() - .filter(r -> r.getValueDate() != null) - .filter(r -> r.getRefundDate() != null) - .filter(r -> r.getValueDate().isBefore(r.getRefundDate())) - .map(Registry::getContract) - .filter(specif::contains) - .findFirst() - .orElse(null); + .stream() + .filter(r -> r.getValueDate() != null) + .filter(r -> r.getRefundDate() != null) + .filter(r -> r.getValueDate().isBefore(r.getRefundDate())) + .map(Registry::getContract) + .filter(specif::contains) + .findFirst() + .orElse(null); if (contract == null) { log.warn("couldn't find match for specif {}", specif); @@ -857,26 +812,11 @@ public class Sdf57Executor extends AbstractExecutor { req.setAmount(safeBD(amount).subtract(d__vSum)); } catch (NumberFormatException e) { log.error("stmt.id={} failed to parse specif {} {}", - stmt.getId(), - specif, - ExceptionUtils.getStackTrace(e)); + stmt.getId(), + specif, + ExceptionUtils.getStackTrace(e)); } } - //Session existActiveSession = sessionImdg.getFirstObjectByFieldValues(Map.of( - // "workflowStatus", SessionStatus.ACTV.getKey() - //)); - //if (existActiveSession != null) { - // log.debug("active session.id={} type {}", existActiveSession.getId(), existActiveSession.getSessionType()); - // List d__vs = assets.searchByParams(stmt.getAccount(), CurrencyCode.RUB.getKey(), stmt.getSenderId(), D__V) - // .stream() - // .filter(rgs -> existActiveSession.getId().equals(rgs.getSessionId())) - // .toList(); - // BigDecimal d__vSum = d__vs.stream() - // .map(rgs -> safeBD(rgs.getBalance())) - // .reduce(BigDecimal.ZERO, BigDecimal::add); - // BigDecimal amount = req.getAmount(); - // req.setAmount(safeBD(amount).subtract(d__vSum)); - //} if (req.getAmount().compareTo(BigDecimal.ZERO) == 0) { return Optional.empty(); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/SdfLegacyExecutor.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/SdfLegacyExecutor.java index 17d7d7f4e..58e5c45af 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/SdfLegacyExecutor.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/executors/SdfLegacyExecutor.java @@ -90,10 +90,7 @@ public class SdfLegacyExecutor extends AbstractExecutor { Optional error = validator.tillFirstError(); Company company = validator.getStored(ValidationStored.Company); if (statementRequest.getAccountCreationResults().size() == 0 - && ClearingError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { - //на данном шаге company существует -> getId ok - //формируем пакетный запрос на добавление account - //ответ придет в этот же метод, process + && ClearingError.AccountNotPresent.equals(error.map(EnumMessage::getSubject).orElse(null))) { if (company == null) { log.warn("account {} for sdf01.id={} not found. Can not send request for creation, cause company not found too", sdf01.getAccount(), sdf01.getId()); } else { @@ -112,24 +109,15 @@ public class SdfLegacyExecutor extends AbstractExecutor { Statement statement = statementImdg.getFirstObjectByFieldValues(Map.of("account", sdf01.getAccount())); if (statement == null) { statement = createFlow(sdf01, - company, - validator.getStored(ValidationStored.Account)); + company, + validator.getStored(ValidationStored.Account)); } else { updateFlow(statement, sdf01, - validator.getStored(ValidationStored.Account)); + validator.getStored(ValidationStored.Account)); } SDf02 sdf02New = createSuccessSdf02(sdf01, generationIdForGroup); sdf02Imdg.insert(sdf02New); statement.setOutSDfId(sdf02New.getId()); -// AccountResult accountResult = accountBalanceService.createAccountBalance(statement.getAddresseeId(), statement.getAccountId(), statement.getAmount(), -// null/*statement.getCashMovementCurrencyCode()*/); -// if (accountResult.getError() != null) { -// statement.setErrorCodeId(accountResult.getError().getSubject().getId()); -// todo statement.setErrorText(errorResolver.resolve(accountResult.getError())); -// } else { -// accountBalanceImdg.insert(accountResult.getAccount()); //insert == update? -// statement.setOperationStatus(OperationStatus.Executed.getKey()); -// } statementImdg.update(statement); } return result; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/ExecutionDepositSorter.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/ExecutionDepositSorter.java index 4a17cba7e..d068ff832 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/ExecutionDepositSorter.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/ExecutionDepositSorter.java @@ -24,56 +24,39 @@ public class ExecutionDepositSorter { } public LinkedHashMap>> sortExecutionDeposit(CollectionexecDeposits) { - //отсортировали все записи по категориям - // → внутри каждой подгруппы по категориям сортируем по компаниям - // → обрабатываем почередно все записи первой компании - // → когда по первой компании записи закончились, начинаем обработавать все записи второй компании и так далее - // → когда по первой категории закончились записи для всех компаниий, - // начинаем аналогично обработавать все записи второй категории и так далее). - - //сортируем по категориям Map> categoryGrouping = execDeposits.stream().map(executionDeposit -> { ClearingCategory category = clearingMemberCategoryProvider.apply(executionDeposit.getCompanyId()); return new Pair<>(category, executionDeposit); }).collect(Collectors.groupingBy(Pair::getFirst, Collectors.mapping(Pair::getSecond, Collectors.toList()))); - - //внутри категорий сортируем по компаниям LinkedHashMap>> byCategoryByCompany = new LinkedHashMap<>(); Consumer takeByClearingCategoryAndSortByCompanyId = clearingCategory -> { List wrappers = categoryGrouping.remove(clearingCategory); if (wrappers != null) { List> batches = wrappers.stream() - .collect(Collectors.groupingBy(ExecutionDeposit::getCompanyId)) - .entrySet() - .stream() - .sorted(Map.Entry.comparingByKey()) - .map(Map.Entry::getValue) - .toList(); + .collect(Collectors.groupingBy(ExecutionDeposit::getCompanyId)) + .entrySet() + .stream() + .sorted(Map.Entry.comparingByKey()) + .map(Map.Entry::getValue) + .toList(); byCategoryByCompany.put(clearingCategory, batches); } }; - //кладем в порядке I, V, B takeByClearingCategoryAndSortByCompanyId.accept(ClearingCategory.I); takeByClearingCategoryAndSortByCompanyId.accept(ClearingCategory.V); takeByClearingCategoryAndSortByCompanyId.accept(ClearingCategory.B); - //для всех остальных порядок не важен, будут последними categoryGrouping.keySet().forEach(takeByClearingCategoryAndSortByCompanyId); - - //метод для дополнительной сортировки внутри групп по категории и компании BiConsumer> additionalSorting = - (clearingCategory, comparator) -> { - List> allExecDepositsForCategory = byCategoryByCompany.get(clearingCategory); - if (allExecDepositsForCategory != null) { - allExecDepositsForCategory.forEach(singleCompanyBatch -> singleCompanyBatch.sort(comparator)); - } - }; - //применяем дополнительные сортировки - //для V сначала Sell, потом Buy, в первую очередь должны обрабатываться новые сделки с наименьшими объемами + (clearingCategory, comparator) -> { + List> allExecDepositsForCategory = byCategoryByCompany.get(clearingCategory); + if (allExecDepositsForCategory != null) { + allExecDepositsForCategory.forEach(singleCompanyBatch -> singleCompanyBatch.sort(comparator)); + } + }; additionalSorting.accept(ClearingCategory.V, - firstSellThenBuy.thenComparing(ExecutionDeposit::getFirstLegAmount)); - //для V сначала Buy, потом Sell, exchangeExecutionId - возрастающий + firstSellThenBuy.thenComparing(ExecutionDeposit::getFirstLegAmount)); additionalSorting.accept(ClearingCategory.B, - firstBuyThenSell.thenComparing(ExecutionDeposit::getExchangeExecutionId)); + firstBuyThenSell.thenComparing(ExecutionDeposit::getExchangeExecutionId)); return byCategoryByCompany; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java index 9c5ad9ae1..b851eb1eb 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/order/PaymentInstructionSorter.java @@ -77,8 +77,7 @@ public class PaymentInstructionSorter { } else { String message = String.format("cannot sort creditLegAccount.type=%s, debitLegAccount.type=%s", creditLegAcc.getAccountType(), debitLegAcc.getAccountType()); log.error("generationId={}, senderId={} payment.id={} {}", - generationId, senderId, payment.getId(), message); - //continue; + generationId, senderId, payment.getId(), message); } } Function, BigDecimal> creditAmountSum = paymentInstructions -> paymentInstructions @@ -124,7 +123,6 @@ public class PaymentInstructionSorter { result.add(batchInfo); } else { log.debug("Do nothing as category {}, check next", categoryValue); - // проверить следующую категорил, когда закончатся выдать ошибку } } log.warn("unknown clearing member category [" + companyCategory + "] for generationId=" diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/payment/PaymentInstructionOutboundService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/payment/PaymentInstructionOutboundService.java index ee1e59243..41a728e08 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/payment/PaymentInstructionOutboundService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/payment/PaymentInstructionOutboundService.java @@ -133,7 +133,7 @@ public class PaymentInstructionOutboundService { Company sender = cmpImdg.getSingleObjectByID(payload.getSenderId()); BigDecimal amount = safeBD(payload.getCreditLeg_amount()); log.debug("all checks passed, accCred.id={}, accDeb.id={}, addressee.id={}, sender.id={}, amount: {}", - accCred.getId(), accDeb.getId(), addressee.getId(), sender.getId(), amount); + accCred.getId(), accDeb.getId(), addressee.getId(), sender.getId(), amount); Locale locale = LocaleUtil.locale(accDeb); String purpose = tcr != null ? @@ -147,16 +147,16 @@ public class PaymentInstructionOutboundService { purpose = reqPmtPrpse + " " + purpose; } PaymentInstruction pmt = PaymentInstructionBuilderV2.builder(imdgProvider) - .registry(new Registry()) - .sender(addressee.getId()) - .addressee(addressee.getId()) - .debitLegAccount(accDeb) - .creditLegAccount(accCred) - .amount(amount) - .sessionId(null) - .purpose(purpose) - .currency(accCred.getCurrency()) - .build(); + .registry(new Registry()) + .sender(addressee.getId()) + .addressee(addressee.getId()) + .debitLegAccount(accDeb) + .creditLegAccount(accCred) + .amount(amount) + .sessionId(null) + .purpose(purpose) + .currency(accCred.getCurrency()) + .build(); BankAccount bnkAcc = bnkAccImdg.getFirstObjectBySQL("accountId = %d".formatted(accDeb.getId())); if (bnkAcc != null) { pmt.setAddresseeBankName(bnkAcc.getBankName()); @@ -169,7 +169,6 @@ public class PaymentInstructionOutboundService { pmt.setDebitLeg_securityId(currency.getId()); } pmt.setTransactionStatus(TransactionStatus.stld.getKey()); - //fixme pmt.setDocumentNumber(registry.getSecurityId()); pmtImdg.insert(pmt); log.debug("new PaymentInstruction.id: {}", pmt.getId()); @@ -179,34 +178,34 @@ public class PaymentInstructionOutboundService { pmt.setUpdated(now); pmtImdg.update(pmt); log.debug("insufficient balance, pmt.id: {}, am*f.balance={}", - pmt.getId(), assets.map(AssetTrio::a__f).map(Registry::getBalance).orElse(null)); + pmt.getId(), assets.map(AssetTrio::a__f).map(Registry::getBalance).orElse(null)); return error(req.getId(), ClearingError.BalanceInsufficient); } log.debug("assets found and balance is ok. am*b.id={}, am*t.id={}, am*f.id={}", - assets.get().a__b().getId(), assets.get().a__t().getId(), assets.get().a__f().getId()); + assets.get().a__b().getId(), assets.get().a__t().getId(), assets.get().a__f().getId()); SDf54 sDf54 = sdf54Creator.create(pmt); sDf54.setId(idGenerator.nextId()); sDf54.setGenerationId(pmt.getId()); sdf54Imdg.insert(sDf54); log.debug("new sdf54.id: {}", sDf54.getId()); dmiService.setProcComment(tcr.getId(), - curr, - safeBD(amount).negate(), - sDf54.getDocnm_ref()); + curr, + safeBD(amount).negate(), + sDf54.getDocnm_ref()); assetsMng.process(assets.get().a__b(), assets.get().a__t(), assets.get().a__f(), BigDecimal.ZERO); if (time.isTradingTime()) { Supplier builder = () -> GatewayRequestCreator.from(pmt, - assets.get().a__b().getTradingCode(), - tcr.getCode()); + assets.get().a__b().getTradingCode(), + tcr.getCode()); Optional gatewayOk = gateway.gatewayRequestAndWait(builder); if (gatewayOk.isEmpty() || gatewayOk.get().equals(Boolean.FALSE)) { String gtwErrMsg = msgs.resolve(mapError(gatewayOk)); log.error("sdf54.id={} pmt.id={} {}", sDf54.getId(), - pmt.getId(), - gtwErrMsg); + pmt.getId(), + gtwErrMsg); notification.sendNotification(ObjectType.gateway, - gtwErrMsg, - Priority.HIGH); + gtwErrMsg, + Priority.HIGH); pmt.setTransactionStatus(TransactionStatus.fail.getKey()); pmt.setUpdated(now); pmtImdg.update(pmt); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java index 4efe72984..3b7844508 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/AssetTBFProcessing.java @@ -53,9 +53,6 @@ public class AssetTBFProcessing { this.rgsMng = new RegistryManager(rgsImdg); } - //если нет B ссчитаем что он 0 - //если нет F надо его создать... - //если нет T журнал WARN и ничего не делаем public Registry copy(Registry a__t, RegistryUnit rgsUnit) { Registry a___ = a__t.clone(); a___.setRegistryUnit(rgsUnit.getKey()); @@ -64,14 +61,6 @@ public class AssetTBFProcessing { return a___; } - /** - * пересчитывает A**F = A**T - A**B + D**I - D**V - * учитываются только D**I с отрицательным balance. - * @param am_b регистр блокированных средств - * @param am_t регистр средств под торги - * @param am_f регистр свободных средств - * @param sum отнимается от блокировки. - */ public void process(Registry am_b, Registry am_t, Registry am_f, BigDecimal sum) { boolean am_bExists = am_b != null; if (!am_bExists) { @@ -81,20 +70,20 @@ public class AssetTBFProcessing { safeWrapField(am_b::getBalance, am_b::setBalance); safeWrapField(am_f::getBalance, am_f::setBalance); Collection d__is = searchByParams(am_t.getAccount(), - am_t.getSecuritySymbol(), - am_t.getCompanyId(), - D__I.type(am_t.getRegistryInstrumentType())); + am_t.getSecuritySymbol(), + am_t.getCompanyId(), + D__I.type(am_t.getRegistryInstrumentType())); BigDecimal d__iSum = d__is.stream() - .filter(d__i -> safeBD(d__i.getBalance()).compareTo(BigDecimal.ZERO) < 0) - .map(rgs -> safeBD(rgs.getBalance())) - .reduce(BigDecimal.ZERO, BigDecimal::add); + .filter(d__i -> safeBD(d__i.getBalance()).compareTo(BigDecimal.ZERO) < 0) + .map(rgs -> safeBD(rgs.getBalance())) + .reduce(BigDecimal.ZERO, BigDecimal::add); Collection d__vs = searchByParams(am_t.getAccount(), - am_t.getSecuritySymbol(), - am_t.getCompanyId(), - D__V.type(am_t.getRegistryInstrumentType())); + am_t.getSecuritySymbol(), + am_t.getCompanyId(), + D__V.type(am_t.getRegistryInstrumentType())); BigDecimal d__vSum = d__vs.stream() - .map(rgs -> safeBD(rgs.getBalance())) - .reduce(BigDecimal.ZERO, BigDecimal::add); + .map(rgs -> safeBD(rgs.getBalance())) + .reduce(BigDecimal.ZERO, BigDecimal::add); Instant now = Instant.now(); BigDecimal am_fBalanceForLoging = am_f.getBalance(); BigDecimal am_bBalanceForLoging = am_b.getBalance(); @@ -111,13 +100,13 @@ public class AssetTBFProcessing { rgsImdg.update(am_f); log.debug("assets processing [{}#id={}#balance={} | {}#id={}#balance={} | {}#id={}#balance={}] " + - "D**I.size={} D**V.size={}. {}.balance -> {}, {}.balance -> {}", - am_f.getRegistryCode(), am_f.getId(), am_fBalanceForLoging, - am_t.getRegistryCode(), am_t.getId(), am_t.getBalance(), - am_b.getRegistryCode(), am_b.getId(), am_bBalanceForLoging, - d__is.size(), d__vs.size(), - am_b.getRegistryCode(), am_b.getBalance(), - am_f.getRegistryCode(), am_f.getBalance()); + "D**I.size={} D**V.size={}. {}.balance -> {}, {}.balance -> {}", + am_f.getRegistryCode(), am_f.getId(), am_fBalanceForLoging, + am_t.getRegistryCode(), am_t.getId(), am_t.getBalance(), + am_b.getRegistryCode(), am_b.getId(), am_bBalanceForLoging, + d__is.size(), d__vs.size(), + am_b.getRegistryCode(), am_b.getBalance(), + am_f.getRegistryCode(), am_f.getBalance()); } public Collection searchByParams(String account, @@ -327,7 +316,6 @@ public class AssetTBFProcessing { return safeBD(registry.getBalance()).compareTo(safeBD(amount)) < 0; } - //точно будет аналогично и с другими полями private void safeWrapField(Supplier getter, Consumer setter) { BigDecimal fieldValue = getter.get(); setter.accept(safeBD(fieldValue)); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/DmiService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/DmiService.java index 72581f901..43964bfb2 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/DmiService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/DmiService.java @@ -40,54 +40,42 @@ public class DmiService { this.rgsMng = rgsMng; } - /** - * ищем D**I по tcrId/security/contract - * обновляем либо создаем - */ public void setProcContract(Long tcrId, String securitySymbol, BigDecimal balance, String contract) { findDmiByContract(tcrId, securitySymbol, contract).ifPresentOrElse(d__i -> { - d__i.setRegistryStatus(RegistryStatus.PROC.getKey()); - d__i.setUpdated(Instant.now()); - log.trace("updating D**I status to {}", d__i.getRegistryStatus()); - rgsImdg.update(d__i); - }, () -> createDmi(tcrId, securitySymbol, balance) - .ifPresent(d__i -> { - d__i.setContract(contract); - rgsImdg.insert(d__i); - log.debug("created {}.id={}", d__i.getRegistryCode(), d__i.getId()); - }) + d__i.setRegistryStatus(RegistryStatus.PROC.getKey()); + d__i.setUpdated(Instant.now()); + log.trace("updating D**I status to {}", d__i.getRegistryStatus()); + rgsImdg.update(d__i); + }, () -> createDmi(tcrId, securitySymbol, balance) + .ifPresent(d__i -> { + d__i.setContract(contract); + rgsImdg.insert(d__i); + log.debug("created {}.id={}", d__i.getRegistryCode(), d__i.getId()); + }) ); } - /** - * ищем D**I по tcrId/security/comment - * обновляем либо создаем - */ public void setProcComment(Long tcrId, - String securitySymbol, - BigDecimal balance, - String comment) { + String securitySymbol, + BigDecimal balance, + String comment) { findDmiByComment(tcrId, securitySymbol, comment).ifPresentOrElse(d__i -> { - d__i.setRegistryStatus(RegistryStatus.PROC.getKey()); - d__i.setUpdated(Instant.now()); - log.trace("updating D**I status to {}", d__i.getRegistryStatus()); - rgsImdg.update(d__i); - }, () -> createDmi(tcrId, securitySymbol, balance) - .ifPresent(d__i -> { - d__i.setComment(comment); - rgsImdg.insert(d__i); - log.debug("created {}.id={}", d__i.getRegistryCode(), d__i.getId()); - }) + d__i.setRegistryStatus(RegistryStatus.PROC.getKey()); + d__i.setUpdated(Instant.now()); + log.trace("updating D**I status to {}", d__i.getRegistryStatus()); + rgsImdg.update(d__i); + }, () -> createDmi(tcrId, securitySymbol, balance) + .ifPresent(d__i -> { + d__i.setComment(comment); + rgsImdg.insert(d__i); + log.debug("created {}.id={}", d__i.getRegistryCode(), d__i.getId()); + }) ); } - /** - * ищем D**I по tcrId/security/comment - * добавляем поле contract - */ public void setContract(Long tcrId, String securitySymbol, String comment, @@ -101,41 +89,37 @@ public class DmiService { if (sdf57 != null) { ImdgPredicateBuilder pb = statementImdg.predicateBuilder(); ImdgPredicate stmtPrdct = pb.and( - pb.equals("inSDfId", sdf57.getId()), - pb.equals("inOutSDfType", InOutSDfType.type57.getKey()) + pb.equals("inSDfId", sdf57.getId()), + pb.equals("inOutSDfType", InOutSDfType.type57.getKey()) ); Statement stmt = statementImdg.getFirstObjectByPredicate(stmtPrdct); if (stmt != null && OperationStatus.Executed.equalsByKey(stmt.getOperationStatus())) { d__i.setRegistryStatus(RegistryStatus.OK.getKey()); } else { log.warn("tcrId={} securitySymbol={} comment={} sdf57 dbfId={} found, stmt.id={} status {}. d**i status will not be updated", - tcrId, - securitySymbol, - comment, - dbfId, - stmt != null ? stmt.getId() : null, - stmt != null ? stmt.getOperationStatus() : null); + tcrId, + securitySymbol, + comment, + dbfId, + stmt != null ? stmt.getId() : null, + stmt != null ? stmt.getOperationStatus() : null); } } } catch (Throwable e) { log.error("sdf57 search by {}: error {}", - contract, - ExceptionUtils.getStackTrace(e)); + contract, + ExceptionUtils.getStackTrace(e)); } rgsImdg.update(d__i); log.trace("set {}.id={} contract {}", d__i.getRegistryCode(), d__i.getId(), contract); }, () -> log.trace("didn't find DM*I by tcr.id={} securitySymbol={} comment={}", - tcrId, securitySymbol, comment)); + tcrId, securitySymbol, comment)); } - /** - * ищем D**I по tcrId/security/contract - * задаем статус ОК - */ public Optional setOk(Long tcrId, - String securitySymbol, - String contract) { + String securitySymbol, + String contract) { BigDecimal[] dmiBalance = {null}; findDmiByContract(tcrId, securitySymbol, contract).ifPresentOrElse(d__i -> { d__i.setRegistryStatus(RegistryStatus.OK.getKey()); @@ -145,7 +129,7 @@ public class DmiService { dmiBalance[0] = BigDecimalUtil.safeBD(d__i.getBalance()); }, () -> { log.trace("didn't find DM*I by tcr.id={} securitySymbol={} contract={}", - tcrId, securitySymbol, contract); + tcrId, securitySymbol, contract); }); return Optional.ofNullable(dmiBalance[0]); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java index cc1d402a0..a8cf938f0 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/registry/RegistryManager.java @@ -186,7 +186,6 @@ public class RegistryManager { } public static void zeroState(Registry rgs) { - //балансы rgs.setBalance(BigDecimal.ZERO); rgs.setDebit(BigDecimal.ZERO); rgs.setSettledDebit(BigDecimal.ZERO); @@ -195,7 +194,6 @@ public class RegistryManager { rgs.setDiffBalance(BigDecimal.ZERO); rgs.setCheckBalance(BigDecimal.ZERO); rgs.setPlanBalance(BigDecimal.ZERO); - //даты rgs.setCreated(Instant.now()); LocalDate now = LocalDate.now(); rgs.setClearingDate(now); @@ -212,21 +210,20 @@ public class RegistryManager { ); } - //todo refactor public Optional findRegByUnit(Long companyId, Long accountId, String contract, Registry registry, RegistryUnit unit) { RegistryTradingParams p = new RegistryTradingParams( - IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), - IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), - IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), - unit + IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), + IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), + IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), + unit ); String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = rgsImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), - pb.sql(sql), - pb.equals("companyId", companyId), - pb.equals("accountId", accountId), - pb.equals("securitySymbol", registry.getSecuritySymbol()) + pb.sql(sql), + pb.equals("companyId", companyId), + pb.equals("accountId", accountId), + pb.equals("securitySymbol", registry.getSecuritySymbol()) ); if (RegistryDesignation.D.equalsByKey(registry.getRegistryDesignation()) && !TextUtil.isEmpty(contract)) { rgstrPredicate = pb.and(rgstrPredicate, pb.equals("contract", contract)); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/AnltAccLoad.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/AnltAccLoad.java index 7dd1ad5ef..760817070 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/AnltAccLoad.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/AnltAccLoad.java @@ -15,9 +15,6 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.IErrorEnumId; import ru.spcex.platform.utils.validation.IValidationRule; -/** - * В рексевте необходим интерфейс WithId - */ public class AnltAccLoad implements IValidationRule> { private final IErrorEnumId errorEnum; @@ -27,14 +24,13 @@ public class AnltAccLoad implements IValidationRule validate(ImdgValidationContext context) { - //если захотим где-то еще использовать, нужно сделать Registry implements WithCurrency Registry rgs = context.getStoredObject(Stored.PresentById); Imdg accImdg = context.obtainMap(IMDGDistributedNames.Map_Account, SpcexObjectBase.class); ImdgPredicateBuilder pb = accImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.equals("companyId", Sender.One.getId()), - pb.equals("accountType", AccountType.Anlt.getKey()), - pb.equals("currency", rgs.getSecuritySymbol()) + pb.equals("companyId", Sender.One.getId()), + pb.equals("accountType", AccountType.Anlt.getKey()), + pb.equals("currency", rgs.getSecuritySymbol()) ); Object anltAcc = accImdg.getSingleObjectByPredicate(prdct); if (anltAcc == null) { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/ExecutionDepositValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/ExecutionDepositValidationRule.java index b4d158b88..74820ef0c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/ExecutionDepositValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/ExecutionDepositValidationRule.java @@ -34,17 +34,7 @@ public enum ExecutionDepositValidationRule implements IValidationRule validate(ImdgValidationContext context) { ExecutionDeposit validatedObject = context.getValidatedObject(); -// todo CLS-275 if (validatedObject.getAccountId() == null) { - return of(ClearingErrorInternal.AccountNotActive); -// } -// Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); -// Relation relation = context.getStoredObject(ClrngValidationStored.relation); -// Account account = accountImdg.getSingleObjectByFieldValues( -// Map.of("id", validatedObject.getAccountId(), "relationId", relation.getId())); -// if (account == null || !AccountStatus.ACTIVE.equalsByKey(account.getStatus())) { -// return of(ClearingErrorInternal.AccountNotActive); -// } -// return empty(); + return of(ClearingErrorInternal.AccountNotActive); } }, CompanyIsNotBlocked() { @@ -67,18 +57,7 @@ public enum ExecutionDepositValidationRule implements IValidationRule accountBalanceImdg = context.obtainMap(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); -// todo CLS-275 AccountBalance accountBalance = accountBalanceImdg.getSingleObjectByFieldValues( -// Map.of("accountId", validatedObject.getAccountId(), -// "companyId", validatedObject.getCompanyId())); -// if (accountBalance == null) { - return of(ClearingErrorInternal.FinancialObligationNotSatisfied); -// } - //todo ABS -// todo CLS-275 if (validatedObject.getFirstLegAmount().compareTo(accountBalance.getFreeBalanceAmount()) > 0) { -// return of(ClearingErrorInternal.FinancialObligationNotSatisfied); -// } -// return empty(); + return of(ClearingErrorInternal.FinancialObligationNotSatisfied); } }; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/IdentificationFundsValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/IdentificationFundsValidationRule.java index 9698f8b6b..3be62dedb 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/IdentificationFundsValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/IdentificationFundsValidationRule.java @@ -94,7 +94,7 @@ public enum IdentificationFundsValidationRule implements IValidationRule validate(ImdgValidationContext context) { Registry validatedObject = context.getValidatedObject(); -// Supplier sectionFind = () -> { -// Imdg sessionImdg = context.obtainMap(IMDGDistributedNames.Map_Session, Session.class); -// Imdg sectionDictionaryImdg = context.obtainMap(IMDGDistributedNames.Map_SectionDictionary, SectionDictionary.class); -// Session session = sessionImdg.getSingleObjectByID(validatedObject.getSessionId()); -// if (session == null) { -// return "null"; -// } else { -// SectionDictionary section = sectionDictionaryImdg.getFirstObjectBySQL("code ='" + session.getSection() + "'"); -// if (section == null) { -// return "null"; -// } else { -// return section.getName(); -// } -// } -// }; if (validatedObject.getCompanyId() == null) { return of(ClearingError.ClearingUnavailableForCompany, validatedObject.getSection()); } @@ -48,8 +33,8 @@ public enum RegistryStep3ValidationRule implements IValidationRule Где %s = категории И -// Проверить, что найденного регистра DM*X: registry.status!=OK, иначе ошибка: 5425 - "Запрещена идентификация средства по рассчитанным обязательствам". -// Создать/добавить в баланс DM-X на базе TM-T -// 1.1.2 Если регистр OM-T: -// Проверить, что у registry.companyId существует категория V, иначе ошибка: 5420 - "Доступ к клирингу на «%s» не найден для компании %s."/> Где %s = категории В -// Проверить, что найденного регистра DM*T: registry.status!=OK, иначе ошибка: 5425 - "Запрещена идентификация средства по рассчитанным обязательствам". -// Создать/добавить в баланс DM-T на базе OM-T -//1.2 Проверить, баланс в запросе -// Баланс должен быть положительный public enum ReturnDepositValidationRule implements IValidationRule> { RgsWronCodeCheck() { @Override public Optional validate(ImdgValidationContext context) { Registry rgs = context.getStoredObject(Stored.PresentById); - if (!equalsByCode(RegistryTradingParams.TM_T, rgs)) { //!equalsByCode(RegistryTradingParams.OM_T, rgs) + if (!equalsByCode(RegistryTradingParams.TM_T, rgs)) { return of(ClearingError.RgsWrongCode, "{}.id={}", rgs.getRegistryCode(), rgs.getId()); } return empty(); @@ -54,12 +42,12 @@ public enum ReturnDepositValidationRule implements IValidationRule ctgImdg = context.obtainMap(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); Collection category = ctgImdg.getCollectionObjectsBySQL( - "companyId = %d".formatted(rgs.getCompanyId())); + "companyId = %d".formatted(rgs.getCompanyId())); Optional ctgr = category.stream() - .map(c -> IEnumKey.getEnumByKey(ClearingCategory.class, c.getClearingMemberCategory())) - .filter(c -> ClearingCategory.V.equals(c) || ClearingCategory.I.equals(c)) - .findFirst(); + .map(c -> IEnumKey.getEnumByKey(ClearingCategory.class, c.getClearingMemberCategory())) + .filter(c -> ClearingCategory.V.equals(c) || ClearingCategory.I.equals(c)) + .findFirst(); if (ctgr.isEmpty()) { return of(ClearingError.CategoryNotFound, "I/V", rgs.getCompanyId()); @@ -68,17 +56,18 @@ public enum ReturnDepositValidationRule implements IValidationRule rgsImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class); ImdgPredicateBuilder pb = rgsImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.equals("groupId", rgs.getGroupId()), - pb.equals("contract", rgs.getContract()) + pb.equals("groupId", rgs.getGroupId()), + pb.equals("contract", rgs.getContract()) ); Collection group = rgsImdg.getCollectionObjectsByPredicate(prdct); Optional om_t = group.stream() - .filter(r -> r.getSettlementDate() != null) - .filter(r -> r.getValueDate() != null) - .filter(r -> r.getSettlementDate().isAfter(r.getValueDate())) - .filter(r -> equalsByCode(RegistryTradingParams.OM_T, r)) - .findFirst(); - if (om_t.isEmpty()) return of(ClearingError.RecordNotFound, "OM*T.groupId=%d".formatted(rgs.getGroupId())); + .filter(r -> r.getSettlementDate() != null) + .filter(r -> r.getValueDate() != null) + .filter(r -> r.getSettlementDate().isAfter(r.getValueDate())) + .filter(r -> equalsByCode(RegistryTradingParams.OM_T, r)) + .findFirst(); + if (om_t.isEmpty()) + return of(ClearingError.RecordNotFound, "OM*T.groupId=%d".formatted(rgs.getGroupId())); context.storeObject(ValidationStored.ReturnDepositOm_t, om_t.get()); } return empty(); @@ -113,11 +102,11 @@ public enum ReturnDepositValidationRule implements IValidationRule> { - // 2.1. Найти в security запись, у которой security.securitySymbol=sTrades.secCode. - // Если такой записи нет, записать в лог ошибку (5416) "Инструмент %s не найден". SecurityPresentFond() { @Override public Optional validate(ImdgValidationContext context) { @@ -32,10 +30,10 @@ public enum STradesValidationRule implements IValidationRule slctr = new SecuritySelector<>( - context.obtainMap(IMDGDistributedNames.Map_FixedIncomeSecurity, Security.class), - context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class), - context.obtainMap(IMDGDistributedNames.Map_EquitySecurity, Security.class), - context.obtainMap(IMDGDistributedNames.Map_CurrencyPairSecurity, Security.class) + context.obtainMap(IMDGDistributedNames.Map_FixedIncomeSecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_EquitySecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_CurrencyPairSecurity, Security.class) ); Security security = slctr.selectSecurityBySymbol(validatedObject.getSecCode().trim()); if (security == null) { @@ -73,17 +71,12 @@ public enum STradesValidationRule implements IValidationRule slctr = new SecuritySelector<>( - context.obtainMap(IMDGDistributedNames.Map_FixedIncomeSecurity, Security.class), - context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class), - context.obtainMap(IMDGDistributedNames.Map_EquitySecurity, Security.class), - context.obtainMap(IMDGDistributedNames.Map_CurrencyPairSecurity, Security.class) + context.obtainMap(IMDGDistributedNames.Map_FixedIncomeSecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_MoneyMarketSecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_EquitySecurity, Security.class), + context.obtainMap(IMDGDistributedNames.Map_CurrencyPairSecurity, Security.class) ); Security security = slctr.selectSecurityBySymbol(secCode); - /* - Imdg securityImdg = context.obtainMap(IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class); - String secCode = validatedObject.getSecCode(); - Security security = securityImdg.getFirstObjectByFieldValues(Map.of("securitySymbol", secCode)); - */ if (security == null) { return of(ClearingError.SecurityNotFound, secCode); @@ -92,8 +85,6 @@ public enum STradesValidationRule implements IValidationRule validate(ImdgValidationContext context) { @@ -127,9 +118,6 @@ public enum STradesValidationRule implements IValidationRule validate(ImdgValidationContext context) { @@ -137,20 +125,17 @@ public enum STradesValidationRule implements IValidationRule registryImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); TradingClearingRegistry tcRegister = registryImdg.getFirstObjectByFieldValues( - Map.of("code", validatedObject.getAccount().trim(), - "companyId", ((Company) context.getStoredObject(ValidationStored.STradesCompany)).getId() - )); + Map.of("code", validatedObject.getAccount().trim(), + "companyId", ((Company) context.getStoredObject(ValidationStored.STradesCompany)).getId() + )); if (tcRegister == null) { return of(ClearingError.TradingClearingRegistryNotFound, "", validatedObject.getAccount()); } - // 2.4. Проверить, что найденный торгово-клиринговый регистр в активном состоянии: - // tradingClearingRegistry.status≠BLKD/SSPD/CLOS (см. справочник serviceStatus). - // Иначе записать в лог ошибку (5419) "Торгово-клиринговый регистр %s неактивен". ServiceStatus status = IEnumKey.getEnumByKey(ServiceStatus.class, tcRegister.getStatus()); if (IEnumKey.contains(status, ServiceStatus.Blocked, ServiceStatus.Suspended, ServiceStatus.Closed)) { return of(ClearingError.TradingClearingRegistryNotActive, validatedObject.getAccount()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java index 49fe1010b..a2c0da90a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf06NewValidationRule.java @@ -65,8 +65,6 @@ public enum Sdf06NewValidationRule implements IValidationRule validate(ImdgValidationContext context) { @@ -77,13 +75,13 @@ public enum Sdf06NewValidationRule implements IValidationRule accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); ImdgPredicateBuilder pb = accountImdg.predicateBuilder(); Account account = accountImdg.getFirstObjectByPredicate( - pb.and( - pb.equals("account", sdf06.getAccount()), - pb.or( - pb.equals("accountType", AccountType.Clrn.getKey()), - pb.equals("accountType", AccountType.Anlt.getKey()) - ) + pb.and( + pb.equals("account", sdf06.getAccount()), + pb.or( + pb.equals("accountType", AccountType.Clrn.getKey()), + pb.equals("accountType", AccountType.Anlt.getKey()) ) + ) ); if (account == null) { return of(ClearingError.AccountNotFoundB, sdf06.getAccount()); @@ -172,11 +170,10 @@ public enum Sdf06NewValidationRule implements IValidationRule tcrListImdg; tcrImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); tcrListImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class); - //если направление in то ТКР необязателен Function, Optional> err = msg -> { if (dir.equals(InOutDirection.in)) { log.debug("TCR not found {}, direction {}, ok", - msg.map(Object::toString).orElse(null), dir); + msg.map(Object::toString).orElse(null), dir); return Optional.empty(); } else { return msg; @@ -198,10 +195,10 @@ public enum Sdf06NewValidationRule implements IValidationRule")); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java index a9124eb4b..3f037530f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf08NewValidationRule.java @@ -19,7 +19,7 @@ import java.util.Map; import java.util.Optional; public enum Sdf08NewValidationRule implements IValidationRule> { - @Deprecated // unused, см. тз по поиску компаний "III - Изменение statement по sDf08" 1. + @Deprecated CompanyPresent() { @Override public Optional validate(ImdgValidationContext context) { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf10ValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf10ValidationRule.java index ce90eeb0b..adb511032 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf10ValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/Sdf10ValidationRule.java @@ -75,25 +75,8 @@ public enum Sdf10ValidationRule implements IValidationRule tcrImdg; tcrImdg = context.obtainMap(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); -// if (AccountType.Anlt.getKey().equals(account.getAccountType())) { -// log.debug("account.id={} is ANLT", account.getId()); -// if (TextUtil.isEmpty(sdf10.getSpec())) { -// return of(ClearingError.TCRegistryNotFound, ""); -// } -// Imdg companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); -// Imdg accountImdg = context.obtainMap(IMDGDistributedNames.Map_Account, Account.class); -// AnltSearcher anltSearcher = new AnltSearcher(tcrImdg, companyImdg, accountImdg); -// AnltSearcher.AnltSearch anltSrch = anltSearcher.loadByAnlt(sdf10.getSpec()); -// if (!anltSrch.isFound()) { -// log.debug("account.id={} ANLT couldn't find account by spec {}", account.getId(), sdf10.getSpec()); -// return of(ClearingError.TCRegistryNotFound, sdf10.getSpec()); -// } else { -// account = anltSrch.getAccount(); -// log.debug("account.id={} ANLT found account.id={} by spec {}", account.getId(), account.getId(), sdf10.getSpec()); -// } -// } TradingClearingRegistry tcr = tcrImdg.getFirstObjectByFieldValues( - Map.of("depoAccountId", account.getId()) + Map.of("depoAccountId", account.getId()) ); if (tcr == null) { return of(ClearingError.TCRegistryNotFound, ""); @@ -106,7 +89,7 @@ public enum Sdf10ValidationRule implements IValidationRule validate(ImdgValidationContext context) { SDf10 sdf10 = context.getValidatedObject(); - if (BigDecimalUtil.safeBD(new BigDecimal(sdf10.getQuantity())).compareTo(BigDecimal.ZERO) >= 0) { //fixme safe new BigDecimal + if (BigDecimalUtil.safeBD(new BigDecimal(sdf10.getQuantity())).compareTo(BigDecimal.ZERO) >= 0) { return empty(); } Company company = context.getStoredObject(ValidationStored.CompanyByTradingCode); @@ -135,7 +118,7 @@ public enum Sdf10ValidationRule implements IValidationRule BigDecimalUtil.safeBD(rgs.getBalance())) .filter(balance -> balance.compareTo(BigDecimal.ZERO) > 0) .reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal stmtAmount = BigDecimalUtil.safeBD(new BigDecimal(sdf10.getQuantity())); //fixme safe new BigDecimal + BigDecimal stmtAmount = BigDecimalUtil.safeBD(new BigDecimal(sdf10.getQuantity())); if (asfBalance.subtract(dstBalance).compareTo(stmtAmount.abs()) < 0) { return of(ClearingError.BalanceInsufficient); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/SplitDepositRequestValidationRule.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/SplitDepositRequestValidationRule.java index aca9efe29..c8486fb45 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/SplitDepositRequestValidationRule.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/validation/SplitDepositRequestValidationRule.java @@ -43,22 +43,20 @@ public enum SplitDepositRequestValidationRule implements IValidationRule registryImdg = context.obtainMap(IMDGDistributedNames.Map_Registry, Registry.class); - - // Поиск регистра ImdgPredicateBuilder prdBldr = registryImdg.predicateBuilder(); ImdgPredicate query = prdBldr.and( - prdBldr.or(prdBldr.equals("registryStatus", RegistryStatus.PROC.getKey()), prdBldr.equals("registryStatus", RegistryStatus.MNG.getKey())), - prdBldr.or(prdBldr.equals("registryDesignation", RegistryDesignation.O.getKey()), prdBldr.equals("registryDesignation", RegistryDesignation.T.getKey())), - prdBldr.equals("registryUnit", RegistryUnit.T.getKey()), - prdBldr.equals("contract", request.getContract()) + prdBldr.or(prdBldr.equals("registryStatus", RegistryStatus.PROC.getKey()), prdBldr.equals("registryStatus", RegistryStatus.MNG.getKey())), + prdBldr.or(prdBldr.equals("registryDesignation", RegistryDesignation.O.getKey()), prdBldr.equals("registryDesignation", RegistryDesignation.T.getKey())), + prdBldr.equals("registryUnit", RegistryUnit.T.getKey()), + prdBldr.equals("contract", request.getContract()) ); Collection registrys = registryImdg.getCollectionObjectsByPredicate(query); registrys = registrys.stream() - .filter(r -> r.getValueDate() != null && r.getSettlementDate() != null && r.getValueDate().isBefore(r.getSettlementDate())) - .collect(Collectors.toList()); + .filter(r -> r.getValueDate() != null && r.getSettlementDate() != null && r.getValueDate().isBefore(r.getSettlementDate())) + .collect(Collectors.toList()); Registry registryO = registrys.stream() - .filter(r -> RegistryDesignation.O.equalsByKey(r.getRegistryDesignation())) - .findAny().orElse(null); + .filter(r -> RegistryDesignation.O.equalsByKey(r.getRegistryDesignation())) + .findAny().orElse(null); log.trace("Found registry {}. Crossvalidate for {}", registrys, registryO); if (registryO == null) { @@ -66,17 +64,15 @@ public enum SplitDepositRequestValidationRule implements IValidationRule= refundDate + if (registryO.getRefundDate().isBefore(request.getRefundDate())) { log.trace("Registry[{}].RefundDate={} but request RefundDate={}", - registryO.getId(), registryO.getRefundDate(), request.getRefundDate()); + registryO.getId(), registryO.getRefundDate(), request.getRefundDate()); return Optional.of(new EnumMessage(ClearingError.WrongFieldValue, "RefundDate")); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/AbstractSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/AbstractSession.java index 7f06880fb..ae8f646b8 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/AbstractSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/AbstractSession.java @@ -105,11 +105,6 @@ public abstract class AbstractSession { protected void continueRunning(TaskType t) { synchronized (this.currStage) { - //if (WorkflowStatus.Blocked.equalsByKey(this.currSession.getWorkflowStatus())) { - // log.error("cannot run task {}.{}. session.id={} workflowStatus is {}", - // t, t.getKey(), this.currSession.getId(), this.currSession.getWorkflowStatus()); - // throw new StageException(); - //} this.currStage.set(t); this.currSession.setSessionStatus(t.getKey()); this.currSession.setUpdated(Instant.now()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/CurrencySession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/CurrencySession.java index 47485eab1..5c4b23e59 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/CurrencySession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/CurrencySession.java @@ -138,8 +138,8 @@ public class CurrencySession extends AbstractSession implements InitializingBean return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -156,12 +156,7 @@ public class CurrencySession extends AbstractSession implements InitializingBean finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -172,38 +167,31 @@ public class CurrencySession extends AbstractSession implements InitializingBean throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } - //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setSessionId(currSession.getId()); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } - //stage 7 StageResult paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); @@ -217,35 +205,31 @@ public class CurrencySession extends AbstractSession implements InitializingBean } else { this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().getPaymentInstructions().size(), - this.afterPaymentsSdf4And13Monitor.allConditions()); + paymentResult.getStageResult().getPaymentInstructions().size(), + this.afterPaymentsSdf4And13Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision { StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); if (!reviseRes.isSuccess()) { this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); log.warn("{} stage error, created monitor for {}", - TaskType.AgainRevise, - afterReviseErrorMonitor.allConditions()); + TaskType.AgainRevise, + afterReviseErrorMonitor.allConditions()); return; } } - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("1"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -254,7 +238,6 @@ public class CurrencySession extends AbstractSession implements InitializingBean endSession(); } } catch (StageException e) { - //already logged } } @@ -272,8 +255,6 @@ public class CurrencySession extends AbstractSession implements InitializingBean newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java index cd7f7e05f..59bb8535d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/FinalMkrSession.java @@ -95,16 +95,15 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean @Override public void afterPropertiesSet() throws Exception { dealsPrepare.searchForExecutions(ExecutionType.ExecutionDeposit); - //fixme спросить у Кости нужны ли эти поправки ImdgPredicateBuilder rgsPrctBuilder = registryImdg.predicateBuilder(); inclusionObligations.addRegistryCondition( - rgsPrctBuilder.and( - rgsPrctBuilder.or( - rgsPrctBuilder.equals("registryStatus", RegistryStatus.PROC.getKey()), - rgsPrctBuilder.equals("registryStatus", RegistryStatus.MNG.getKey()) - ), - rgsPrctBuilder.lessEqual("valueDate", LocalDate.now()) - ) + rgsPrctBuilder.and( + rgsPrctBuilder.or( + rgsPrctBuilder.equals("registryStatus", RegistryStatus.PROC.getKey()), + rgsPrctBuilder.equals("registryStatus", RegistryStatus.MNG.getKey()) + ), + rgsPrctBuilder.lessEqual("valueDate", LocalDate.now()) + ) ); inclusionObligations.setSessionType(sessionType()); inspectionObligationsReturn.setSessionType(sessionType()); @@ -138,8 +137,8 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -156,12 +155,7 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -172,25 +166,20 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } - //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); @@ -198,19 +187,16 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligationsReturn); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } - //stage 7 StageResult> returnsPayment; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); - //stage 7 returnsPayment = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionReturn); } @@ -219,7 +205,6 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); payload.setPaymentInstructionReturns(returnsPayment.getStageResult()); - //stage 7 paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDeals); } if (paymentResult.getStageResult().getPaymentInstructions().isEmpty()) { @@ -228,11 +213,10 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean } else { this.afterPaymentsSdf4Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().getPaymentInstructions().size(), - this.afterPaymentsSdf4Monitor.allConditions()); + paymentResult.getStageResult().getPaymentInstructions().size(), + this.afterPaymentsSdf4Monitor.allConditions()); } } catch (StageException e) { - //already logged } } @@ -243,25 +227,12 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean public void finishPart() { try { - //stage 9 continue revision - //{ - // StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); - // if (!reviseRes.isSuccess()) { - // this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); - // log.warn("{} stage error, created monitor for {}", - // TaskType.AgainRevise, - // afterReviseErrorMonitor.allConditions()); - // return; - // } - //} - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("3"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -270,7 +241,6 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean endSession(); } } catch (StageException e) { - //already logged } } @@ -288,8 +258,6 @@ public class FinalMkrSession extends AbstractSession implements InitializingBean newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ISessionStage.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ISessionStage.java index 232e4c6dd..da96bb48c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ISessionStage.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ISessionStage.java @@ -2,5 +2,4 @@ package ru.spcex.clearing.session.stage; public interface ISessionStage { StageResult submit(Task task); -// StageStatus getInitStatus(); пока не нужно } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java index c376df3eb..0b665f59e 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/IntermediateMkrSession.java @@ -90,16 +90,15 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ @Override public void afterPropertiesSet() throws Exception { dealsPrepare.searchForExecutions(ExecutionType.ExecutionDeposit); - //fixme спросить у Кости нужны ли эти поправки ImdgPredicateBuilder rgsPrctBuilder = registryImdg.predicateBuilder(); inclusionObligations.addRegistryCondition( - rgsPrctBuilder.and( - rgsPrctBuilder.or( - rgsPrctBuilder.equals("registryStatus", RegistryStatus.PROC.getKey()), - rgsPrctBuilder.equals("registryStatus", RegistryStatus.MNG.getKey()) - ), - rgsPrctBuilder.equals("valueDate", LocalDate.now()) - ) + rgsPrctBuilder.and( + rgsPrctBuilder.or( + rgsPrctBuilder.equals("registryStatus", RegistryStatus.PROC.getKey()), + rgsPrctBuilder.equals("registryStatus", RegistryStatus.MNG.getKey()) + ), + rgsPrctBuilder.equals("valueDate", LocalDate.now()) + ) ); inclusionObligations.setSessionType(sessionType()); inspectionObligations.setSessionType(sessionType()); @@ -132,8 +131,8 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -150,12 +149,7 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -166,44 +160,36 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } - //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); companyIdPayload.setSessionId(currSession.getId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } - //stage 7 StageResult paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); payload.setPaymentInstructionReturns(Collections.emptyList()); - //stage 7 paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstructionDeals); } if (paymentResult.getStageResult().getPaymentInstructions().isEmpty()) { @@ -212,35 +198,31 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ } else { this.afterPaymentsSdf4Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().getPaymentInstructions().size(), - this.afterPaymentsSdf4Monitor.allConditions()); + paymentResult.getStageResult().getPaymentInstructions().size(), + this.afterPaymentsSdf4Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision { StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); if (!reviseRes.isSuccess()) { this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); log.warn("{} stage error, created monitor for {}", - TaskType.AgainRevise, - afterReviseErrorMonitor.allConditions()); + TaskType.AgainRevise, + afterReviseErrorMonitor.allConditions()); return; } } - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("4"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -249,7 +231,6 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ endSession(); } } catch (StageException e) { - //already logged } } @@ -272,8 +253,6 @@ public class IntermediateMkrSession extends AbstractSession implements Initializ newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java index fe13068f7..732c47700 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionB0Session.java @@ -42,8 +42,6 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali private final InspectionObligations inspectionObligations; private final FormingRegistersOnOS formingRegistersOnOS; private final FormingPaymentInstructionSecurities formingPaymentInstruction; - //TODO CLRNWORM - //private final FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr; private final UnlockResources unlockResources; private final FinishingSession finishingSession; private final EndStageNotification endStageNotification; @@ -57,21 +55,20 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali public PrimaryAuctionB0Session( - ImdgProvider imdgProvider, - BalanceRevise balanceRevise, - DealsPrepare dealsPrepare, - RequirementsAndObligationCreation requirementsAndObligationCreation, - ObligationAdmission obligationsAdmission, - InclusionObligations inclusionObligations, - FormingRegistersOnOS formingRegistersOnOS, - FormingPaymentInstructionSecurities formingPaymentInstruction, -// FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr, - UnlockResources unlockResources, - FinishingSession finishingSession, - EndStageNotification endStageNotification, - IMessageResolver messageResolver, - InspectionObligations inspectionObligations, - @Qualifier("marketCodesForBn") Supplier> marketCodes) { + ImdgProvider imdgProvider, + BalanceRevise balanceRevise, + DealsPrepare dealsPrepare, + RequirementsAndObligationCreation requirementsAndObligationCreation, + ObligationAdmission obligationsAdmission, + InclusionObligations inclusionObligations, + FormingRegistersOnOS formingRegistersOnOS, + FormingPaymentInstructionSecurities formingPaymentInstruction, + UnlockResources unlockResources, + FinishingSession finishingSession, + EndStageNotification endStageNotification, + IMessageResolver messageResolver, + InspectionObligations inspectionObligations, + @Qualifier("marketCodesForBn") Supplier> marketCodes) { super(imdgProvider, messageResolver); this.balanceRevise = balanceRevise; this.dealsPrepare = dealsPrepare; @@ -85,7 +82,6 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali this.endStageNotification = endStageNotification; this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.inspectionObligations = inspectionObligations; -// this.formingPaymentInstructionDealsFinalMkr = formingPaymentInstructionDealsFinalMkr; this.marketCodes = marketCodes; } @@ -124,8 +120,8 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -142,12 +138,7 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -158,42 +149,35 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } - //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); companyIdPayload.setSessionId(currSession.getId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } StageResult> paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); - //stage 7 paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstruction); } if (paymentResult.getStageResult().isEmpty()) { @@ -202,35 +186,31 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali } else { this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().size(), - this.afterPaymentsSdf4And13Monitor.allConditions()); + paymentResult.getStageResult().size(), + this.afterPaymentsSdf4And13Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision { StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); if (!reviseRes.isSuccess()) { this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); log.warn("{} stage error, created monitor for {}", - TaskType.AgainRevise, - afterReviseErrorMonitor.allConditions()); + TaskType.AgainRevise, + afterReviseErrorMonitor.allConditions()); return; } } - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("0"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -239,7 +219,6 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali endSession(); } } catch (StageException e) { - //already logged } } @@ -262,7 +241,6 @@ public class PrimaryAuctionB0Session extends AbstractSession implements Initiali newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java index 58acc7656..1e68d490a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionBnSession.java @@ -42,8 +42,6 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali private final InspectionObligations inspectionObligations; private final FormingRegistersOnOS formingRegistersOnOS; private final FormingPaymentInstructionSecurities formingPaymentInstruction; -// private final FormingPaymentInstruction formingPaymentInstruction; -// private final FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr; private final UnlockResources unlockResources; private final FinishingSession finishingSession; private final EndStageNotification endStageNotification; @@ -57,21 +55,19 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali public PrimaryAuctionBnSession( - ImdgProvider imdgProvider, - BalanceRevise balanceRevise, - DealsPrepare dealsPrepare, - RequirementsAndObligationCreation requirementsAndObligationCreation, - ObligationAdmission obligationsAdmission, - InclusionObligations inclusionObligations, - FormingRegistersOnOS formingRegistersOnOS, -// FormingPaymentInstruction formingPaymentInstruction, -// FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr, - FormingPaymentInstructionSecurities formingPaymentInstruction, UnlockResources unlockResources, - FinishingSession finishingSession, - EndStageNotification endStageNotification, - IMessageResolver messageResolver, - InspectionObligations inspectionObligations, - @Qualifier("marketCodesForBn") Supplier> marketCodes) { + ImdgProvider imdgProvider, + BalanceRevise balanceRevise, + DealsPrepare dealsPrepare, + RequirementsAndObligationCreation requirementsAndObligationCreation, + ObligationAdmission obligationsAdmission, + InclusionObligations inclusionObligations, + FormingRegistersOnOS formingRegistersOnOS, + FormingPaymentInstructionSecurities formingPaymentInstruction, UnlockResources unlockResources, + FinishingSession finishingSession, + EndStageNotification endStageNotification, + IMessageResolver messageResolver, + InspectionObligations inspectionObligations, + @Qualifier("marketCodesForBn") Supplier> marketCodes) { super(imdgProvider, messageResolver); this.balanceRevise = balanceRevise; this.dealsPrepare = dealsPrepare; @@ -80,13 +76,11 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali this.inclusionObligations = inclusionObligations; this.formingRegistersOnOS = formingRegistersOnOS; this.formingPaymentInstruction = formingPaymentInstruction; -// this.formingPaymentInstruction = formingPaymentInstruction; this.unlockResources = unlockResources; this.finishingSession = finishingSession; this.endStageNotification = endStageNotification; this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.inspectionObligations = inspectionObligations; -// this.formingPaymentInstructionDealsFinalMkr = formingPaymentInstructionDealsFinalMkr; this.marketCodes = marketCodes; } @@ -125,8 +119,8 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -143,12 +137,7 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -159,43 +148,35 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } - //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); companyIdPayload.setSessionId(currSession.getId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } - //stage 7 StageResult> paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); - //stage 7 paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstruction); } if (paymentResult.getStageResult().isEmpty()) { @@ -204,35 +185,21 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali } else { this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().size(), - this.afterPaymentsSdf4And13Monitor.allConditions()); + paymentResult.getStageResult().size(), + this.afterPaymentsSdf4And13Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision - //{ - // StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); - // if (!reviseRes.isSuccess()) { - // this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); - // log.warn("{} stage error, created monitor for {}", - // TaskType.AgainRevise, - // afterReviseErrorMonitor.allConditions()); - // return; - // } - //} - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("0"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -241,7 +208,6 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali endSession(); } } catch (StageException e) { - //already logged } } @@ -264,8 +230,6 @@ public class PrimaryAuctionBnSession extends AbstractSession implements Initiali newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java index 2cb7e5e4c..3de18da9c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/PrimaryAuctionT0Session.java @@ -42,8 +42,6 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali private final InspectionObligations inspectionObligations; private final FormingRegistersOnOS formingRegistersOnOS; private final FormingPaymentInstructionSecurities formingPaymentInstruction; -// private final FormingPaymentInstruction formingPaymentInstruction; -// private final FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr; private final UnlockResources unlockResources; private final FinishingSession finishingSession; private final EndStageNotification endStageNotification; @@ -56,22 +54,20 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali private SessionMonitor afterReviseErrorMonitor; public PrimaryAuctionT0Session( - ImdgProvider imdgProvider, - BalanceRevise balanceRevise, - DealsPrepare dealsPrepare, - RequirementsAndObligationCreation requirementsAndObligationCreation, - ObligationAdmission obligationsAdmission, - InclusionObligations inclusionObligations, - FormingRegistersOnOS formingRegistersOnOS, - FormingPaymentInstructionSecurities formingPaymentInstruction, -// FormingPaymentInstruction formingPaymentInstruction, -// FormingPaymentInstructionDealsFinalMkr formingPaymentInstructionDealsFinalMkr, - UnlockResources unlockResources, - FinishingSession finishingSession, - EndStageNotification endStageNotification, - IMessageResolver messageResolver, - InspectionObligations inspectionObligations, - @Qualifier("marketCodesForT0Primary") Supplier> marketCodes) { + ImdgProvider imdgProvider, + BalanceRevise balanceRevise, + DealsPrepare dealsPrepare, + RequirementsAndObligationCreation requirementsAndObligationCreation, + ObligationAdmission obligationsAdmission, + InclusionObligations inclusionObligations, + FormingRegistersOnOS formingRegistersOnOS, + FormingPaymentInstructionSecurities formingPaymentInstruction, + UnlockResources unlockResources, + FinishingSession finishingSession, + EndStageNotification endStageNotification, + IMessageResolver messageResolver, + InspectionObligations inspectionObligations, + @Qualifier("marketCodesForT0Primary") Supplier> marketCodes) { super(imdgProvider, messageResolver); this.balanceRevise = balanceRevise; this.dealsPrepare = dealsPrepare; @@ -80,13 +76,11 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali this.inclusionObligations = inclusionObligations; this.formingRegistersOnOS = formingRegistersOnOS; this.formingPaymentInstruction = formingPaymentInstruction; -// this.formingPaymentInstruction = formingPaymentInstruction; this.unlockResources = unlockResources; this.finishingSession = finishingSession; this.endStageNotification = endStageNotification; this.executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); this.inspectionObligations = inspectionObligations; -// this.formingPaymentInstructionDealsFinalMkr = formingPaymentInstructionDealsFinalMkr; this.marketCodes = marketCodes; } @@ -125,8 +119,8 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -143,12 +137,7 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -159,42 +148,35 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } - //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); companyIdPayload.setSessionId(currSession.getId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } StageResult> paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); - //stage 7 paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstruction); } if (paymentResult.getStageResult().isEmpty()) { @@ -203,35 +185,31 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali } else { this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().size(), - this.afterPaymentsSdf4And13Monitor.allConditions()); + paymentResult.getStageResult().size(), + this.afterPaymentsSdf4And13Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision { StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); if (!reviseRes.isSuccess()) { this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); log.warn("{} stage error, created monitor for {}", - TaskType.AgainRevise, - afterReviseErrorMonitor.allConditions()); + TaskType.AgainRevise, + afterReviseErrorMonitor.allConditions()); return; } } - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("0"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -240,7 +218,6 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali endSession(); } } catch (StageException e) { - //already logged } } @@ -262,7 +239,6 @@ public class PrimaryAuctionT0Session extends AbstractSession implements Initiali newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java index 28118a16b..2d0c01d7e 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/ReturnDepositSession.java @@ -116,8 +116,8 @@ public class ReturnDepositSession extends AbstractSession implements Initializin return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -134,13 +134,7 @@ public class ReturnDepositSession extends AbstractSession implements Initializin finishPart(); return; } - - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -151,13 +145,11 @@ public class ReturnDepositSession extends AbstractSession implements Initializin throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); @@ -165,17 +157,15 @@ public class ReturnDepositSession extends AbstractSession implements Initializin runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligationsDepositReturn); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } StageResult> paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); payload.setSessionId(currSession.getId()); - //stage 7 paymentResult = runStage(TaskType.FormingPaymentInstruction, payload, formingPaymentInstruction); } if (paymentResult == null || paymentResult.getStageResult().isEmpty()) { @@ -184,35 +174,21 @@ public class ReturnDepositSession extends AbstractSession implements Initializin } else { this.afterPaymentsSdf4Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().size(), - this.afterPaymentsSdf4Monitor.allConditions()); + paymentResult.getStageResult().size(), + this.afterPaymentsSdf4Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision - //{ - // StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); - // if (!reviseRes.isSuccess()) { - // this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); - // log.warn("{} stage error, created monitor for {}", - // TaskType.AgainRevise, - // afterReviseErrorMonitor.allConditions()); - // return; - // } - //} - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("4"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -221,7 +197,6 @@ public class ReturnDepositSession extends AbstractSession implements Initializin endSession(); } } catch (StageException e) { - //already logged } } @@ -244,8 +219,6 @@ public class ReturnDepositSession extends AbstractSession implements Initializin newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SecondaryAuctionT0Session.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SecondaryAuctionT0Session.java index 29bb87216..f4facc88f 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SecondaryAuctionT0Session.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SecondaryAuctionT0Session.java @@ -29,7 +29,6 @@ import java.util.List; import java.util.function.Supplier; @Service -//todo эта сессия public class SecondaryAuctionT0Session extends AbstractSession implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final BalanceRevise balanceRevise; @@ -119,8 +118,8 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -137,12 +136,7 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -153,38 +147,31 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult> dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); payload.setSessionId(currSession.getId()); dealsPreparationResult = runStage(TaskType.DealsPrepare, payload, dealsPrepare); } - //stage 2 runStage(TaskType.RequirementsAndObligationsCreate, dealsPreparationResult.getStageResult(), requirementsAndObligationCreation); - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); inclusionToPoolPayload.setSessionId(currSession.getId()); runStage(TaskType.InclusionToPool, inclusionToPoolPayload, inclusionObligations); } - //stage 5 { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setSessionId(currSession.getId()); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } - //stage 7 StageResult paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); @@ -198,35 +185,31 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia } else { this.afterPaymentsSdf4And13Monitor = SessionMonitorFactory.waitStep7(section()); log.info("created {} PaymentInstructions, waiting for {}", - paymentResult.getStageResult().getPaymentInstructions().size(), - this.afterPaymentsSdf4And13Monitor.allConditions()); + paymentResult.getStageResult().getPaymentInstructions().size(), + this.afterPaymentsSdf4And13Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision { StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); if (!reviseRes.isSuccess()) { this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); log.warn("{} stage error, created monitor for {}", - TaskType.AgainRevise, - afterReviseErrorMonitor.allConditions()); + TaskType.AgainRevise, + afterReviseErrorMonitor.allConditions()); return; } } - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("1"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { EndStageNotificationPayload payload = new EndStageNotificationPayload(); payload.setSection(currSession.getSection()); @@ -235,7 +218,6 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia endSession(); } } catch (StageException e) { - //already logged } } @@ -258,8 +240,6 @@ public class SecondaryAuctionT0Session extends AbstractSession implements Initia newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java index d18415d74..1c8240f09 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionManager.java @@ -63,9 +63,8 @@ public class SessionManager { this.time = time; } - public void defineAndStartSession(BaseRequest r) throws ValidationException { //task sclr section fond sessiontype trdt + public void defineAndStartSession(BaseRequest r) throws ValidationException { LauncherCommandRequest payload = r.getRequestPayload(); -// Long sessionId = commandRequest.getSessionId(); SessionType sessionType = IEnumKey.getEnumByKey(SessionType.class, payload.getSessionType()); Section section = IEnumKey.getEnumByKey(Section.class, payload.getSection()); if (sessionType == null || section == null) { @@ -75,7 +74,6 @@ public class SessionManager { BaseRequest baseRequest = new BaseRequest<>(); AbstractSession session = sessionByType(sessionType); if (session != null) { - //checkActive checkAllowSessionStart(); session.runSession(baseRequest); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionStage.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionStage.java index b01429c24..740feef28 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionStage.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionStage.java @@ -5,5 +5,4 @@ public enum SessionStage { DealsPrepare, ObligationCalculate, ObligationAdmittance, - //... } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionTerminator.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionTerminator.java index ea11f5bda..6aba2f8f4 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionTerminator.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/SessionTerminator.java @@ -145,7 +145,7 @@ public class SessionTerminator { Consumer> nullifier = imdg -> { Collection execs = imdg.getCollectionObjectsBySQL( - "sessionId = " + session.getId() + "sessionId = " + session.getId() ); for (ExecutionCommon exec : execs) { exec.setSessionId(null); @@ -156,8 +156,6 @@ public class SessionTerminator { log.info("updated {} executions with sessionId={}", execs.size(), session.getId()); }; log.debug("session.id={} section {}", session.getId(), session.getSection()); - - // todo check Section.CURR if (Section.FOND.equalsByKey(session.getSection())) { nullifier.accept(upcastImdg(execFondImdg)); } else if (Section.MKR.equalsByKey(session.getSection())) { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java index da90680de..a45b1c555 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/TaskType.java @@ -3,58 +3,22 @@ package ru.spcex.clearing.session.stage; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum TaskType implements IEnumKey { - /** - * step 0/9 - */ StartRevise("CLR0"), ContinueRevise("CLR 0_0"), StartRevisePart1("С0_1"), SDF51("SDF51"), - /** - * step 1 - */ DealsPrepare("CL01"), - /** - * step 2 - */ RequirementsAndObligationsCreate("CL02"), - /** - * step 3 - */ ObligationsAdmission("CL03"), - /** - * step 4 - */ InclusionToPool("CL04"), - /** - * step 5 - */ InspectionObligations("CL05"), - /** - * Step 6: forming Registry on Obligations and Settlement requirements - */ FormingRegistersOnOS("CL06"), - /** - * step 7 - */ FormingPaymentInstruction("CL07"), - /** - * step 8 - */ UnlockResources("CL08"), - /** - * step 0/9 - */ AgainRevise("CL09"), - /** - * Step 10 - */ FinishingSession("CL10"), - /** - * Step 11 - */ EndStageNotification("CL11"); private String key; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java index 33df5af56..1465514c0 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/UnitedSession.java @@ -48,7 +48,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.utils.enumeration.IMessageResolver; @Service -//todo эта сессия public class UnitedSession extends AbstractSession implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final BalanceRevise balanceRevise; @@ -129,7 +128,6 @@ public class UnitedSession extends AbstractSession implements InitializingBean { dealsPrepareFinal.searchForExecutions(ExecutionType.ExecutionDeposit); dealsPrepareFinal.addExecutionDepositCondition(pb.regex("firstLegSettlementCode", "^T0.*$")); } - //1 шаг deals prepare вызываем 3 раза с разными параметрами объединяемых сессий inclusionObligations.setSessionType(sessionType()); inspectionObligationsReturn.setSessionType(sessionType()); inspectionObligations.setSection(section()); @@ -162,8 +160,8 @@ public class UnitedSession extends AbstractSession implements InitializingBean { return; } log.info("session is running, stage {}, monitors: {}", - currStage.get(), - logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); + currStage.get(), + logMonitors(firstReviseMonitor, afterPaymentsSdf4And13Monitor, afterPaymentsReviseMonitor)); if (firstReviseMonitor != null && isMonitorPassed(firstReviseMonitor, req.getRequestPayload())) { firstReviseMonitor = null; firstPart(); @@ -180,12 +178,7 @@ public class UnitedSession extends AbstractSession implements InitializingBean { finishPart(); return; } - //if (afterPaymentsReviseMonitor != null && isMonitorPassed(afterPaymentsReviseMonitor, req.getRequestPayload())) { - // afterPaymentsReviseMonitor = null; - // finishPart(); - //} } catch (StageException e) { - //already logged } } @@ -196,7 +189,6 @@ public class UnitedSession extends AbstractSession implements InitializingBean { throw new StageException(); } runStage(TaskType.StartRevisePart1, currSession.getId(), balanceRevise); - //stage 1 StageResult dealsPreparationResult; { DealsPreparePayload payload = new DealsPreparePayload(); @@ -205,17 +197,12 @@ public class UnitedSession extends AbstractSession implements InitializingBean { dealsPrepareTRDT, dealsPrepareCurrency, dealsPrepareFinal )); } - - //stage 2 { RequirementsAndObligationCreationCompoundPayload p; p = RequirementsAndObligationCreationCompoundPayload.create(dealsPreparationResult.getStageResult()); runStage(TaskType.RequirementsAndObligationsCreate, p, requirementsAndObligationCreation); } - - //stage 3 runStage(TaskType.ObligationsAdmission, currSession.getId(), obligationsAdmission); - //stage 4 { InclusionToPoolPayload inclusionToPoolPayload = new InclusionToPoolPayload(); inclusionToPoolPayload.setSessionType(currSession.getSessionType()); @@ -226,18 +213,13 @@ public class UnitedSession extends AbstractSession implements InitializingBean { InspectionPoolPayload companyIdPayload = new InspectionPoolPayload(); companyIdPayload.setSessionId(currSession.getId()); companyIdPayload.setProcessedCompanyId(currSession.getCompanyId()); - //fixme checks inside the stages - //runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligationsReturn); runStage(TaskType.InspectionObligations, companyIdPayload, inspectionObligations); } - - //stage 6 { FormingRegistersOnOSPayload payload = new FormingRegistersOnOSPayload(); payload.setSessionId(currSession.getId()); - runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); //returns Collection + runStage(TaskType.FormingRegistersOnOS, payload, formingRegistersOnOS); } - //stage 7 StageResult paymentResult = null; { FormingPaymentInstructionPayload payload = new FormingPaymentInstructionPayload(); @@ -254,43 +236,31 @@ public class UnitedSession extends AbstractSession implements InitializingBean { this.afterPaymentsSdf4And13Monitor.allConditions()); } } catch (StageException e) { - //already logged } } public void finishPart() { try { - //stage 9 continue revision { StageResult reviseRes = runStage(TaskType.AgainRevise, currSession.getId(), balanceRevise, false); if (!reviseRes.isSuccess()) { this.afterReviseErrorMonitor = SessionMonitorFactory.waitReviseError(section()); log.warn("{} stage error, created monitor for {}", - TaskType.AgainRevise, - afterReviseErrorMonitor.allConditions()); + TaskType.AgainRevise, + afterReviseErrorMonitor.allConditions()); return; } } - //stage 10 { FinishingSessionPayload payload = new FinishingSessionPayload(); payload.setSessionId(currSession.getId()); payload.setPr("1"); runStage(TaskType.FinishingSession, payload, finishingSession); } - //stage 11 { - //Убрал этот шаг по требованию Насти, 18.06.2024 - //выпадало на строчке EndStageNotification:101 - // throw new IllegalArgumentException("Unsupported section " + section); -// EndStageNotificationPayload payload = new EndStageNotificationPayload(); -// payload.setSection(currSession.getSection()); -// payload.setSessionId(currSession.getId()); -// runStage(TaskType.EndStageNotification, payload, endStageNotification); endSession(); } } catch (StageException e) { - //already logged } } @@ -313,8 +283,6 @@ public class UnitedSession extends AbstractSession implements InitializingBean { newSession.setWorkflowStatus(SessionStatus.ACTV.getKey()); newSession.setClearingDate(LocalDate.now()); newSession.setCreated(Instant.now()); - - //todo companyId/securityId/userId передается из сообщения очереди sessionImdg.insert(newSession); currSession = newSession; log.info("started new session.id={}", this.currSession.getId()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java index 00ef7bc5b..333c7a924 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/BalanceRevise.java @@ -52,7 +52,6 @@ import ru.spcex.platform.utils.time.TimeUtil; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class BalanceRevise implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg statementImdg; @@ -88,12 +87,12 @@ public class BalanceRevise implements ISessionStage { return sendSdfs56(fromTime); } case ContinueRevise -> { - return revise(); // основная сверка + return revise(); } - case StartRevisePart1 -> { // часть 1, часть 2 на стадии 5 (InspectionObligations) - return reviseStage1(); // подготовка к стадии 3 (к AgainRevise) + case StartRevisePart1 -> { + return reviseStage1(); } - case AgainRevise -> { // часть 3 + case AgainRevise -> { return reviseStage3(); } default -> throw new IllegalStateException("unknown task " + task.getTaskType()); @@ -170,15 +169,14 @@ public class BalanceRevise implements ISessionStage { } private StageResult reviseStage3() { - //clnr info depo ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.A__T).build()), - pb.or( - pb.equals("accountType", AccountType.Clrn.getKey()), - pb.equals("accountType", AccountType.Info.getKey()), - pb.equals("accountType", AccountType.Depo.getKey()) - ) + pb.sql(RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.A__T).build()), + pb.or( + pb.equals("accountType", AccountType.Clrn.getKey()), + pb.equals("accountType", AccountType.Info.getKey()), + pb.equals("accountType", AccountType.Depo.getKey()) + ) ); Collection regsAT = registryImdg.getCollectionObjectsByPredicate(prdct); @@ -194,7 +192,7 @@ public class BalanceRevise implements ISessionStage { } if (safeBD(reg.getBalance()).compareTo(safeBD(reg.getPlanBalance())) != 0) { log.info("Revision: registry id={}, companyId={}, balance={}, plannedBalance={}", - reg.getId(), reg.getCompanyId(), reg.getBalance(), reg.getPlanBalance()); + reg.getId(), reg.getCompanyId(), reg.getBalance(), reg.getPlanBalance()); errorRegs++; } } @@ -236,13 +234,13 @@ public class BalanceRevise implements ISessionStage { log.debug("creating sdf51"); SDf51 sDf51 = new SDf51(); Instant now = Instant.now(); - Long numberId = idGenerator.nextId(); // из генератора + Long numberId = idGenerator.nextId(); sDf51.setNumber(numberId.toString()); if (sDf51.getNumber().length() > 10) { log.warn("SDf51 number='{}' too large that 10 symbols", sDf51.getNumber()); } String datetime = String.valueOf(now.toEpochMilli()); - sDf51.setDatetime(datetime); // Дата и время сообщения + sDf51.setDatetime(datetime); sDf51.setGenerationTime(now); sDf51.setGenerationId(numberId); sDf51Imdg.insert(sDf51); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java index 9f688b677..81b50538c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/DealsPrepare.java @@ -67,7 +67,7 @@ public class DealsPrepare implements ISessionStage { log.info("loading deals sessionId: {}, companyId: {}, securityId: {}", sessionId, companyId, securityId); StringBuilder executionDepositSQL = new StringBuilder("sessionId = null"); if (companyId != null) { - executionDepositSQL.append(" and companyId = ").append(companyId); //fixme вероятно в ТЗ недостаточно условий для выборки - counterPartyId + executionDepositSQL.append(" and companyId = ").append(companyId); } if (securityId != null) { executionDepositSQL.append(" and securityId = ").append(securityId); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/EndStageNotification.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/EndStageNotification.java index 8a27ff254..7b468ed00 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/EndStageNotification.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/EndStageNotification.java @@ -70,7 +70,6 @@ public class EndStageNotification implements ISessionStage { } protected StageResult endStageNotification(String section, Long sessionId) { - // 1. Изменить статус Session theSession = sessionImdg.getSingleObjectByID(sessionId); if (theSession == null) { log.warn("Session {} not found", sessionId); @@ -84,14 +83,14 @@ public class EndStageNotification implements ISessionStage { Collection forRegistries = selectRegistry(); Collection groups = forRegistries.stream() - .map(Registry::getGroupId) - .filter(Objects::nonNull) - .distinct().collect(Collectors.toList()); + .map(Registry::getGroupId) + .filter(Objects::nonNull) + .distinct().collect(Collectors.toList()); log.debug("Sending notifications for {} groups ({} registers) on section {}", - groups, forRegistries.size(), section); + groups, forRegistries.size(), section); for (Long groupId : groups) { log.trace("For registry group {} send notification", - groupId); + groupId); StageResult sResult; if (Section.FOND.equalsByKey(section)) { sResult = notificationDF14(groupId); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java index e02476832..f9f00df69 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FinishingSession.java @@ -109,7 +109,6 @@ public class FinishingSession implements ISessionStage { protected StageResult finishingSession(Long sessionId, String pr) { Instant now = Instant.now(); - //установка CLRD для обработанных регистров Collection claimsAndLiabilities = selectClaimsAndLiabilities(sessionId); claimsAndLiabilities.forEach(rgs -> { rgs.setRegistryStatus(RegistryStatus.CLRD.getKey()); @@ -118,8 +117,6 @@ public class FinishingSession implements ISessionStage { }); log.debug("For sessionId={} was updated {} registers for status={}", sessionId, claimsAndLiabilities.size(), RegistryStatus.CLRD.getKey()); - - // Отметка статуса в Execution* Session session = sessionImdg.getSingleObjectByID(sessionId); if (session == null) { log.error("Session id={} not found. Can not update Execution's.", sessionId); @@ -127,24 +124,24 @@ public class FinishingSession implements ISessionStage { Collection oRegs = findORegistryBySessionId(sessionId); Map obligationStatusByGroupId; obligationStatusByGroupId = oRegs.stream() - .map(rgs -> new Pair<>(rgs.getGroupId(), getEnumByKey(RegistryStatus.class, rgs.getRegistryStatus()))) - .filter(pair -> pair.getSecond() != null) - .collect(Collectors.toMap(Pair::getFirst, Pair::getSecond, (o1, o2) -> o1)); - Function statusByExchangeId = id-> { + .map(rgs -> new Pair<>(rgs.getGroupId(), getEnumByKey(RegistryStatus.class, rgs.getRegistryStatus()))) + .filter(pair -> pair.getSecond() != null) + .collect(Collectors.toMap(Pair::getFirst, Pair::getSecond, (o1, o2) -> o1)); + Function statusByExchangeId = id -> { RegistryStatus obligationStatus = obligationStatusByGroupId.get(id); if (obligationStatus == null) return null; return switch (obligationStatus) { case CLRD -> CoverageStatus.ALWD; - case FAIL, UNCV, NACK, NACC -> CoverageStatus.DEND; + case FAIL, UNCV, NACK, NACC -> CoverageStatus.DEND; default -> null; }; }; Set exchangeExecutionIdsPreviousDay = oRegs.stream() - .filter(rgs -> Objects.nonNull(rgs.getSettlementDate())) - .filter(rgs -> Objects.nonNull(rgs.getTradingDate())) - .filter(rgs -> rgs.getSettlementDate().compareTo(rgs.getTradingDate()) > 0) - .map(Registry::getGroupId) - .collect(Collectors.toSet()); + .filter(rgs -> Objects.nonNull(rgs.getSettlementDate())) + .filter(rgs -> Objects.nonNull(rgs.getTradingDate())) + .filter(rgs -> rgs.getSettlementDate().compareTo(rgs.getTradingDate()) > 0) + .map(Registry::getGroupId) + .collect(Collectors.toSet()); log.trace("obligations number with second leg in the past: {}", exchangeExecutionIdsPreviousDay.size()); int allowed = 0; int notAllowed = 0; @@ -169,11 +166,11 @@ public class FinishingSession implements ISessionStage { executionDepositImdg.update(execution); } log.trace("By sessionId={} processed {} ExecutionDeposit: {} allowed, {} denied, skipped {}", - sessionId, - executions.size(), - allowed, - notAllowed, - executions.size() - (allowed + notAllowed)); + sessionId, + executions.size(), + allowed, + notAllowed, + executions.size() - (allowed + notAllowed)); } if (IEnumKey.contains(sessionType, SessionType.CURR, SessionType.TRDT, SessionType.IPOB, SessionType.IPO0, SessionType.IPOT, SessionType.UNIT)) { Collection executions = findExecutionFondBySessionId(sessionId, sessionType); @@ -199,17 +196,15 @@ public class FinishingSession implements ISessionStage { } } log.trace("By sessionId={} processed {} ExecutionFond: allowed {}, denied {}, skipped {}", - sessionId, - executions.size(), - allowed, - notAllowed, - executions.size() - (allowed + notAllowed)); + sessionId, + executions.size(), + allowed, + notAllowed, + executions.size() - (allowed + notAllowed)); } else { log.warn("Unsupported session[{}].SessionType={} for update Executions", sessionId, session.getSessionType()); } } - - // 2. Отправка сообщений Collection forRegistries = selectRegistry(sessionId); log.debug("Found {} registries for sessionId={}", forRegistries.size(), sessionId); @@ -219,7 +214,7 @@ public class FinishingSession implements ISessionStage { return sResult; } for (Registry registryA : forRegistries) { - if (!RegistryDesignation.A.equalsByKey(registryA.getRegistryUnit())) { //fixme Unit -> Designation + if (!RegistryDesignation.A.equalsByKey(registryA.getRegistryUnit())) { log.warn("For registry {}.RegistryDesignation is not A.", registryA.getId()); continue; } @@ -237,9 +232,6 @@ public class FinishingSession implements ISessionStage { return res; } - /** - * формирование операционного отчета об обязательствах - **/ protected StageResult toReportSession(Long sessionId) { ReportRequestWithSessionId reportSessionRequest = new ReportRequestWithSessionId(); reportSessionRequest.setSessionId(sessionId); @@ -251,9 +243,6 @@ public class FinishingSession implements ISessionStage { return new StageResult<>(null, true); } - /** - * формирование операционного отчета о денежных средствах - **/ protected StageResult toReportMoney(Long sessionId, Registry registry) { ReportRequestWithRegistryId reportMoneyRequest = new ReportRequestWithRegistryId(); reportMoneyRequest.setSessionId(sessionId); @@ -299,9 +288,8 @@ public class FinishingSession implements ISessionStage { protected Collection findORegistryBySessionId(Long sessionId) { ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.equals("sessionId", sessionId), -// registryStatus - любой статус - pb.equals("registryDesignation", RegistryDesignation.O.getKey())); + pb.equals("sessionId", sessionId), + pb.equals("registryDesignation", RegistryDesignation.O.getKey())); Collection result = registryImdg.getCollectionObjectsByPredicate(prdct); int size = result.size(); result = result.stream() diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstruction.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstruction.java index 06b569cc2..f0e5fde36 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstruction.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstruction.java @@ -48,7 +48,6 @@ import static ru.spcex.platform.enumeration.RegistryTradingParams.LS_T; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class FormingPaymentInstruction implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; @@ -99,162 +98,33 @@ public class FormingPaymentInstruction implements ISessionStage { Collection obligations = registryImdg.getCollectionObjectsBySQL(registryCodeCondition); List obligationsByMoney = obligations.stream().filter(registry -> - new RegistryTradingParams(RegistryDesignation.L, RegistryInstrumentType.M, null, RegistryUnit.T).equalByRegistry( - IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), - IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), - IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), - IEnumKey.getEnumByKey(RegistryUnit.class, registry.getRegistryUnit()))) - .toList(); + new RegistryTradingParams(RegistryDesignation.L, RegistryInstrumentType.M, null, RegistryUnit.T).equalByRegistry( + IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), + IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), + IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), + IEnumKey.getEnumByKey(RegistryUnit.class, registry.getRegistryUnit()))) + .toList(); log.debug("Size obligationsByMoney: {}; expected 0", obligationsByMoney.size()); - //TODO CLRNWORM -// for (Registry obligationByMoney : obligationsByMoney) { -// String sql = String.format("tradingClearingRegistryId = %s and companyId = %s", -// obligationByMoney.getTradingClearingRegistryId(), obligationByMoney.getCompanyId()); -// Collection relatedRegistries = registryImdg.getCollectionObjectsBySQL(sql); -// -// RegistryTradingParams registryTradingParamsF = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.M, null, RegistryUnit.F); -// RegistryTradingParams registryTradingParamsT = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.M, null, RegistryUnit.T); -// RegistryTradingParams registryTradingParamsB = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.M, null, RegistryUnit.B); -// -// for (Registry relatedRegistry : relatedRegistries) { -// if (registryTradingParamsF.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setBalance(safeBD(relatedRegistry.getBalance()).subtract(safeBD(obligationByMoney.getBalance()))); -// } else if (registryTradingParamsT.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setSettledDebit(safeBD(relatedRegistry.getSettledDebit()).add(safeBD(obligationByMoney.getBalance()))); -// } else if (registryTradingParamsB.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setBalance(safeBD(relatedRegistry.getBalance()).add(safeBD(obligationByMoney.getBalance()))); -// } -// registryImdg.update(relatedRegistry); -// } -// } -// -// List requirementsByIssue = obligations.stream().filter(registry -> -// new RegistryTradingParams(RegistryDesignation.C, RegistryInstrumentType.S, null, RegistryUnit.T).equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, registry.getRegistryUnit()))) -// .toList(); -// -// log.debug("Size requirementsByIssue: {};", requirementsByIssue.size()); -// for (Registry requirementByIssue : requirementsByIssue) { -// String sql = String.format("tradingClearingRegistryId = %s and companyId = %s", -// requirementByIssue.getTradingClearingRegistryId(), requirementByIssue.getCompanyId()); -// Collection relatedRegistries = registryImdg.getCollectionObjectsBySQL(sql); -// -// RegistryTradingParams registryTradingParamsA = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.S, null, RegistryUnit.T); -// -// for (Registry relatedRegistry : relatedRegistries) { -// if (registryTradingParamsA.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setSettledDebit(safeBD(relatedRegistry.getSettledDebit()).add(safeBD(requirementByIssue.getBalance()))); -// } -// registryImdg.update(relatedRegistry); -// } -// } -// -// List requirementsByMoney = obligations.stream().filter(registry -> -// new RegistryTradingParams(RegistryDesignation.C, RegistryInstrumentType.M, null, RegistryUnit.T).equalByRegistry( -// IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, registry.getRegistryUnit()))) -// .toList(); -// -// log.debug("Size requirementsByMoney: {}; expected 0", requirementsByMoney.size()); -// for (Registry requirementByMoney : requirementsByMoney) { -// String sql = String.format("tradingClearingRegistryId = %s and companyId = %s", -// requirementByMoney.getTradingClearingRegistryId(), requirementByMoney.getCompanyId()); -// Collection relatedRegistries = registryImdg.getCollectionObjectsBySQL(sql); -// -// RegistryTradingParams registryTradingParamsA = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.M, null, RegistryUnit.T); -// -// for (Registry relatedRegistry : relatedRegistries) { -// if (registryTradingParamsA.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setSettledDebit(safeBD(relatedRegistry.getSettledDebit()).add(safeBD(requirementByMoney.getBalance()))); -// } -// registryImdg.update(relatedRegistry); -// } -// } -// -// List obligationsByIssue = obligations.stream().filter(registry -> -// new RegistryTradingParams(RegistryDesignation.L, RegistryInstrumentType.S, null, RegistryUnit.T).equalByRegistry( -// IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, registry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, registry.getRegistryUnit()))) -// .toList(); -// -// for (Registry obligationByIssue : obligationsByIssue) { -// String sql = String.format("tradingClearingRegistryId = %s and companyId = %s", -// obligationByIssue.getTradingClearingRegistryId(), obligationByIssue.getCompanyId()); -// Collection relatedRegistries = registryImdg.getCollectionObjectsBySQL(sql); -// -// RegistryTradingParams registryTradingParamsF = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.S, null, RegistryUnit.F); -// RegistryTradingParams registryTradingParamsT = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.S, null, RegistryUnit.T); -// RegistryTradingParams registryTradingParamsB = new RegistryTradingParams(RegistryDesignation.A, -// RegistryInstrumentType.S, null, RegistryUnit.B); -// -// for (Registry relatedRegistry : relatedRegistries) { -// if (registryTradingParamsF.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setBalance(safeBD(relatedRegistry.getBalance()).subtract(safeBD(obligationByIssue.getBalance()))); -// } else if (registryTradingParamsT.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setSettledDebit(safeBD(relatedRegistry.getSettledDebit()).add(safeBD(obligationByIssue.getBalance()))); -// } else if (registryTradingParamsB.equalByRegistry(IEnumKey.getEnumByKey(RegistryDesignation.class, relatedRegistry.getRegistryDesignation()), -// IEnumKey.getEnumByKey(RegistryInstrumentType.class, relatedRegistry.getRegistryInstrumentType()), -// IEnumKey.getEnumByKey(RegistryCapacity.class, relatedRegistry.getRegistryCapacity()), -// IEnumKey.getEnumByKey(RegistryUnit.class, relatedRegistry.getRegistryUnit()))) { -// relatedRegistry.setBalance(safeBD(relatedRegistry.getBalance()).add(safeBD(obligationByIssue.getBalance()))); -// } -// registryImdg.update(relatedRegistry); -// } -// } List formedPaymentInstructions = new ArrayList<>(); Map> registryByInstrumentType = obligations.stream() - .collect(Collectors.groupingBy(registry -> RegistryInstrumentType.valueOf(registry.getRegistryInstrumentType()))); + .collect(Collectors.groupingBy(registry -> RegistryInstrumentType.valueOf(registry.getRegistryInstrumentType()))); for (Map.Entry> entry : registryByInstrumentType.entrySet()) { List registriesLC = entry.getValue(); Optional registryLOptional = registriesLC.stream() - .filter(rgst -> RegistryDesignation.L.equalsByKey(rgst.getRegistryDesignation())) - .findFirst(); + .filter(rgst -> RegistryDesignation.L.equalsByKey(rgst.getRegistryDesignation())) + .findFirst(); if (registryLOptional.isEmpty()) { log.warn("Not found registryL; registriesLC {}", registriesLC); continue; } Registry registryL = registryLOptional.get(); RegistryTradingParams registryTradingParamsLT = new RegistryTradingParams(RegistryDesignation.L, - null, null, RegistryUnit.T); + null, null, RegistryUnit.T); registryCodeCondition = RegistryCodeSqlBuilder.getInstance(registryTradingParamsLT).build(); String sqlCondition = String.format("(%s) and securityId = %s and tradingClearingRegistryId = %s and companyId = %s and counterPartyId = %s", - registryCodeCondition, registryL.getSecurityId(), registryL.getTradingClearingRegistryId(), registryL.getCompanyId(), registryL.getCounterPartyId()); + registryCodeCondition, registryL.getSecurityId(), registryL.getTradingClearingRegistryId(), registryL.getCompanyId(), registryL.getCounterPartyId()); Collection registries = registryImdg.getCollectionObjectsBySQL(sqlCondition); BigDecimal sumBalance = registries.stream().map(Registry::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add); @@ -338,7 +208,7 @@ public class FormingPaymentInstruction implements ISessionStage { private SDf12 newSDf12(PaymentInstruction paymentInstruction) { log.debug("creating sdf12"); - SDf12 sDf12 = new SDf12(); //todo remove + SDf12 sDf12 = new SDf12(); sDf12.setId(idGenerator.nextId()); sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); @@ -346,7 +216,6 @@ public class FormingPaymentInstruction implements ISessionStage { sDf12.setSecurityCode(paymentInstruction.getCreditLeg_securityId().toString()); sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java index 34e6a849d..6968cef12 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionAssets.java @@ -80,7 +80,6 @@ import ru.spcex.platform.utils.text.TextUtil; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class FormingPaymentInstructionAssets implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; @@ -193,16 +192,14 @@ public class FormingPaymentInstructionAssets implements ISessionStage { new EnumMessage(ClearingError.AccountNotPresent, "accountType = " + AccountType.Tran.getKey()), false); } - //по каждому AMB регистру создаем PaymentInstruction - //проверяем balance посчитанный на шаге 5 Account counterAcc = null; if (AccountType.Clrn.equalsByKey(registry.getAccountType())) { counterAcc = accountImdg.getSingleObjectByID(registry.getAccountId()); } else if (AccountType.Info.equalsByKey(registry.getAccountType())) { counterAcc = accountImdg.getFirstObjectByFieldValues( - Map.of("companyId", 1L, - "currency", registry.getSecuritySymbol(), - "accountType", AccountType.Anlt.getKey()) + Map.of("companyId", 1L, + "currency", registry.getSecuritySymbol(), + "accountType", AccountType.Anlt.getKey()) ); } Long senderId; @@ -221,10 +218,10 @@ public class FormingPaymentInstructionAssets implements ISessionStage { debitLegAccount = tranAcc; creditLegAccount = counterAcc; Optional payerAmtO = rgsMng.findRelatedAsset( - registry.getTradingClearingRegistryId(), - registry.getCompanyId(), - registry.getSecuritySymbol(), - AM_T); + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AM_T); payerAmtO.ifPresent(amt -> { amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(registry.getBalance().abs()))); setUpdatedStoreInImdg(amt, now); @@ -235,10 +232,10 @@ public class FormingPaymentInstructionAssets implements ISessionStage { debitLegAccount = counterAcc; creditLegAccount = tranAcc; Optional payerAmtO = rgsMng.findRelatedAsset( - registry.getTradingClearingRegistryId(), - registry.getCompanyId(), - registry.getSecuritySymbol(), - AM_T + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AM_T ); payerAmtO.ifPresent(amt -> { amt.setSettledCredit(safeBD(amt.getSettledCredit()).add(safeBD(registry.getBalance().abs()))); @@ -248,17 +245,17 @@ public class FormingPaymentInstructionAssets implements ISessionStage { amount = amount.abs(); PaymentInstructionBuilderV2 paymentInstructionBuilder = PaymentInstructionBuilderV2.builder(imdgProvider) - .registry(registry) - .sender(senderId) - .addressee(addresseeId) - .debitLegAccount(debitLegAccount) - .creditLegAccount(creditLegAccount) - .amount(amount) - .currency(registry.getSecuritySymbol()) - .sessionId(sessionId) - .checkBLKD((SessionType.FINL.equals(sessionType) || SessionType.MEDM.equals(sessionType)) - && !isPositiveBalance ? registry : null) - .purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry())); + .registry(registry) + .sender(senderId) + .addressee(addresseeId) + .debitLegAccount(debitLegAccount) + .creditLegAccount(creditLegAccount) + .amount(amount) + .currency(registry.getSecuritySymbol()) + .sessionId(sessionId) + .checkBLKD((SessionType.FINL.equals(sessionType) || SessionType.MEDM.equals(sessionType)) + && !isPositiveBalance ? registry : null) + .purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry())); PaymentInstruction paymentInstruction = paymentInstructionBuilder.build(); log.debug("Created paymentInstruction by registry.id: {}", registry.getId()); paymentInstructionImdg.insert(paymentInstruction); @@ -272,8 +269,6 @@ public class FormingPaymentInstructionAssets implements ISessionStage { log.debug("found ASB registries.size() = {}", ASBregistries.size()); for (Registry registry : ASBregistries) { - //по каждому AMB регистру создаем PaymentInstruction - //проверяем balance посчитанный на шаге 5 if (registry.getBalance().compareTo(BigDecimal.ZERO) == 0) { log.debug("Skip creating paymentInstruction by registry with 0 balance"); @@ -293,10 +288,10 @@ public class FormingPaymentInstructionAssets implements ISessionStage { creditLegAccount = counterAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); Optional payerAstO = rgsMng.findRelatedAsset( - registry.getTradingClearingRegistryId(), - registry.getCompanyId(), - registry.getSecuritySymbol(), - AS_T + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AS_T ); payerAstO.ifPresent(amt -> { amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(registry.getBalance().abs()))); @@ -309,10 +304,10 @@ public class FormingPaymentInstructionAssets implements ISessionStage { creditLegAccount = dtrnAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); Optional payerAstO = rgsMng.findRelatedAsset( - registry.getTradingClearingRegistryId(), - registry.getCompanyId(), - registry.getSecuritySymbol(), - AS_T + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AS_T ); payerAstO.ifPresent(amt -> { amt.setSettledCredit(safeBD(amt.getSettledCredit()).add(safeBD(registry.getBalance().abs()))); @@ -320,16 +315,16 @@ public class FormingPaymentInstructionAssets implements ISessionStage { }); } PaymentInstructionBuilderV2 paymentInstructionBuilder = PaymentInstructionBuilderV2.builder(imdgProvider) - .registry(registry) - .sender(senderId) - .addressee(addresseeId) - .debitLegAccount(debitLegAccount) - .creditLegAccount(creditLegAccount) - .amount(amount) - .sessionId(sessionId) - .currency(SessionType.CURR.equals(sessionType) || Section.CURR.equalsByKey(registry.getSection()) - ? registry.getSecuritySymbol() : null) - .purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry())); + .registry(registry) + .sender(senderId) + .addressee(addresseeId) + .debitLegAccount(debitLegAccount) + .creditLegAccount(creditLegAccount) + .amount(amount) + .sessionId(sessionId) + .currency(SessionType.CURR.equals(sessionType) || Section.CURR.equalsByKey(registry.getSection()) + ? registry.getSecuritySymbol() : null) + .purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry())); PaymentInstruction paymentInstruction = paymentInstructionBuilder.build(); log.debug("Created paymentInstruction by registry.id: {}", registry.getId()); paymentInstructionImdg.insert(paymentInstruction); @@ -355,39 +350,39 @@ public class FormingPaymentInstructionAssets implements ISessionStage { return stageResult; } - private BigDecimal adjustAmountByReturns(Registry amb, Long sessionId) {//companyid, tcr/account, sessionId, RUB + private BigDecimal adjustAmountByReturns(Registry amb, Long sessionId) { if (SessionType.UNIT.equals(sessionType)) return BigDecimal.ZERO; Long companyId = amb.getCompanyId(); Long tradingClearingRegistryId = amb.getTradingClearingRegistryId(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate cL = pb.and( - pb.equals("companyId", companyId), - pb.equals("tradingClearingRegistryId", tradingClearingRegistryId), - pb.equals("registryStatus", RegistryStatus.OK.getKey()), - pb.equals("sessionId", sessionId), - pb.or( - pb.sql(RegistryCodeSqlBuilder.getInstance(LM_T).build()), - pb.sql(RegistryCodeSqlBuilder.getInstance(CM_T).build()) - ) + pb.equals("companyId", companyId), + pb.equals("tradingClearingRegistryId", tradingClearingRegistryId), + pb.equals("registryStatus", RegistryStatus.OK.getKey()), + pb.equals("sessionId", sessionId), + pb.or( + pb.sql(RegistryCodeSqlBuilder.getInstance(LM_T).build()), + pb.sql(RegistryCodeSqlBuilder.getInstance(CM_T).build()) + ) ); BigDecimal reduce = registryImdg.getCollectionObjectsByPredicate(cL) - .stream() - .filter(rgs -> rgs.getValueDate() != null) - .filter(rgs -> rgs.getSettlementDate() != null) - .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) - .map(rgs -> { - if (RegistryDesignation.C.equalsByKey(rgs.getRegistryDesignation())) { - return rgs.getBalance(); - } else { - return rgs.getBalance().abs().negate(); - } - }) - .reduce(BigDecimal.ZERO, BigDecimal::add); + .stream() + .filter(rgs -> rgs.getValueDate() != null) + .filter(rgs -> rgs.getSettlementDate() != null) + .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) + .map(rgs -> { + if (RegistryDesignation.C.equalsByKey(rgs.getRegistryDesignation())) { + return rgs.getBalance(); + } else { + return rgs.getBalance().abs().negate(); + } + }) + .reduce(BigDecimal.ZERO, BigDecimal::add); log.debug("{}.id={} {} adjust value {}", - amb.getRegistryCode(), - amb.getId(), - cL, - reduce); + amb.getRegistryCode(), + amb.getId(), + cL, + reduce); return reduce; } @@ -416,7 +411,6 @@ public class FormingPaymentInstructionAssets implements ISessionStage { } if (List.of(AccountType.Corr, AccountType.Clrn, AccountType.Tran, AccountType.Anlt, AccountType.Info) .contains(IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()))) { - //если info подставить anlt (единственный счет в системе) sDf03Created.add(sdf03Creator.create(paymentInstruction)); } else if (!InstrumentType.CRNC.equalsByKey(security.getInstrumentType()) && List.of(AccountType.Depo, AccountType.Dtrn).contains(IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()))) { @@ -487,7 +481,6 @@ public class FormingPaymentInstructionAssets implements ISessionStage { if (security != null) { sDf12.setSecurityCode(security.getSecuritySymbol()); } -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } @@ -512,7 +505,7 @@ public class FormingPaymentInstructionAssets implements ISessionStage { stmt.setStatementType(StatementType.incr.getKey()); stmt.setComment("Расчеты по сессии"); stmt.setSettlementDate(LocalDate.now()); - stmt.setOperationStatus(OperationStatus.Executed.getKey());//todo тут что-то с апдейтом статуса на EXEC когда создались регистры с нулевым диффом? + stmt.setOperationStatus(OperationStatus.Executed.getKey()); stmt.setClearingDate(LocalDate.now()); stmt.setCreated(Instant.now()); stmt.setComment(pmt.getPaymentPurpose()); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java index 40c642dee..bd3efe1f6 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDealsFinalMkr.java @@ -54,7 +54,6 @@ import static ru.spcex.platform.enumeration.RegistryTradingParams.LM_T; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; @@ -115,108 +114,63 @@ public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage { .collect(Collectors.toList()); } - /** - * аккаунт-счет с accountType='TRAN' - это счет СПВБ который принадлежит самой бирже
- * хранят деньги разных участников
- * в сделке:
- * регистр CMAT кому переводить (registry.account)
- * регистр LMAT кто переводит деньги (registry.account)
- * в итоге создается 2 PaymentInstruction: LMAT -> TRAN счет -> CMAT счет - */ private StageResult formingPaymentInstructions(Long sessionId, Section section, Collection paymentInstructionReturns, boolean sendSdfs) { Collection registries = selectRegistries(); log.debug("found registries.size() = {}", registries.size()); - //клиринговый счет, через который будут проводиться сделки Account tranAcc = accountImdg.getFirstObjectBySQL("accountType = '%s' and status = '%s' and processingSign = '%s'" - .formatted(AccountType.Tran.getKey(), AccountStatus.ACTIVE.getKey(), Allowed.ALLOWED.getKey())); + .formatted(AccountType.Tran.getKey(), AccountStatus.ACTIVE.getKey(), Allowed.ALLOWED.getKey())); if (tranAcc == null) { return new StageResult<>( - new EnumMessage(ClearingError.AccountNotPresent, "accountType = " + AccountType.Tran.getKey()), - false); + new EnumMessage(ClearingError.AccountNotPresent, "accountType = " + AccountType.Tran.getKey()), + false); } log.debug("found tranAcc.id = {}", tranAcc.getId()); - //группируем регистры по groupId Map> groups = registries - .stream() - .collect(Collectors.groupingBy(Registry::getGroupId)); + .stream() + .collect(Collectors.groupingBy(Registry::getGroupId)); log.debug("groups.size = {}", groups.size()); List paymentInstructionDeals = new ArrayList<>(); for (Map.Entry> group : groups.entrySet()) { Long groupId = group.getKey(); Function findByCode = rgsCode -> group.getValue() - .stream() - .filter(rgs -> RegistryManager.equalsByCode(rgsCode, rgs)) - .findFirst() - .orElse(null); - //интересуют обязательства и требования по деньгам + .stream() + .filter(rgs -> RegistryManager.equalsByCode(rgsCode, rgs)) + .findFirst() + .orElse(null); Registry cm_t = findByCode.apply(CM_T); Registry lm_t = findByCode.apply(LM_T); if (cm_t == null || lm_t == null) { log.error("groupId {} cmt_t {} lm_t {} - both must be present", groupId, cm_t, lm_t); continue; } -// TODO CLRNWORM -// { -// //изменение активов - блокируем средства беред отправкой sdf'ов -// Optional amfO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_F); -// Optional payerAmtO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_T); -// Optional ambO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), AM_B); -// Optional receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), AM_B); -// log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*F.id={}, AM*T.id={}, AM*B.id={}, AM*B.id={}", -// lm_t.getId(), -// cm_t.getId(), -// amfO.map(Registry::getId).orElse(null), -// payerAmtO.map(Registry::getId).orElse(null), -// ambO.map(Registry::getId).orElse(null), -// receiverAmtO.map(Registry::getId).orElse(null) -// ); -// Instant now = Instant.now(); -// amfO.ifPresent(amf -> { -// amf.setBalance(safeBD(amf.getBalance()).subtract(safeBD(lm_t.getBalance()))); -// setUpdatedStoreInImdg(amf, now); -// }); -// payerAmtO.ifPresent(amt -> { -// amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(lm_t.getBalance()))); -// setUpdatedStoreInImdg(amt, now); -// }); -// ambO.ifPresent(amb -> { -// amb.setBalance(safeBD(amb.getBalance()).add(safeBD(lm_t.getBalance()))); -// setUpdatedStoreInImdg(amb, now); -// }); -// receiverAmtO.ifPresent(amt -> { -// // у отправителя и получателя одинаково, см. в FormingPaymentInstruction -// amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(lm_t.getBalance()))); -// setUpdatedStoreInImdg(amt, now); -// }); -// } log.trace("generating payment instruction for groupId {} cmt_t {} lm_t {}", - groupId, - cm_t.getId(), - lm_t.getId()); + groupId, + cm_t.getId(), + lm_t.getId()); String paymentPurpose = section != null && section == Section.FOND ? "" : - "Размещение депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry(); + "Размещение депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry(); Pair pmtInstrs = PaymentInstructionBuilderFinalMkrDeals - .builder(imdgProvider) - .cm_t(cm_t) - .lm_t(lm_t) - .tranAcc(tranAcc) - .sessionId(sessionId) - .paymentPurpose(paymentPurpose) - .build(); + .builder(imdgProvider) + .cm_t(cm_t) + .lm_t(lm_t) + .tranAcc(tranAcc) + .sessionId(sessionId) + .paymentPurpose(paymentPurpose) + .build(); Pair.forEach(pmtInstrs, pmtInstr -> { paymentInstructionImdg.insert(pmtInstr); paymentInstructionDeals.add(pmtInstr); }); log.trace("generated PaymentInstructions for groupId {}: pmtInstr1.id={} pmtInstr2.id={}", - groupId, - pmtInstrs.getFirst().getId(), - pmtInstrs.getSecond().getId()); + groupId, + pmtInstrs.getFirst().getId(), + pmtInstrs.getSecond().getId()); } log.debug("PaymentInstructions return size {}, PaymentInstructions deals size {}. sending SDF03", - paymentInstructionReturns.size(), - paymentInstructionDeals.size()); + paymentInstructionReturns.size(), + paymentInstructionDeals.size()); List returnsAndDeals = Stream.concat(paymentInstructionReturns.stream(), paymentInstructionDeals.stream()).toList(); if (sendSdfs) { sendSdfs(returnsAndDeals); @@ -240,7 +194,6 @@ public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage { Security security = securityImdg.getSingleObjectByID(paymentInstruction.getCreditLeg_securityId()); if (List.of(AccountType.Corr, AccountType.Clrn, AccountType.Tran, AccountType.Anlt, AccountType.Info) .contains(IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()))) { - //если info подставить anlt (единственный счет в системе) sDf03Created.add(sdf03Creator.create(paymentInstruction)); } else if (!InstrumentType.CRNC.equalsByKey(security.getInstrumentType()) && List.of(AccountType.Depo, AccountType.Dtrn).contains(IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()))) { @@ -290,7 +243,7 @@ public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage { private SDf12 newSDf12(PaymentInstruction paymentInstruction) { log.debug("creating sdf12"); - SDf12 sDf12 = new SDf12(); //todo remove + SDf12 sDf12 = new SDf12(); sDf12.setId(idGenerator.nextId()); sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); @@ -298,7 +251,6 @@ public class FormingPaymentInstructionDealsFinalMkr implements ISessionStage { sDf12.setSecurityCode(paymentInstruction.getCreditLeg_securityId().toString()); sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java index c2714baa9..df3b0c885 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionDepositReturn.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import ru.clearing.classes.statics.data.account.Account; import ru.clearing.classes.statics.data.account.BankAccount; import ru.clearing.classes.statics.data.company.Company; +import ru.clearing.classes.statics.data.misc.Currency; import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.registry.Registry; import ru.clearing.classes.statics.data.sdf.SDf03; @@ -62,7 +63,7 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { private final ImdgId idGenerator; private final Imdg registryImdg; private final Imdg bankAccImdg; - private final Imdg currImdg; + private final Imdg currImdg; private final Imdg paymentInstructionImdg; private final Imdg securityImdg; private final Imdg accountImdg; @@ -87,7 +88,7 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { this.sDf12Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf12, SDf12.class); this.paymentInstructionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); this.bankAccImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_BankAccount, BankAccount.class); - this.currImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, ru.clearing.classes.statics.data.misc.Currency.class); + this.currImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Currency, Currency.class); this.sdf03Creator = sdf03Creator; this.rgsMng = rgsMng; } @@ -105,28 +106,26 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { } } - //CM_T LM_T CS_T LS_T - private StageResult formingPaymentInstruction(Long sessionId) { Instant now = Instant.now(); - RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(LM_T,CM_T, LS_T, CS_T); + RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(LM_T, CM_T, LS_T, CS_T); String registryCodeCondition = registryCodeSqlBuilder.build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.sql(registryCodeCondition), - pb.equals("sessionId", sessionId) + pb.sql(registryCodeCondition), + pb.equals("sessionId", sessionId) ); Collection obligations = registryImdg.getCollectionObjectsByPredicate(prdct) - .stream() - .filter(rgs -> rgs.getValueDate() != null) - .filter(rgs -> rgs.getSettlementDate() != null) - .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) - .toList(); + .stream() + .filter(rgs -> rgs.getValueDate() != null) + .filter(rgs -> rgs.getSettlementDate() != null) + .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) + .toList(); - Map> registriesByGroup = obligations - .stream(). - collect(Collectors.groupingBy(Registry::getGroupId)); + Map> registriesByGroup = obligations + .stream(). + collect(Collectors.groupingBy(Registry::getGroupId)); log.info("registry groups found {}", registriesByGroup.size()); ArrayList pmtCreated = new ArrayList<>(); @@ -138,7 +137,7 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { log.error("groupId {} LM*T or CM*T not found", entry.getKey()); continue; } - Registry lm_t = lmtO.get(); //obligation by money + Registry lm_t = lmtO.get(); Registry cm_t = cmtO.get(); Account tranAcc = accountImdg.getFirstObjectBySQL(("accountType = '%s'" + " and status = '%s'" + @@ -156,7 +155,7 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { Optional dmx = rgsMng.searchDmxByCounterPartyNotOk(lm_t); if (dmx.isPresent()) { log.debug("groupId {} LM*T#id={}, DM*X#id={} found, no action needed, skipping liability", - lm_t.getGroupId(), lm_t.getId(), dmx.get().getId()); + lm_t.getGroupId(), lm_t.getId(), dmx.get().getId()); dmx.get().setRegistryStatus(RegistryStatus.OK.getKey()); setUpdatedStoreInImdg(dmx.get(), now); continue; @@ -165,16 +164,16 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { Optional dmtInfo = rgsMng.searchDmtInfoNotOk(lm_t); if (dmtInfo.isPresent()) { log.debug("groupId {} LM*T#id={}, DM*T(INFO)#id={} found", - lm_t.getGroupId(), lm_t.getId(), dmtInfo.get().getId()); + lm_t.getGroupId(), lm_t.getId(), dmtInfo.get().getId()); Pair pmts = PaymentInstructionBuilderFinalMkrDeals.builder(imdgProvider) - .lm_t(lm_t) - .cm_t(cm_t) - .tranAcc(tranAcc) - .sessionId(sessionId) - .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry() + " по итогу клиринга") - .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry() + " по итогу клиринга") - .currency(lm_t.getSecuritySymbol()) - .build(); + .lm_t(lm_t) + .cm_t(cm_t) + .tranAcc(tranAcc) + .sessionId(sessionId) + .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry() + " по итогу клиринга") + .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry() + " по итогу клиринга") + .currency(lm_t.getSecuritySymbol()) + .build(); Pair.forEach(pmts, paymentInstructionImdg::insert); Pair.forEach(pmts, pmtCreated::add); lm_t.setPaymentId(pmts.getFirst().getId()); @@ -186,59 +185,49 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { dmtInfo.get().setRegistryStatus(RegistryStatus.OK.getKey()); setUpdatedStoreInImdg(dmtInfo.get(), now); log.debug("groupId {} LM*T#id={} CM*T#id={} created PmtInst.id={} and PmtInst.id={}", - lm_t.getGroupId(), lm_t.getId(), cm_t.getId(), pmts.getFirst().getId(), pmts.getSecond().getId()); + lm_t.getGroupId(), lm_t.getId(), cm_t.getId(), pmts.getFirst().getId(), pmts.getSecond().getId()); continue; } Optional dmtClnr = rgsMng.searchDmtClrnNotOk(lm_t); if (dmtClnr.isPresent()) { log.debug("groupId {} {}#id={} found", - lm_t.getGroupId(), dmtClnr.get().getRegistryCode(), dmtClnr.get().getId()); + lm_t.getGroupId(), dmtClnr.get().getRegistryCode(), dmtClnr.get().getId()); { - //изменение активов - блокируем средства беред отправкой sdf'ов Optional amfO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_F); Optional payerAmtO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_T); Optional ambO = rgsMng.findRelatedAsset(lm_t.getTradingClearingRegistryId(), lm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B); Optional receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B); log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*F.id={}, AM*T.id={}, AM*B.id={}, AM*B.id={}", - lm_t.getId(), - cm_t.getId(), - amfO.map(Registry::getId).orElse(null), - payerAmtO.map(Registry::getId).orElse(null), - ambO.map(Registry::getId).orElse(null), - receiverAmtO.map(Registry::getId).orElse(null) + lm_t.getId(), + cm_t.getId(), + amfO.map(Registry::getId).orElse(null), + payerAmtO.map(Registry::getId).orElse(null), + ambO.map(Registry::getId).orElse(null), + receiverAmtO.map(Registry::getId).orElse(null) ); - //amfO.ifPresent(amf -> { - // amf.setBalance(safeBD(amf.getBalance()).subtract(safeBD(lm_t.getBalance()))); - // setUpdatedStoreInImdg(amf, now); - //}); payerAmtO.ifPresent(amt -> { amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(lm_t.getBalance()))); setUpdatedStoreInImdg(amt, now); }); - //ambO.ifPresent(amb -> { - // amb.setBalance(safeBD(amb.getBalance()).add(safeBD(lm_t.getBalance()))); - // setUpdatedStoreInImdg(amb, now); - //}); receiverAmtO.ifPresent(amt -> { - // у отправителя и получателя одинаково, см. в FormingPaymentInstruction amt.setSettledCredit(safeBD(amt.getSettledDebit()).add(safeBD(lm_t.getBalance()))); setUpdatedStoreInImdg(amt, now); }); } Pair pmts = PaymentInstructionBuilderFinalMkrDeals.builder(imdgProvider) - .lm_t(lm_t) - .cm_t(cm_t) - .tranAcc(tranAcc) - .sessionId(sessionId) - .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry() + " по итогу клиринга") - .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry() + " по итогу клиринга") - .currency(lm_t.getSecuritySymbol()) - .build(); + .lm_t(lm_t) + .cm_t(cm_t) + .tranAcc(tranAcc) + .sessionId(sessionId) + .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry() + " по итогу клиринга") + .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry() + " по итогу клиринга") + .currency(lm_t.getSecuritySymbol()) + .build(); Pair.forEach(pmts, paymentInstructionImdg::insert); Pair.forEach(pmts, pmtCreated::add); log.debug("groupId {} LM*T#id={}, CM*T#id={} found, PaymentInstruction id={} and id={} created", - lm_t.getGroupId(), lm_t.getId(), cm_t.getId(), pmts.getFirst().getId(), pmts.getSecond().getId()); + lm_t.getGroupId(), lm_t.getId(), cm_t.getId(), pmts.getFirst().getId(), pmts.getSecond().getId()); dmtClnr.get().setRegistryStatus(RegistryStatus.OK.getKey()); setUpdatedStoreInImdg(dmtClnr.get(), now); } @@ -256,14 +245,12 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { } - private void sendSdfs(List formedPaymentInstructions) { List sDf03Created = new ArrayList<>(); for (PaymentInstruction paymentInstruction : formedPaymentInstructions) { Account account = accountImdg.getSingleObjectByID(paymentInstruction.getCreditLeg_accountId()); if (List.of(AccountType.Corr, AccountType.Clrn, AccountType.Tran, AccountType.Anlt, AccountType.Info) - .contains(IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()))) { - //если info подставить anlt (единственный счет в системе) + .contains(IEnumKey.getEnumByKey(AccountType.class, account.getAccountType()))) { sDf03Created.add(sdf03Creator.create(paymentInstruction)); } } @@ -284,8 +271,8 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { private PaymentInstruction createPaymentInstruction(List registries, BigDecimal balance, Long sessionId) { PaymentInstructionBuilder paymentInstructionBuilder = PaymentInstructionBuilder.builder(imdgProvider, registries) - .sessionId(sessionId) - .amount(balance); + .sessionId(sessionId) + .amount(balance); return paymentInstructionBuilder.build(); } @@ -310,11 +297,11 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { } } SpecifUtil.fillSegmentsBy35Symbols(senderSbankName, - sDf03::setSbanknam1, - sDf03::setSbanknam2, - sDf03::setSbanknam3, - sDf03::setSbanknam4, - sDf03::setSbanknam5); + sDf03::setSbanknam1, + sDf03::setSbanknam2, + sDf03::setSbanknam3, + sDf03::setSbanknam4, + sDf03::setSbanknam5); sDf03.setC_acc_cred(paymentInstruction.getDebitLeg_account()); @@ -328,11 +315,11 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { } } SpecifUtil.fillSegmentsBy35Symbols(addresseeSbankName, - sDf03::setRbanknam1, - sDf03::setRbanknam2, - sDf03::setRbanknam3, - sDf03::setRbanknam4, - sDf03::setRbanknam5); + sDf03::setRbanknam1, + sDf03::setRbanknam2, + sDf03::setRbanknam3, + sDf03::setRbanknam4, + sDf03::setRbanknam5); sDf03.setPay_date(payDateFormatter.format(paymentInstruction.getPaymentDate())); sDf03.setPay_val("RUR"); @@ -347,7 +334,7 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { private SDf12 newSDf12(PaymentInstruction paymentInstruction) { log.debug("creating sdf12"); - SDf12 sDf12 = new SDf12(); //todo remove + SDf12 sDf12 = new SDf12(); sDf12.setId(idGenerator.nextId()); sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); @@ -355,7 +342,6 @@ public class FormingPaymentInstructionDepositReturn implements ISessionStage { sDf12.setSecurityCode(paymentInstruction.getCreditLeg_securityId().toString()); sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java index 7ed8bec5f..4f6b89986 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionReturnMkr.java @@ -65,7 +65,6 @@ import ru.spcex.platform.utils.time.TimeUtil; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class FormingPaymentInstructionReturnMkr implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; @@ -117,25 +116,24 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate prdct = pb.and( - pb.sql(registryCodeCondition), - pb.equals("sessionId", sessionId) + pb.sql(registryCodeCondition), + pb.equals("sessionId", sessionId) ); Collection rgsAll = registryImdg.getCollectionObjectsByPredicate(prdct) - .stream() - .filter(rgs -> rgs.getValueDate() != null) - .filter(rgs -> rgs.getSettlementDate() != null) - .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) - .toList(); + .stream() + .filter(rgs -> rgs.getValueDate() != null) + .filter(rgs -> rgs.getSettlementDate() != null) + .filter(rgs -> rgs.getSettlementDate().isAfter(rgs.getValueDate())) + .toList(); log.debug("LM*T and CM*T size = {}", rgsAll.size()); log.debug("changing assets by CM*T"); List requirementsByMoney = rgsAll.stream() - .filter(registry -> equalByRgs(CM_T, registry)) - .toList(); - //изменяем активы по требованиям по деньгам CM_T + .filter(registry -> equalByRgs(CM_T, registry)) + .toList(); for (Registry requirementByMoney : requirementsByMoney) { String sql = String.format("tradingClearingRegistryId = %s and companyId = %s", - requirementByMoney.getTradingClearingRegistryId(), requirementByMoney.getCompanyId()); + requirementByMoney.getTradingClearingRegistryId(), requirementByMoney.getCompanyId()); Collection relatedRegistries = registryImdg.getCollectionObjectsBySQL(sql); log.trace("found {} related registries (by tcrId&companyId) for CM*T.id={}", relatedRegistries.size(), requirementByMoney.getId()); for (Registry relatedRegistry : relatedRegistries) { @@ -149,9 +147,9 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { List pmtCreated = new ArrayList<>(); - Map> registriesByGroup = rgsAll - .stream(). - collect(Collectors.groupingBy(Registry::getGroupId)); + Map> registriesByGroup = rgsAll + .stream(). + collect(Collectors.groupingBy(Registry::getGroupId)); log.info("registry groups found {}", registriesByGroup.size()); for (Map.Entry> entry : registriesByGroup.entrySet()) { List groupRgs = entry.getValue(); @@ -161,12 +159,12 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { log.error("LM*T or CM*T not found for group {}", entry.getKey()); continue; } - Registry lm_t = lmtO.get(); //obligation by money + Registry lm_t = lmtO.get(); Registry cm_t = cmtO.get(); Optional dmx = rgsMng.searchDmxByCounterPartyNotOk(lm_t); if (dmx.isPresent()) { log.debug("LM*T#id={}, DM*X#id={} found, no action needed for group {}, skipping liability", - lm_t.getId(), dmx.get().getId(), lm_t.getGroupId()); + lm_t.getId(), dmx.get().getId(), lm_t.getGroupId()); dmx.get().setRegistryStatus(RegistryStatus.OK.getKey()); setUpdatedStoreInImdg(dmx.get(), now); continue; @@ -176,42 +174,40 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { " and status = '%s'" + " and processingSign = '%s'" + " and currency = '%s'") - .formatted(AccountType.Tran.getKey(), - AccountStatus.ACTIVE.getKey(), - Allowed.ALLOWED.getKey(), - lm_t.getSecuritySymbol())); + .formatted(AccountType.Tran.getKey(), + AccountStatus.ACTIVE.getKey(), + Allowed.ALLOWED.getKey(), + lm_t.getSecuritySymbol())); if (tranAcc == null) { return new StageResult<>( - new EnumMessage(ClearingError.AccountNotPresent, "accountType = " + AccountType.Tran.getKey()), - false); + new EnumMessage(ClearingError.AccountNotPresent, "accountType = " + AccountType.Tran.getKey()), + false); } { - //изменение активов - блокируем средства беред отправкой sdf'ов Optional receiverAmtO = rgsMng.findRelatedAsset(cm_t.getTradingClearingRegistryId(), cm_t.getCompanyId(), lm_t.getSecuritySymbol(), AM_B); log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*T(receiver).id={}", - lm_t.getId(), - cm_t.getId(), - receiverAmtO.map(Registry::getId).orElse(null) + lm_t.getId(), + cm_t.getId(), + receiverAmtO.map(Registry::getId).orElse(null) ); receiverAmtO.ifPresent(amt -> { - // у отправителя и получателя одинаково, см. в FormingPaymentInstruction amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(lm_t.getBalance()))); setUpdatedStoreInImdg(amt, now); }); } Pair pmts = PaymentInstructionBuilderFinalMkrDeals.builder(imdgProvider) - .lm_t(lm_t) - .cm_t(cm_t) - .tranAcc(tranAcc) - .sessionId(sessionId) - .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry() + " по итогу клиринга") - .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry() + " по итогу клиринга") - .currency(lm_t.getSecuritySymbol()) + .lm_t(lm_t) + .cm_t(cm_t) + .tranAcc(tranAcc) + .sessionId(sessionId) + .paymentPurpose("Возврат депозита " + cm_t.getContract() + " по ТКР " + cm_t.getTradingClearingRegistry() + " по итогу клиринга") + .paymentPurposeLmt("Возврат депозита " + lm_t.getContract() + " по ТКР " + lm_t.getTradingClearingRegistry() + " по итогу клиринга") + .currency(lm_t.getSecuritySymbol()) .build(); Pair.forEach(pmts, paymentInstructionImdg::insert); Pair.forEach(pmts, pmtCreated::add); log.debug("LM*T#id={}, CM*T#id={} found, PaymentInstruction id={} and id={} created", - lm_t.getId(), cm_t.getId(), pmts.getFirst().getId(), pmts.getSecond().getId()); + lm_t.getId(), cm_t.getId(), pmts.getFirst().getId(), pmts.getSecond().getId()); if (dmtClnr.isPresent()) { dmtClnr.get().setRegistryStatus(RegistryStatus.OK.getKey()); setUpdatedStoreInImdg(dmtClnr.get(), now); @@ -349,7 +345,7 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { private SDf12 newSDf12(PaymentInstruction paymentInstruction) { log.debug("creating sdf12"); - SDf12 sDf12 = new SDf12(); //todo remove + SDf12 sDf12 = new SDf12(); sDf12.setId(idGenerator.nextId()); sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); @@ -357,7 +353,6 @@ public class FormingPaymentInstructionReturnMkr implements ISessionStage { sDf12.setSecurityCode(paymentInstruction.getCreditLeg_securityId().toString()); sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java index dfdd41500..12dfd1117 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecondaryT0.java @@ -55,7 +55,6 @@ import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; @@ -117,40 +116,29 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { .collect(Collectors.toList()); } - /** - * аккаунт-счет с accountType='TRAN' - это счет СПВБ который принадлежит самой бирже
- * хранят деньги разных участников
- * в сделке:
- * регистр CMAT кому переводить (registry.account)
- * регистр LMAT кто переводит деньги (registry.account)
- * в итоге создается 2 PaymentInstruction: LMAT -> TRAN счет -> CMAT счет - */ private StageResult formingPaymentInstructions(Long sessionId, Collection paymentInstructionReturns) { Collection registries = selectRegistries(); log.debug("found registries.size() = {}", registries.size()); - //клиринговый счет, через который будут проводиться сделки Account dtrnAcc = accountImdg.getFirstObjectBySQL("accountType = '%s' and status = '%s' and processingSign = '%s'" - .formatted(AccountType.Dtrn.getKey(), AccountStatus.ACTIVE.getKey(), Allowed.ALLOWED.getKey())); + .formatted(AccountType.Dtrn.getKey(), AccountStatus.ACTIVE.getKey(), Allowed.ALLOWED.getKey())); if (dtrnAcc == null) { return new StageResult<>( - new EnumMessage(ClearingError.AccountNotPresent, "accountType = " + AccountType.Dtrn.getKey()), - false); + new EnumMessage(ClearingError.AccountNotPresent, "accountType = " + AccountType.Dtrn.getKey()), + false); } log.debug("found dtrnAcc.id = {}", dtrnAcc.getId()); - //группируем регистры по groupId Map> groups = registries - .stream() - .collect(Collectors.groupingBy(Registry::getGroupId)); + .stream() + .collect(Collectors.groupingBy(Registry::getGroupId)); log.debug("groups.size = {}", groups.size()); List paymentInstructionDeals = new ArrayList<>(); for (Map.Entry> group : groups.entrySet()) { Long groupId = group.getKey(); Function findByCode = rgsCode -> group.getValue() - .stream() - .filter(rgs -> RegistryManager.equalsByCode(rgsCode, rgs)) - .findFirst() - .orElse(null); - //интересуют обязательства и требования по деньгам + .stream() + .filter(rgs -> RegistryManager.equalsByCode(rgsCode, rgs)) + .findFirst() + .orElse(null); Registry cs_t = findByCode.apply(CS_T); Registry ls_t = findByCode.apply(LS_T); if (cs_t == null || ls_t == null) { @@ -158,18 +146,17 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { continue; } { - //изменение активов - блокируем средства беред отправкой sdf'ов Optional amfO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_F); Optional payerAmtO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_T); Optional ambO = rgsMng.findRelatedAsset(ls_t.getTradingClearingRegistryId(), ls_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_B); Optional receiverAmtO = rgsMng.findRelatedAsset(cs_t.getTradingClearingRegistryId(), cs_t.getCompanyId(), ls_t.getSecuritySymbol(), AS_B); log.debug("changing A* registers based on LM_T.id={} and CM_T.id={} found AM*F.id={}, AM*T.id={}, AM*B.id={}, AM*B.id={}", - ls_t.getId(), - cs_t.getId(), - amfO.map(Registry::getId).orElse(null), - payerAmtO.map(Registry::getId).orElse(null), - ambO.map(Registry::getId).orElse(null), - receiverAmtO.map(Registry::getId).orElse(null) + ls_t.getId(), + cs_t.getId(), + amfO.map(Registry::getId).orElse(null), + payerAmtO.map(Registry::getId).orElse(null), + ambO.map(Registry::getId).orElse(null), + receiverAmtO.map(Registry::getId).orElse(null) ); Instant now = Instant.now(); amfO.ifPresent(amf -> { @@ -185,36 +172,35 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { setUpdatedStoreInImdg(amb, now); }); receiverAmtO.ifPresent(amt -> { - // у отправителя и получателя одинаково, см. в FormingPaymentInstruction amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(ls_t.getBalance()))); setUpdatedStoreInImdg(amt, now); }); } log.trace("generating payment instruction for groupId {} cmt_t {} ls_t {}", - groupId, - cs_t.getId(), - ls_t.getId()); + groupId, + cs_t.getId(), + ls_t.getId()); Pair pmtInstrs = PaymentInstructionBuilderFinalMkrDeals - .builder(imdgProvider) - .cm_t(cs_t) - .lm_t(ls_t) - .tranAcc(dtrnAcc) - .sessionId(sessionId) - .paymentPurpose("")//todo пока неизвестная формулировка - .build(); + .builder(imdgProvider) + .cm_t(cs_t) + .lm_t(ls_t) + .tranAcc(dtrnAcc) + .sessionId(sessionId) + .paymentPurpose("") + .build(); Pair.forEach(pmtInstrs, pmtInstr -> { paymentInstructionImdg.insert(pmtInstr); paymentInstructionDeals.add(pmtInstr); }); log.trace("generated PaymentInstructions for groupId {}: pmtInstr1.id={} pmtInstr2.id={}", - groupId, - pmtInstrs.getFirst().getId(), - pmtInstrs.getSecond().getId()); + groupId, + pmtInstrs.getFirst().getId(), + pmtInstrs.getSecond().getId()); } log.debug("PaymentInstructions return size {}, PaymentInstructions deals size {}. sending SDF03", - paymentInstructionReturns.size(), - paymentInstructionDeals.size()); + paymentInstructionReturns.size(), + paymentInstructionDeals.size()); List returnsAndDeals = Stream.concat(paymentInstructionReturns.stream(), paymentInstructionDeals.stream()).toList(); sendSdfs(returnsAndDeals, sessionId); StageResult> stageResult = new StageResult<>(null, true); @@ -286,7 +272,7 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { private SDf12 newSDf12(PaymentInstruction paymentInstruction) { log.debug("creating sdf12"); - SDf12 sDf12 = new SDf12(); //todo remove + SDf12 sDf12 = new SDf12(); sDf12.setId(idGenerator.nextId()); sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); @@ -297,7 +283,6 @@ public class FormingPaymentInstructionSecondaryT0 implements ISessionStage { } sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java index 6a10d19fd..e730cb472 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingPaymentInstructionSecurities.java @@ -65,7 +65,6 @@ import static ru.spcex.platform.utils.number.BigDecimalUtil.safeBD; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class FormingPaymentInstructionSecurities implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; @@ -146,31 +145,24 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { } - /** - * часть для бумаг по первичке IPO0 IPOT IPOB - * вторичка прошла идеально - * из нее нужно будет взять кусок про деньги - */ private StageResult formingPaymentInstructions(Long sessionId) { List paymentInstructionAll = new ArrayList<>(); Instant now = Instant.now(); { Collection registries = selectSecurityRegistries(sessionId); log.debug("found registries.size() = {}", registries.size()); - //группируем регистры по groupId Map> groups = registries - .stream() - .collect(Collectors.groupingBy(Registry::getGroupId)); + .stream() + .collect(Collectors.groupingBy(Registry::getGroupId)); log.debug("groups.size = {}", groups.size()); Map lstGroups = RegistryLiabilitiesGroup.group(groups); for (Map.Entry> group : groups.entrySet()) { Long groupId = group.getKey(); Function findByCode = rgsCode -> group.getValue() - .stream() - .filter(rgs -> RegistryManager.equalsByCode(rgsCode, rgs)) - .findFirst() - .orElse(null); - //интересуют обязательства и требования по деньгам + .stream() + .filter(rgs -> RegistryManager.equalsByCode(rgsCode, rgs)) + .findFirst() + .orElse(null); Registry cs_t = findByCode.apply(CS_T); Registry ls_t = findByCode.apply(LS_T); if (cs_t == null || ls_t == null) { @@ -184,10 +176,10 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { } Optional payerAstO = rgsMng.findRelatedAsset( - ls_t.getTradingClearingRegistryId(), - ls_t.getCompanyId(), - ls_t.getSecuritySymbol(), - AS_T + ls_t.getTradingClearingRegistryId(), + ls_t.getCompanyId(), + ls_t.getSecuritySymbol(), + AS_T ); payerAstO.ifPresent(as_t -> { log.debug("groupId {} cmt_t {} ls_t {} changing AS*T.id={} sender", groupId, cs_t, ls_t, as_t.getId()); @@ -195,10 +187,10 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { setUpdatedStoreInImdg(as_t, now); }); Optional receiverAstO = rgsMng.findRelatedAsset( - cs_t.getTradingClearingRegistryId(), - cs_t.getCompanyId(), - cs_t.getSecuritySymbol(), - AS_T + cs_t.getTradingClearingRegistryId(), + cs_t.getCompanyId(), + cs_t.getSecuritySymbol(), + AS_T ); receiverAstO.ifPresent(as_t -> { log.debug("groupId {} cmt_t {} ls_t {} changing AS*T.id={} receiver", groupId, cs_t, ls_t, as_t.getId()); @@ -208,29 +200,29 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { log.trace("generating payment instruction for groupId {} cmt_t {} ls_t {}, matched ls_t total {}, total balance {}, LS*T.id={}", - groupId, - cs_t.getId(), - ls_t.getId(), - ls_t_group.getLs_tRegistries().size(), - ls_t_group.getSum(), - ls_t_group.getLs_tRegistries().stream() - .map(Registry::getId) - .map(String::valueOf) - .collect(Collectors.joining(",", "[", "]")) + groupId, + cs_t.getId(), + ls_t.getId(), + ls_t_group.getLs_tRegistries().size(), + ls_t_group.getSum(), + ls_t_group.getLs_tRegistries().stream() + .map(Registry::getId) + .map(String::valueOf) + .collect(Collectors.joining(",", "[", "]")) ); PaymentInstruction pmt = PaymentInstructionBuilderForSecurities.builder(imdgProvider) - .ls_t(ls_t) - .creditLegAccountId(ls_t.getAccountId()) - .creditLegAccount(ls_t.getAccount()) - .debitLegAccountId(cs_t.getAccountId()) - .debitLegAccount(cs_t.getAccount()) - .sessionId(sessionId) - .sender(ls_t.getCompanyId()) - .addressee(cs_t.getCompanyId()) - .purpose("Перевод по итогу клиринга") - .amount(ls_t_group.getSum()) - .build(); + .ls_t(ls_t) + .creditLegAccountId(ls_t.getAccountId()) + .creditLegAccount(ls_t.getAccount()) + .debitLegAccountId(cs_t.getAccountId()) + .debitLegAccount(cs_t.getAccount()) + .sessionId(sessionId) + .sender(ls_t.getCompanyId()) + .addressee(cs_t.getCompanyId()) + .purpose("Перевод по итогу клиринга") + .amount(ls_t_group.getSum()) + .build(); paymentInstructionImdg.insert(pmt); paymentInstructionAll.add(pmt); @@ -240,17 +232,16 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { { Collection registries = selectMoneyRegistries(sessionId); Account dtrnAcc = accountImdg.getFirstObjectBySQL("accountType = '%s' and status = '%s' and processingSign = '%s'" - .formatted(AccountType.Dtrn.getKey(), AccountStatus.ACTIVE.getKey(), Allowed.ALLOWED.getKey())); + .formatted(AccountType.Dtrn.getKey(), AccountStatus.ACTIVE.getKey(), Allowed.ALLOWED.getKey())); if (dtrnAcc == null) { return new StageResult<>( - new EnumMessage(ClearingError.AccountNotPresent, "accountType = %s" - .formatted(AccountType.Dtrn.getKey())), - false); + new EnumMessage(ClearingError.AccountNotPresent, "accountType = %s" + .formatted(AccountType.Dtrn.getKey())), + false); } log.debug("found AM*B.size() = {}", registries.size()); - //группируем регистры по groupId for (Registry registry : registries) { Account tranAcc = accountImdg.getFirstObjectBySQL(("accountType = '%s'" + " and status = '%s'" + @@ -292,10 +283,10 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { creditLegAccount = counterAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); Optional payerAmtO = rgsMng.findRelatedAssetTran( - registry.getTradingClearingRegistryId(), - registry.getCompanyId(), - registry.getSecuritySymbol(), - AM_T); + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AM_T); payerAmtO.ifPresent(amt -> { amt.setSettledDebit(safeBD(amt.getSettledDebit()).add(safeBD(registry.getBalance().abs()))); setUpdatedStoreInImdg(amt, now); @@ -307,10 +298,10 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { creditLegAccount = tranAcc; amount = registry.getBalance() == null ? null : registry.getBalance().abs(); Optional payerAmtO = rgsMng.findRelatedAssetTran( - registry.getTradingClearingRegistryId(), - registry.getCompanyId(), - registry.getSecuritySymbol(), - AM_T + registry.getTradingClearingRegistryId(), + registry.getCompanyId(), + registry.getSecuritySymbol(), + AM_T ); payerAmtO.ifPresent(amt -> { amt.setSettledCredit(safeBD(amt.getSettledCredit()).add(safeBD(registry.getBalance().abs()))); @@ -318,15 +309,15 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { }); } PaymentInstructionBuilderV2 paymentInstructionBuilder = PaymentInstructionBuilderV2.builder(imdgProvider) - .registry(registry) - .sender(senderId) - .addressee(addresseeId) - .debitLegAccount(debitLegAccount) - .creditLegAccount(creditLegAccount) - .amount(amount) - .sessionId(sessionId) - .currency(registry.getSecuritySymbol()) - .purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry())); + .registry(registry) + .sender(senderId) + .addressee(addresseeId) + .debitLegAccount(debitLegAccount) + .creditLegAccount(creditLegAccount) + .amount(amount) + .sessionId(sessionId) + .currency(registry.getSecuritySymbol()) + .purpose(String.format("Перевод по итогу клиринга по ТКР %s", registry.getTradingClearingRegistry())); PaymentInstruction paymentInstruction = paymentInstructionBuilder.build(); log.debug("Created paymentInstruction by registry.id: {}", registry.getId()); paymentInstructionImdg.insert(paymentInstruction); @@ -408,7 +399,7 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { private SDf12 newSDf12(PaymentInstruction paymentInstruction) { log.debug("creating sdf12"); - SDf12 sDf12 = new SDf12(); //todo remove + SDf12 sDf12 = new SDf12(); sDf12.setId(idGenerator.nextId()); sDf12.setOutDocument(sDf12.getId().toString()); sDf12.setDirection("DELFREE"); @@ -419,7 +410,6 @@ public class FormingPaymentInstructionSecurities implements ISessionStage { } sDf12.setDepoCodeSender(paymentInstruction.getCreditLeg_account()); sDf12.setDepoCodeAdressee(paymentInstruction.getDebitLeg_account()); -// sDf12.setTransactionNumber(); sDf12.setGenerationTime(Instant.now()); return sDf12; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingRegistersOnOS.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingRegistersOnOS.java index 932ea2551..11bc079a5 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingRegistersOnOS.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/FormingRegistersOnOS.java @@ -53,12 +53,6 @@ public class FormingRegistersOnOS implements ISessionStage { } } - /** - * Select Registry by: registryCode = [O/T][S/M][*][T] & registryStatus=OK - * - * @return - * @param sessionId - */ protected Collection selectRegistry(Long sessionId) { String registrySQL = "(registryDesignation=" + RegistryDesignation.O.getKey() + " or registryDesignation=" + RegistryDesignation.T.getKey() + ")"; registrySQL += " and (registryInstrumentType=" + RegistryInstrumentType.S.getKey() + " or registryInstrumentType=" + RegistryInstrumentType.M.getKey() + ")"; @@ -74,15 +68,12 @@ public class FormingRegistersOnOS implements ISessionStage { Collection forRegistries = selectRegistry(sessionId); ArrayList newRegistries = new ArrayList<>(); - //todo oreder by обрабатываться группами по полю registry.groupId - //todo при перезапуске после незапланированного завершения стадии: надо ли проверять уже созданные регистры и не создавать дубликаты? - for (Registry registry : forRegistries) { Registry newRegistry = createRegistryFor(registry); newRegistries.add(newRegistry); registryImdg.insert(newRegistry); log.trace("For registry {} (registryCode={}) make new registry {} (registryCode={})", - registry.getId(), registry.getRegistryCode(), newRegistry.getId(), newRegistry.getRegistryCode()); + registry.getId(), registry.getRegistryCode(), newRegistry.getId(), newRegistry.getRegistryCode()); } StageResult> res = new StageResult<>(null, true); @@ -107,16 +98,6 @@ public class FormingRegistersOnOS implements ISessionStage { } newRegistry.setRegistryDesignation(newRegDestination); -// String newRegistryInstrumentType; // по ТЗ не меняется -// if (RegistryInstrumentType.S.equalsByKey(forRegistry.getRegistryInstrumentType())) { -// newRegistryInstrumentType = RegistryInstrumentType.S.getKey(); -// } else if (RegistryInstrumentType.M.equalsByKey(forRegistry.getRegistryInstrumentType())) { -// newRegistryInstrumentType = RegistryInstrumentType.M.getKey(); -// } else { -// throw new IllegalArgumentException("RegistryInstrumentType=" + forRegistry.getRegistryInstrumentType()); -// } -// newRegistry.setRegistryInstrumentType(newRegistryInstrumentType); - newRegistry.setRegistryCode(RegistryUtil.clearingCode(newRegistry)); return newRegistry; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayBatchRequester.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayBatchRequester.java index 4ac6a5f71..924e2462a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayBatchRequester.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayBatchRequester.java @@ -75,7 +75,6 @@ public class GatewayBatchRequester extends QueueConsumer implements Initializing log.error("{}.kafkaReqId={} already sent to gateway", getName(), this.kafkaReqId); throw new IllegalStateException(" forbid reusing GatewayRequester instance in multiple threads"); } - //send Request AssetOperationListRequest assetOperationListRequest = new AssetOperationListRequest(); assetOperationListRequest.setAssetOperationRequests(requests); this.kafkaReqId = kafkaSender.sendRequestToQueue(Consts.ASSET_OPERATION, assetOperationListRequest); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayRequester.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayRequester.java index 556c841b0..91139fa1a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayRequester.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/GatewayRequester.java @@ -74,7 +74,6 @@ public class GatewayRequester extends QueueConsumer implements InitializingBean log.error("{}.id={} already sent to gateway", getName(), this.omtId); throw new IllegalStateException(" forbid reusing GatewayRequester instance in multiple threads"); } - //send Request AssetOperationListRequest assetOperationListRequest = new AssetOperationListRequest(); Collection requests = new ArrayList<>(); AssetOperationRequest req = reqBuilder.get(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java index 877044b98..513e5df2e 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InclusionObligations.java @@ -45,7 +45,6 @@ import ru.spcex.platform.utils.text.TextUtil; @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class InclusionObligations implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); - //todo remove (set all in single method setImdg(provider -> setImdg1();setIdGenerator();...) private ImdgProvider imdgProvider; private ImdgId idGenerator; private Imdg registryImdg; @@ -70,12 +69,6 @@ public class InclusionObligations implements ISessionStage { this.rgsPb = registryImdg.predicateBuilder(); } - /** - * для сессии возврата депозитов статус регистров - * proc ИЛИ mng - * proc не захардкожен для случая дополнительных условий - * указывать обязательно если есть дополнительные условия - */ public InclusionObligations addRegistryCondition(ImdgPredicate imdgPredicate) { this.registryConditions.add(imdgPredicate); return this; @@ -105,7 +98,6 @@ public class InclusionObligations implements ISessionStage { ImdgPredicateBuilder prdctBuilder = registryImdg.predicateBuilder(); ImdgPredicate defaultCondition = prdctBuilder.sql(sqlCondition); if (sessionType != null) { - //не всегда нужное условие defaultCondition = prdctBuilder.and(defaultCondition, sessionTypePredicate()); } ImdgPredicate registryPredicate; @@ -160,8 +152,6 @@ public class InclusionObligations implements ISessionStage { case IPO0, IPOB, TRDT, IPOT -> execImdg = (Imdg) executionFondImdg; case CURR -> execImdg = (Imdg) executionCurrImdg; default -> { - //кейс для "общих" сессий (напр. UNIT) в которых сочетаются разные сделки - //смотрим на секцию регистра. Section section; if ((section = IEnumKey.getEnumByKey(Section.class, rgsSection)) != null) { if (section.equals(Section.MKR)) execImdg = (Imdg) executionDepositImdg; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java index 290b09cef..a45aa81fe 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligations.java @@ -185,22 +185,21 @@ public class InspectionObligations implements ISessionStage { defineStatusAndUpdateRegistry(checkResults, group); if (checkResults.stream().noneMatch(checkResult -> checkResult.isUncovered)) { Instant now = Instant.now(); - //по каждому регистру OM*T, TM*T, OS*T, TS*T из одной группы - for (Registry registry : group) {//TODO CLRNWORM проверка на пустой blockedRegistry + for (Registry registry : group) { { RegistryInstrumentType mOrS = IEnumKey.getEnumByKey(RegistryInstrumentType.class, registry.getRegistryInstrumentType()); if (mOrS == null) continue; Optional a__t = assets.searchByTcrCompanyAccount(registry, A__T.type(mOrS)); Optional a__b = a__t.map(a__tFound -> assets - .searchByTcrCompanyAccount(a__tFound, A__B.type(mOrS)) - .orElseGet(() -> copyB(a__tFound))); + .searchByTcrCompanyAccount(a__tFound, A__B.type(mOrS)) + .orElseGet(() -> copyB(a__tFound))); Optional a__f = a__t.map(a__tFound -> assets - .searchByTcrCompanyAccount(a__tFound, A__F.type(mOrS)) - .orElseGet(() -> copyF(a__tFound))); + .searchByTcrCompanyAccount(a__tFound, A__F.type(mOrS)) + .orElseGet(() -> copyF(a__tFound))); log.debug("registry {}.id={}: {}", registry.getRegistryCode(), registry.getId(), - a__t.map(r -> "A**T.id=%d/A**B.id=%d/A**F.id=%d" - .formatted(a__t.get().getId(), a__b.get().getId(), a__f.get().getId())) - .orElse("A**T/A**B/A**F not found")); + a__t.map(r -> "A**T.id=%d/A**B.id=%d/A**F.id=%d" + .formatted(a__t.get().getId(), a__b.get().getId(), a__f.get().getId())) + .orElse("A**T/A**B/A**F not found")); if (a__t.isPresent()) { BigDecimal amount = safeBD(registry.getBalance()); if (IEnumKey.getEnumByKey(RegistryDesignation.class, registry.getRegistryDesignation()) == RegistryDesignation.O) { @@ -276,8 +275,8 @@ public class InspectionObligations implements ISessionStage { if (isOneUncovered) { for (CheckResult checkResult : checkResults) { Optional tRegistryWithSameCompany = registries.stream().filter(registry -> - registry.getCompanyId().equals(checkResult.registry.getCompanyId()) && - !registry.getRegistryDesignation().equals(checkResult.registry.getRegistryDesignation()) + registry.getCompanyId().equals(checkResult.registry.getCompanyId()) && + !registry.getRegistryDesignation().equals(checkResult.registry.getRegistryDesignation()) ).findFirst(); checkResult.registry.setComment(commentErr); if (checkResult.isUncovered) { @@ -288,7 +287,6 @@ public class InspectionObligations implements ISessionStage { tRegistryWithSameCompany.ifPresent(registry -> updateRegistryStatus(registry, failStatus())); } } - //проверяем есть ли второй день для сделки (он не входит в пул, поэтому ищем отдельно) getRefundDateRgsIfPresent(registries).forEach(rgs -> updateRegistryStatus(rgs, RegistryStatus.FAIL)); } else { registries.forEach(registry -> updateRegistryStatus(registry, RegistryStatus.OK)); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java index a567bff40..cf2d03659 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/InspectionObligationsDepositReturn.java @@ -112,35 +112,29 @@ public class InspectionObligationsDepositReturn implements ISessionStage { Optional tmtInGroupO = group.stream().filter(registry -> equalByRgs(TM_T, registry)).findFirst(); if (omtInGroupO.isEmpty() || tmtInGroupO.isEmpty()) { log.error("groupId {} failed to find OM*T/TM*T registry", entry.getKey()); - group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); // FAIL or MNG + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); continue; } Registry omtRgs = omtInGroupO.get(); Registry tmtRgs = tmtInGroupO.get(); log.debug("groupId={}, OM*T.id={}", entry.getKey(), omtRgs.getId()); BigDecimal omtBalance = safeBD(omtRgs.getBalance()); - - //первая часть сделки депозита if (omtRgs.getValueDate() == null - || omtRgs.getSettlementDate() == null - || !omtRgs.getValueDate().isBefore(omtRgs.getSettlementDate())) { + || omtRgs.getSettlementDate() == null + || !omtRgs.getValueDate().isBefore(omtRgs.getSettlementDate())) { continue; } - - //вторая часть сделки - возврат депозита Optional dmx = rgsMng.searchDmxByCounterParty(omtRgs); if (dmx.isPresent()) { BigDecimal dmxBalance = safeBD(dmx.get().getBalance()); log.debug("OM*T.id={} -> DM*X.id={}, dmxBalance={}, omtBalance={}", - omtRgs.getId(), - dmx.get().getId(), - dmxBalance, omtBalance + omtRgs.getId(), + dmx.get().getId(), + dmxBalance, omtBalance ); if (dmxBalance.compareTo(omtBalance) >= 0) { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); -// updateStatus(dmx.get(), RegistryStatus.POOL); } else { - //для OM*T uncovered остальным фейл group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs))); updateStatus(dmx.get(), RegistryStatus.UNCV); } @@ -151,12 +145,12 @@ public class InspectionObligationsDepositReturn implements ISessionStage { Optional amfAssetReceiverO = searchAssetByOMT(tmtRgs); if (amfAssetO.isEmpty()) { log.error("OM*T register.id={} groupId={} failed to find AM*F asset", omtRgs.getId(), entry.getKey()); - group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); // FAIL or MNG + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); continue; } if (amfAssetReceiverO.isEmpty()) { log.error("TM*T register.id={} groupId={} failed to find AM*F asset", tmtRgs.getId(), entry.getKey()); - group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); // FAIL or MNG + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed())); continue; } @@ -174,29 +168,27 @@ public class InspectionObligationsDepositReturn implements ISessionStage { if (dmtInfo.isPresent()) { BigDecimal dmtBalance = safeBD(dmtInfo.get().getBalance()); log.debug("OM*T.id={} -> DM*T(INFO).id={}, dmtBalance={}, omtBalance={}, amfBalance={}", - omtRgs.getId(), - dmtInfo.get().getId(), - dmtBalance, omtBalance, amfBalance - ); - if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >=0) { - group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); - processAssetsAndSetSessionId.accept(amfAsset, omtBalance.negate()); - processAssetsAndSetSessionId.accept(amfAssetReceiverO.get(), omtBalance); -// updateStatus(dmtInfo.get(), RegistryStatus.POOL); - continue; - } else if (SessionType.XDEP.equals(sessionType)) { - group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs))); // для финальной UNCV or FAIL ; другие MNG -// updateStatus(dmtInfo.get(), RegistryStatus.UNCV); не меняет статус, статус определяется OM*T - continue; - } - } - Optional dmtClnr = rgsMng.searchDmtClrn(omtRgs); - if (dmtClnr.isPresent()) { - BigDecimal dmtBalance = safeBD(dmtClnr.get().getBalance()); - log.debug("OM*T.id={} -> DM*T(CLNR).id={}, dmtBalance={}, omtBalance={}, amfBalance={}", - omtRgs.getId(), - dmtClnr.get().getId(), - dmtBalance, omtBalance, amfBalance + omtRgs.getId(), + dmtInfo.get().getId(), + dmtBalance, omtBalance, amfBalance + ); + if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >= 0) { + group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); + processAssetsAndSetSessionId.accept(amfAsset, omtBalance.negate()); + processAssetsAndSetSessionId.accept(amfAssetReceiverO.get(), omtBalance); + continue; + } else if (SessionType.XDEP.equals(sessionType)) { + group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs))); + continue; + } + } + Optional dmtClnr = rgsMng.searchDmtClrn(omtRgs); + if (dmtClnr.isPresent()) { + BigDecimal dmtBalance = safeBD(dmtClnr.get().getBalance()); + log.debug("OM*T.id={} -> DM*T(CLNR).id={}, dmtBalance={}, omtBalance={}, amfBalance={}", + omtRgs.getId(), + dmtClnr.get().getId(), + dmtBalance, omtBalance, amfBalance ); if (dmtBalance.compareTo(omtBalance) >= 0 && amfBalance.compareTo(omtBalance) >= 0) { group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); @@ -205,23 +197,22 @@ public class InspectionObligationsDepositReturn implements ISessionStage { continue; } else if (SessionType.XDEP.equals(sessionType)) { group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs))); -// updateStatus(dmtClnr.get(), RegistryStatus.UNCV); не меняет статус, статус определяется OM*T continue; } } if ((SessionType.FINL.equals(sessionType) || SessionType.UNIT.equals(sessionType)) - && amfBalance.compareTo(omtBalance) >= 0 - && initiatorV(omtRgs) && gatewayIfNeeded(omtRgs)) { + && amfBalance.compareTo(omtBalance) >= 0 + && initiatorV(omtRgs) && gatewayIfNeeded(omtRgs)) { log.debug("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. " + - "FINL, initiator.category='V' and am*f > om*t: setting OK status to group", - omtRgs.getId()); + "FINL, initiator.category='V' and am*f > om*t: setting OK status to group", + omtRgs.getId()); group.forEach(rgs -> updateStatus(rgs, RegistryStatus.OK)); processAssetsAndSetSessionId.accept(amfAsset, omtBalance.negate()); processAssetsAndSetSessionId.accept(amfAssetReceiverO.get(), omtBalance); } else { log.info("OM*T.id={} -> no DM*X/DM*T(INFO/CLRN) registry found. setting {} status to group", - omtRgs.getId(), registryStatusFailed()); + omtRgs.getId(), registryStatusFailed()); group.forEach(rgs -> updateStatus(rgs, registryStatusFailed(rgs))); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/PlanBalanceCalc.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/PlanBalanceCalc.java index c1c51a30c..2cb269472 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/PlanBalanceCalc.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/PlanBalanceCalc.java @@ -31,26 +31,17 @@ public class PlanBalanceCalc { } public void stageRevision2(Long sessionId) { - /* todo logic - Collection rgsAT = findRegistryATBySession // registry_disignation=A and registry_unit=T -Collection rgsAB = findRegistryATBySession // registry_disignation=A and registry_unit=B and sessionId = current - -foreach( at: rgsAT) - foreach (ab: rgsAB) - if (at.companyId=ab.companyId and at.accountId=ab.accountId and at.securityId=ab.securityId) - at.plannecBallance -= ab.balance - */ String sqlAT = RegistryCodeSqlBuilder.getInstance(A__T).build(); String sqlAB = String.format("(%s) and sessionId = %d", - RegistryCodeSqlBuilder.getInstance(A__B).build(), - sessionId + RegistryCodeSqlBuilder.getInstance(A__B).build(), + sessionId ); Collection registriesAT = rgsImdg.getCollectionObjectsBySQL(sqlAT); Collection registriesAB = rgsImdg.getCollectionObjectsBySQL(sqlAB); log.debug("Select {} registers by \"{}\", {} registers by \"{}\" for revision step 2", - registriesAT.size(), sqlAT, registriesAB.size(), sqlAB); + registriesAT.size(), sqlAT, registriesAB.size(), sqlAB); Map, List> regABIndex = registriesAB.stream().collect(Collectors.groupingBy( - (Registry reg) -> new MutableTriple(reg.getCompanyId(), reg.getAccountId(), reg.getSecurityId()) + (Registry reg) -> new MutableTriple(reg.getCompanyId(), reg.getAccountId(), reg.getSecurityId()) )); int updateCount = 0; Instant now = Instant.now(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryCurrBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryCurrBuilder.java index 0707a10ff..93fa2c032 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryCurrBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryCurrBuilder.java @@ -115,16 +115,6 @@ public class RegistryCurrBuilder implements IRegistryBuilder { reg.setFullName(company.getFullName()); TradingClearingRegistry tcr = searchTradingClearingRegistry(); String capacityByAccount = null; - - //In: execution_currency (SECURITY_SYMBOL: CNYRUB_TOM_C, securityId-->registry.contract) - // C securityId идем в currency_pair_security, чтобы найти currency_pair_id - // C currency_pair_id идем currency_pair_dictionary для базовой base_currency_id [CNY], и обменная в чем торги quote_currency_id [RUB] - //3.1 Для side=Buy - //OM_T = RUB [quote_currency_id] balance=settlement_ammount - //TM_T = CNY [base_currency_id] balance=quantity - //3.2 для side=Sell - //OM_T = CNY [base_currency_id] balance=quantity - //TM_T = RUB [quote_currency_id] balance=settlement_ammount reg.setContract(String.valueOf(exec.getSecurityId())); CurrencyPairSecurity curPairSec = currPairSecImdg.getFirstObjectBySQL( "id = %d".formatted(exec.getSecurityId()) @@ -135,9 +125,7 @@ public class RegistryCurrBuilder implements IRegistryBuilder { } assert curPairSec != null && curPairDict != null; ExecutionCurrency execCurr = (ExecutionCurrency) this.exec; - //что покупают String baseCurrency = curPairDict.getBaseCurrency(); - //за что покупают String quoteCurrency = curPairDict.getQuoteCurrency(); reg.setRegistryInstrumentType(RegistryInstrumentType.M.getKey()); reg.setBalanceDimension(BalanceDimension.MONY.getKey()); @@ -173,18 +161,6 @@ public class RegistryCurrBuilder implements IRegistryBuilder { reg.setTradingClearingRegistryId(exec.getTradingClearingRegistryId()); reg.setTradingClearingRegistry(tcr.getCode()); reg.setRegistryStatus(RegistryStatus.PROC.getKey()); -// if (isMoney) { -// Security security = scrSlctr.selectSecurityById(execFond.getSecurityId()); -// if (InstrumentType.BOND.equalsByKey(security.getInstrumentType())) { -// BigDecimal stlAmt = safeBD(execFond.getSettlementAmount()); -// BigDecimal intAmt = safeBD(execFond.getInterestAmount()); -// reg.setBalance(stlAmt.add(intAmt.setScale(2, RoundingMode.HALF_UP))); -// } else { -// reg.setBalance(execFond.getSettlementAmount()); -// } -// } else { -// reg.setBalance(execFond.getQuantity()); -// } reg.setSettlementDate(execCurr.getSettlementDate()); reg.setValueDate(execCurr.getSettlementDate()); @@ -201,11 +177,9 @@ public class RegistryCurrBuilder implements IRegistryBuilder { } private Long groupId() { -// Market market = marketImdg.getFirstObjectBySQL("code = '" + exec.getMarket() + "'"); return exec.getExchangeExecutionId(); } - //можно передать из стейджа private String sessionType() { Session session = sessionImdg.getSingleObjectByID(exec.getSessionId()); return session.getSessionType(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java index ee02d74da..89937fea2 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryDepoBuilder.java @@ -162,11 +162,9 @@ public class RegistryDepoBuilder implements IRegistryBuilder { } private Long groupId() { -// Market market = marketImdg.getFirstObjectBySQL("code = '" + exec.getMarket() + "'"); return exec.getExchangeExecutionId(); } - //можно передать из стейджа private String sessionType() { Session session = sessionImdg.getSingleObjectByID(exec.getSessionId()); return session.getSessionType(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java index c834be1a5..60da45768 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RegistryFondBuilder.java @@ -114,7 +114,7 @@ public class RegistryFondBuilder implements IRegistryBuilder { reg.setAccountId(tcr.getMoneyAccountId()); account = accountImdg.getSingleObjectByID(tcr.getMoneyAccountId()); reg.setRegistryInstrumentType(RegistryInstrumentType.M.getKey()); - reg.setBalanceDimension(BalanceDimension.MONY.getKey()); //fixme add second leg code branch + reg.setBalanceDimension(BalanceDimension.MONY.getKey()); Currency currency = currencyImdg.getFirstObjectByFieldValues(Map.of("currencyCode", exec.getSettlementCurrency())); reg.setSecurityId(currency.getId()); reg.setSecuritySymbol(currency.getCurrencyCode()); @@ -129,7 +129,7 @@ public class RegistryFondBuilder implements IRegistryBuilder { capacityByAccount = depoAccount.getDepoAccountType(); } reg.setRegistryInstrumentType(RegistryInstrumentType.S.getKey()); - reg.setBalanceDimension(BalanceDimension.PICS.getKey()); //fixme add second leg code branch + reg.setBalanceDimension(BalanceDimension.PICS.getKey()); reg.setSecurityId(exec.getSecurityId()); reg.setSecuritySymbol(exec.getSecuritySymbol()); } @@ -176,11 +176,9 @@ public class RegistryFondBuilder implements IRegistryBuilder { } private Long groupId() { -// Market market = marketImdg.getFirstObjectBySQL("code = '" + exec.getMarket() + "'"); return exec.getExchangeExecutionId(); } - //можно передать из стейджа private String sessionType() { Session session = sessionImdg.getSingleObjectByID(exec.getSessionId()); return session.getSessionType(); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java index 8d8fa8ab0..c30e5ee72 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreation.java @@ -39,9 +39,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import ru.spcex.platform.imdg.api.predicate.specific.RegistryCodeSqlBuilder; import ru.spcex.platform.utils.collection.Pair; -/** - * LiabilitiesAndClaims - */ @Service @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class RequirementsAndObligationCreation implements ISessionStage { @@ -67,7 +64,6 @@ public class RequirementsAndObligationCreation implements ISessionStage { protected StageResult createRegisters(List data) { data.sort(Comparator.comparing(ExecutionCommon::getExchangeExecutionId)); - //см. описание к #matchExecutions for (int i = 0; i < data.size(); ) { Pair matched = matchExecutions(data, i); if (matched == null) { @@ -79,36 +75,33 @@ public class RequirementsAndObligationCreation implements ISessionStage { i += 2; ExecutionCommon partyExec = matched.getFirst(); ExecutionCommon counterExec = matched.getSecond(); - //бывает поиск обычный, бывает по ExecutionDeposit.secondLegSettlementDt AtomicReference>> regSearchMethod = new AtomicReference<>(); - //обычный поиск regSearchMethod.set(this::findReg); TriConsumer findAndUpdateOrCreate = (exec, regDsgn, returnedDep) -> - regSearchMethod.get().apply(exec, regDsgn) - .ifPresentOrElse(registry -> { - RegistryUpdater.updater() - .exec(exec) - .registry(registry) - .update(); - registryImdg.update(registry); - log.debug("executions id {} and {}: updated rgs.id={}", partyExec.getId(), counterExec.getId(), registry.getId()); - }, () -> { - IRegistryBuilder registryBuilder = defineBuilderByExecType(partyExec.type()); - Registry newRegister = registryBuilder - .imdg(imdgProvider) - .exec(exec) - .registryDesignation(regDsgn) - .returnDeposit(returnedDep) - .build(); - registryImdg.insert(newRegister); - log.debug("executions id {} and {}: created rgs.id={}", partyExec.getId(), counterExec.getId(), newRegister.getId()); - }); + regSearchMethod.get().apply(exec, regDsgn) + .ifPresentOrElse(registry -> { + RegistryUpdater.updater() + .exec(exec) + .registry(registry) + .update(); + registryImdg.update(registry); + log.debug("executions id {} and {}: updated rgs.id={}", partyExec.getId(), counterExec.getId(), registry.getId()); + }, () -> { + IRegistryBuilder registryBuilder = defineBuilderByExecType(partyExec.type()); + Registry newRegister = registryBuilder + .imdg(imdgProvider) + .exec(exec) + .registryDesignation(regDsgn) + .returnDeposit(returnedDep) + .build(); + registryImdg.insert(newRegister); + log.debug("executions id {} and {}: created rgs.id={}", partyExec.getId(), counterExec.getId(), newRegister.getId()); + }); findAndUpdateOrCreate.accept(partyExec, RegistryDesignation.O, false); findAndUpdateOrCreate.accept(partyExec, RegistryDesignation.T, false); findAndUpdateOrCreate.accept(counterExec, RegistryDesignation.O, false); findAndUpdateOrCreate.accept(counterExec, RegistryDesignation.T, false); if (partyExec.type().equals(ExecutionType.ExecutionDeposit) && ((ExecutionDeposit) partyExec).getSecondLegSettlementDate() != null) { - //поиск по дате расчетов ExecutionDeposit.secondLegSettlementDt regSearchMethod.set(this::findRegBySettlementDt); findAndUpdateOrCreate.accept(partyExec, RegistryDesignation.T, true); findAndUpdateOrCreate.accept(partyExec, RegistryDesignation.O, true); @@ -125,29 +118,29 @@ public class RequirementsAndObligationCreation implements ISessionStage { RegistryTradingParams p; if (side.isBuy() && des.equals(RegistryDesignation.O)) { p = new RegistryTradingParams( - RegistryDesignation.O, RegistryInstrumentType.M, null, RegistryUnit.T + RegistryDesignation.O, RegistryInstrumentType.M, null, RegistryUnit.T ); } else if (side.isBuy() && des.equals(RegistryDesignation.T)) { p = new RegistryTradingParams( - RegistryDesignation.T, RegistryInstrumentType.S, null, RegistryUnit.T + RegistryDesignation.T, RegistryInstrumentType.S, null, RegistryUnit.T ); } else if (side.isSell() && des.equals(RegistryDesignation.O)) { p = new RegistryTradingParams( - RegistryDesignation.O, RegistryInstrumentType.S, null, RegistryUnit.T + RegistryDesignation.O, RegistryInstrumentType.S, null, RegistryUnit.T ); } else if (side.isSell() && des.equals(RegistryDesignation.T)) { p = new RegistryTradingParams( - RegistryDesignation.T, RegistryInstrumentType.M, null, RegistryUnit.T + RegistryDesignation.T, RegistryInstrumentType.M, null, RegistryUnit.T ); } else { throw new IllegalStateException("cannot construct for " + des + " " + side); } return imdgRegSearch(p, - exec.getTradingClearingRegistryId(), - exec.getCompanyId(), - settlementDt(exec), - exec.getSessionId(), - exec.getExchangeExecutionId() + exec.getTradingClearingRegistryId(), + exec.getCompanyId(), + settlementDt(exec), + exec.getSessionId(), + exec.getExchangeExecutionId() ); } @@ -158,29 +151,29 @@ public class RequirementsAndObligationCreation implements ISessionStage { RegistryTradingParams p; if (side.isBuy() && des.equals(RegistryDesignation.T)) { p = new RegistryTradingParams( - RegistryDesignation.T, RegistryInstrumentType.M, RegistryCapacity.A, RegistryUnit.T + RegistryDesignation.T, RegistryInstrumentType.M, RegistryCapacity.A, RegistryUnit.T ); } else if (side.isBuy() && des.equals(RegistryDesignation.O)) { p = new RegistryTradingParams( - RegistryDesignation.O, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.T + RegistryDesignation.O, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.T ); } else if (side.isSell() && des.equals(RegistryDesignation.O)) { p = new RegistryTradingParams( - RegistryDesignation.O, RegistryInstrumentType.M, RegistryCapacity.A, RegistryUnit.T + RegistryDesignation.O, RegistryInstrumentType.M, RegistryCapacity.A, RegistryUnit.T ); } else if (side.isSell() && des.equals(RegistryDesignation.T)) { p = new RegistryTradingParams( - RegistryDesignation.T, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.T + RegistryDesignation.T, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.T ); } else { throw new IllegalStateException("cannot construct by settleDt for " + des + " " + side); } return imdgRegSearch(p, - exec.getTradingClearingRegistryId(), - exec.getCompanyId(), - ((ExecutionDeposit) exec).getSecondLegSettlementDate(), - exec.getSessionId(), - exec.getExchangeExecutionId()); + exec.getTradingClearingRegistryId(), + exec.getCompanyId(), + ((ExecutionDeposit) exec).getSecondLegSettlementDate(), + exec.getSessionId(), + exec.getExchangeExecutionId()); } public Optional imdgRegSearch(RegistryTradingParams p, Long tcrId, Long companyId, LocalDate settlementDt, @@ -188,11 +181,11 @@ public class RequirementsAndObligationCreation implements ISessionStage { String sql = RegistryCodeSqlBuilder.getInstance(p).build(); ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate rgstrPredicate = pb.and(pb.sql(sql), - pb.equals("tradingClearingRegistryId", tcrId), - pb.equals("companyId", companyId), - pb.equals("settlementDate", settlementDt), - pb.equals("sessionId", sessionId), - pb.equals("groupId", exchangeExecutionId) + pb.equals("tradingClearingRegistryId", tcrId), + pb.equals("companyId", companyId), + pb.equals("settlementDate", settlementDt), + pb.equals("sessionId", sessionId), + pb.equals("groupId", exchangeExecutionId) ); Registry rgs = registryImdg.getSingleObjectByPredicate(rgstrPredicate); log.trace("rgs.id={} found by: {}", rgs == null ? "'not found'" : rgs.getId(), rgstrPredicate.toString()); @@ -212,24 +205,12 @@ public class RequirementsAndObligationCreation implements ISessionStage { } - /** - * входные данные отсортированы по exchangeExecutionId. - * сортировка выполнена на предыдущем шаге. (такое описание шагов в ТЗ) - * по идее, Execution с одинаковым exchangeExecutionId должно быть всего два. - * если это не так, передалать на коллекцию Long executionId в правильном порядке - * и для каждого искать мэтч отдельно в Imdg, с сохранением уже обработанных для избежания дублирования - */ protected Pair matchExecutions(List data, int i) { - //if the last execution, then no match if (i >= data.size() - 1) { return null; } ExecutionCommon exec1 = data.get(i); ExecutionCommon exec2 = data.get(i + 1); - //Встречная сделка контрагента выбирается из executionDeposit/Fond по условию: - //exchangeExecutionId=currentExecutionDeposit/Fond.exchangeExecutionId - //и [side=SELL (если currentExecutionDeposit/Fond.side=BUY) или side=BUY (если currentExecutionDeposit/Fond.side=SELL) по справочнику moneyFlowSide или справочнику side в зависимости от секции обрабатываемой сделки] - //и companyId=currentExecutionDeposit/Fond.counterPartyId String invalid = null; if (!Objects.equals(exec1.getExchangeExecutionId(), exec2.getExchangeExecutionId())) { invalid = String.format("exchangeExecutionId %d and %d not equal", exec1.getExchangeExecutionId(), exec2.getExchangeExecutionId()); @@ -237,7 +218,7 @@ public class RequirementsAndObligationCreation implements ISessionStage { invalid = String.format("side %s and %s equal, must be opposite", getSide(exec1), getSide(exec1)); } else if (!Objects.equals(exec1.getCompanyId(), exec2.getCounterPartyId()) || !Objects.equals(exec1.getCounterPartyId(), exec2.getCompanyId())) { invalid = String.format("Execution#id(%d)#companyId(%d)#counterPartyId(%d), Execution#id(%d)#companyId(%d)#counterPartyId(%d)", - exec1.getId(), exec1.getCompanyId(), exec1.getCounterPartyId(), exec2.getId(), exec2.getCompanyId(), exec2.getCounterPartyId()); + exec1.getId(), exec1.getCompanyId(), exec1.getCounterPartyId(), exec2.getId(), exec2.getCompanyId(), exec2.getCounterPartyId()); } if (invalid != null) { log.error("FATAL couldn't match Execution#id({}) with Execution#id({}) error: {}", exec1.getId(), exec2.getId(), invalid); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreationCompound.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreationCompound.java index 551d65538..4e220412a 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreationCompound.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/RequirementsAndObligationCreationCompound.java @@ -21,9 +21,6 @@ import ru.spcex.platform.classes.base.interfaces.ExecutionType; import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.utils.collection.Pair; -/** - * LiabilitiesAndClaims - */ @Service @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class RequirementsAndObligationCreationCompound extends RequirementsAndObligationCreation { @@ -61,7 +58,7 @@ public class RequirementsAndObligationCreationCompound extends RequirementsAndOb int eds = executionDeposit.size(); int ecs = executionCurrency.size(); - int[] ief= {0}, ied= {0}, iec= {0}; + int[] ief = {0}, ied = {0}, iec = {0}; while (ief[0] < efs || ied[0] < eds || iec[0] < ecs) { Pair pair = getMinTimeExecutions( safeMatch(executionFond, ief), @@ -85,7 +82,6 @@ public class RequirementsAndObligationCreationCompound extends RequirementsAndOb i[0]++; return null; } -// i[0] += 2; return pair; } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/UnlockResources.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/UnlockResources.java index 837461e73..84ab9892c 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/UnlockResources.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/impl/UnlockResources.java @@ -28,7 +28,6 @@ import java.util.Collection; @Service @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Deprecated -//не должен использоваться как stage в сессии, данная логика перенесена в statementService public class UnlockResources implements ISessionStage { private final Logger log = LoggerFactory.getLogger(getClass()); @@ -64,11 +63,10 @@ public class UnlockResources implements ISessionStage { ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate query = pb.and( pb.and( - pb.equals("registryDesignation", RegistryDesignation.A.getKey()), - pb.equals("registryInstrumentType", RegistryInstrumentType.M.getKey()), - // pb.equals("registryCapacity", *), - pb.or(pb.equals("registryUnit", RegistryUnit.F.getKey()), - pb.equals("registryUnit", RegistryUnit.B.getKey())) + pb.equals("registryDesignation", RegistryDesignation.A.getKey()), + pb.equals("registryInstrumentType", RegistryInstrumentType.M.getKey()), + pb.or(pb.equals("registryUnit", RegistryUnit.F.getKey()), + pb.equals("registryUnit", RegistryUnit.B.getKey())) ), pb.equals("account", account), pb.in("fullName", fullNames.toArray(new String[fullNames.size()])) @@ -79,21 +77,17 @@ public class UnlockResources implements ISessionStage { return result; } - /** - * Select Registry by: account; fullName* / securityId - */ protected Collection selectRegistryForSDF12(String account, Long securityId) { ImdgPredicateBuilder pb = registryImdg.predicateBuilder(); ImdgPredicate query = pb.and( - pb.and( - pb.equals("registryDesignation", RegistryDesignation.A.getKey()), - pb.equals("registryInstrumentType", RegistryInstrumentType.S.getKey()), - // pb.equals("registryCapacity", *), - pb.or(pb.equals("registryUnit", RegistryUnit.F.getKey()), - pb.equals("registryUnit", RegistryUnit.B.getKey())) - ), - pb.equals("account", account), - pb.in("securityId", securityId) + pb.and( + pb.equals("registryDesignation", RegistryDesignation.A.getKey()), + pb.equals("registryInstrumentType", RegistryInstrumentType.S.getKey()), + pb.or(pb.equals("registryUnit", RegistryUnit.F.getKey()), + pb.equals("registryUnit", RegistryUnit.B.getKey())) + ), + pb.equals("account", account), + pb.in("securityId", securityId) ); Collection result = registryImdg.getCollectionObjectsByPredicate(query); @@ -102,13 +96,6 @@ public class UnlockResources implements ISessionStage { } - /** - * @param sdfMode UnlockResourcesPayload.sdfMode - * @param account - * @param securityId - * @param fullNames - * @return - */ protected StageResult unlockResources(String sdfMode, String account, Long securityId, Collection fullNames, BigDecimal value) { Collection forRegistries; @@ -133,7 +120,7 @@ public class UnlockResources implements ISessionStage { registryTxImdg.update(registry); nUpdates++; log.trace("Registry {} (registryCode={}) changed; value +- {}", - registry.getId(), registry.getRegistryCode(), value); + registry.getId(), registry.getRegistryCode(), value); } } log.info("Updated {} registry's (under transaction {}", nUpdates, tx); diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java index 31b219df0..988eaf7fe 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/monitor/SessionMonitorFactory.java @@ -3,9 +3,6 @@ package ru.spcex.clearing.session.stage.monitor; import ru.spcex.platform.enumeration.SdfTable; import ru.spcex.platform.enumeration.Section; -/** - * @see ru.spcex.clearing.platform.messaging.domain.cud.clearing.SessionContinueEvent - */ public class SessionMonitorFactory { public static SessionMonitor paymentsWereCreated(Section section) { switch (section) { @@ -14,8 +11,8 @@ public class SessionMonitorFactory { } case FOND -> { return SessionMonitor.create() - .addCondition(new SdfCondition(SdfTable.SDF_04)) - .addCondition(new SdfCondition(SdfTable.SDF_13)); + .addCondition(new SdfCondition(SdfTable.SDF_04)) + .addCondition(new SdfCondition(SdfTable.SDF_13)); } default -> throw new IllegalStateException("unknown wait conditions for section " + section); } @@ -25,18 +22,18 @@ public class SessionMonitorFactory { switch (section) { case MKR -> { return SessionMonitor.create() - .addCondition(new SdfCondition(SdfTable.SDF_04)) - .addCondition(new SdfCondition(SdfTable.SDF_01)) - .addCondition(new SdfCondition(SdfTable.SDF_57)); + .addCondition(new SdfCondition(SdfTable.SDF_04)) + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); } case FOND, MULT -> { return SessionMonitor.create() - .addCondition(new SdfCondition(SdfTable.SDF_04)) - .addCondition(new SdfCondition(SdfTable.SDF_13)) - .addCondition(new SdfCondition(SdfTable.SDF_08)) - .addCondition(new SdfCondition(SdfTable.SDF_21)) - .addCondition(new SdfCondition(SdfTable.SDF_01)) - .addCondition(new SdfCondition(SdfTable.SDF_57)); + .addCondition(new SdfCondition(SdfTable.SDF_04)) + .addCondition(new SdfCondition(SdfTable.SDF_13)) + .addCondition(new SdfCondition(SdfTable.SDF_08)) + .addCondition(new SdfCondition(SdfTable.SDF_21)) + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); } default -> throw new IllegalStateException("unknown wait conditions for section " + section); } @@ -44,8 +41,8 @@ public class SessionMonitorFactory { public static SessionMonitor waitRevise() { return SessionMonitor.create() - .addCondition(new SdfCondition(SdfTable.SDF_01)) - .addCondition(new SdfCondition(SdfTable.SDF_57)); + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); } @@ -53,15 +50,15 @@ public class SessionMonitorFactory { switch (section) { case MKR -> { return SessionMonitor.create() - .addCondition(new SdfCondition(SdfTable.SDF_01)) - .addCondition(new SdfCondition(SdfTable.SDF_57)); + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); } case FOND, MULT -> { return SessionMonitor.create() - .addCondition(new SdfCondition(SdfTable.SDF_08)) - .addCondition(new SdfCondition(SdfTable.SDF_21)) - .addCondition(new SdfCondition(SdfTable.SDF_01)) - .addCondition(new SdfCondition(SdfTable.SDF_57)); + .addCondition(new SdfCondition(SdfTable.SDF_08)) + .addCondition(new SdfCondition(SdfTable.SDF_21)) + .addCondition(new SdfCondition(SdfTable.SDF_01)) + .addCondition(new SdfCondition(SdfTable.SDF_57)); } default -> throw new IllegalStateException("unknown wait conditions for section " + section); } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/payment/group/PaymentGroup.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/payment/group/PaymentGroup.java index f4666fef2..08066652b 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/payment/group/PaymentGroup.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/payment/group/PaymentGroup.java @@ -33,6 +33,4 @@ public class PaymentGroup { public void setLs_tId(Long ls_tId) { this.ls_tId = ls_tId; } - // private Direction direction; - // } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/FormingPaymentInstructionDealsMkrPayload.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/FormingPaymentInstructionDealsMkrPayload.java index 2072c223a..6e6c569ec 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/FormingPaymentInstructionDealsMkrPayload.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/FormingPaymentInstructionDealsMkrPayload.java @@ -8,10 +8,6 @@ import java.util.Collection; public class FormingPaymentInstructionDealsMkrPayload { private Long sessionId; private Section section; - /** - * для МКР итоговой сессии SDF будет отправляться по 1. возвратам 2. сделкам - * соотв. поле нужно чтобы передать сделанные пейменты из пункта 1 в 2 - */ private Collection paymentInstructionReturns; private boolean isSendSdfs = true; public Long getSessionId() { diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/UnlockResourcesPayload.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/UnlockResourcesPayload.java index fc16b5d2b..3fbdeb49d 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/UnlockResourcesPayload.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/session/stage/task/UnlockResourcesPayload.java @@ -7,30 +7,13 @@ public class UnlockResourcesPayload { public static final String MODE_SDF04 = "sDf04"; public static final String MODE_SDF12 = "sDf12"; - /** - * MODE_SDF04/MODE_SDF12 - */ private String sdfMode; - /** - * sDf04.c_acc_cred - * sDf12.depoCodeSender - */ private String account; - /** - * sDf04.(sbanknam1, sbanknam2 и т.д.) - */ private List fullNames; - /** - * sDf12.securityCode - */ private Long securityId; - /** - * sDf04.pay_val - * sDf12.quantity - */ private BigDecimal value; diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java index d86ee9624..4859e6cc6 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroup.java @@ -7,17 +7,6 @@ import java.util.Optional; import ru.spcex.platform.enumeration.SdfTable; public enum SdfGroup { -// Sdf01And57(SdfTable.SDF_01, SdfTable.SDF_57), -// Sdf08And21(SdfTable.SDF_08, SdfTable.SDF_21), - - //------ session groups ------ (4), (1 57), (13), (8 21) - //session_Triple(SdfTable.SDF_04, SdfTable.SDF_01, SdfTable.SDF_57), - //session_Six(SdfTable.SDF_04, - // SdfTable.SDF_13, - // SdfTable.SDF_08, - // SdfTable.SDF_21, - // SdfTable.SDF_01, - // SdfTable.SDF_57), ; private final Collection group; @@ -31,8 +20,8 @@ public enum SdfGroup { public static Optional groupByTable(SdfTable t) { return Arrays.stream(SdfGroup.values()) - .filter(g -> !g.name().startsWith("session")) - .filter(g -> g.getGroup().contains(t)) - .findFirst(); + .filter(g -> !g.name().startsWith("session")) + .filter(g -> g.getGroup().contains(t)) + .findFirst(); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java index e7e12ef16..11bd3aadc 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/SdfGroupManager.java @@ -20,33 +20,6 @@ public class SdfGroupManager { } public Optional getGroup(SdfTable table) { - //ImdgPredicateBuilder pb = sessImdg.predicateBuilder(); - //ImdgPredicate prdct = pb.and( - // pb.equals("workflowStatus", SessionStatus.ACTV.getKey()), - // pb.equals("sessionStatus", TaskType.FormingPaymentInstruction.getKey()) - //); - //Collection sessions = sessImdg.getCollectionObjectsByPredicate(prdct); - //if (sessions.size() > 1) { - // throw new IllegalStateException("more than one active session found by predicate " - // + prdct - // + " ids " + sessions.stream() - // .map(SpcexObjectBase::getId) - // .map(Object::toString) - // .collect(TextUtil.join)); - //} - //if (sessions.size() == 0) { - return SdfGroup.groupByTable(table); - //} else { - // Session session = sessions.iterator().next(); - // Section section = IEnumKey.getEnumByKey(Section.class, session.getSection()); - // if (section == null) { - // throw new IllegalStateException("couldn't determine section of session.id=" + session.getId()); - // } - // if (Section.MKR.equals(section)) { - // return Optional.of(SdfGroup.session_Triple); - // } else if (Section.FOND.equals(section)) { - // return Optional.of(SdfGroup.session_Six); - // } else throw new IllegalStateException("unknown section '" + section + "' of session.id=" + session.getId()); - //} + return SdfGroup.groupByTable(table); } } diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java index a91caf613..d119fca66 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/statement/StatementServiceV2.java @@ -98,15 +98,15 @@ public class StatementServiceV2 { SdfTable table = systemRequest.getRequestPayload().getTable(); Long groupId = systemRequest.getRequestPayload().getGroupId(); if (groupId == null || table == null || !Arrays.asList( - SdfTable.SDF_01, - SdfTable.SDF_04, - SdfTable.SDF_08, - SdfTable.SDF_10, - SdfTable.SDF_13, - SdfTable.SDF_20, - SdfTable.SDF_21, - SdfTable.SDF_55, - SdfTable.SDF_57).contains(table)) { + SdfTable.SDF_01, + SdfTable.SDF_04, + SdfTable.SDF_08, + SdfTable.SDF_10, + SdfTable.SDF_13, + SdfTable.SDF_20, + SdfTable.SDF_21, + SdfTable.SDF_55, + SdfTable.SDF_57).contains(table)) { log.info("skipping table {} groupId {}", table, groupId); return; } @@ -114,7 +114,6 @@ public class StatementServiceV2 { Optional sdfGroup = grpMng.getGroup(table); if (sdfGroup.isEmpty()) { log.debug("table {} is not paired with any other SDF", table); - //здесь switch case одиночные методы switch (table) { case SDF_01 -> processSdf01(systemRequest.getRequestPayload()); case SDF_04 -> processSdf04(systemRequest.getRequestPayload()); @@ -130,45 +129,25 @@ public class StatementServiceV2 { return; } log.debug("matched table {} with group {} {}", table, sdfGroup.get(), - sdfGroup.get() - .getGroup() - .stream() - .map(SdfTable::getKey) - .collect(TextUtil.join) + sdfGroup.get() + .getGroup() + .stream() + .map(SdfTable::getKey) + .collect(TextUtil.join) ); - //здесь мэтчинг запросов которые пришли раньше и текущего в одну группу - //если группа нашлась полная - значит обрабатываем List fullGroup = getFullGroup(systemRequest.getRequestPayload(), sdfGroup.get()); statementRequests.add(systemRequest.getRequestPayload()); if (fullGroup.isEmpty()) { log.debug("didn't find full sdf set for stmtReq.SdfTable={}, groupId={}. Adding to cache", table, groupId); log.debug("current SDF cache: {}", statementRequests.stream() - .map(sr -> sr.getTable() + " groupId " + sr.getGroupId()) - .collect(TextUtil.join)); + .map(sr -> sr.getTable() + " groupId " + sr.getGroupId()) + .collect(TextUtil.join)); return; } log.debug("find full set of SDF requests: {}", fullGroup.stream() - .map(stReq -> stReq.getTable().getKey() + " generationId=" + stReq.getGroupId()) - .collect(TextUtil.join)); -// if (sdfGroup.get() == SdfGroup.Sdf08And21) { -// processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); -// } -// else if (sdfGroup.get() == SdfGroup.Sdf01And57) { -// processSdf01Parent(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); -// } - //else if (sdfGroup.get() == SdfGroup.session_Triple) { - // processSdf04(find(SdfTable.SDF_04, fullGroup)); - // processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); - //} - //else if (sdfGroup.get() == SdfGroup.session_Six) { - // processSdf04(find(SdfTable.SDF_04, fullGroup)); - // processSdf13(find(SdfTable.SDF_13, fullGroup)); - // processSdf08And21(find(SdfTable.SDF_08, fullGroup), find(SdfTable.SDF_21, fullGroup)); - // processSdf01And57(find(SdfTable.SDF_01, fullGroup), find(SdfTable.SDF_57, fullGroup)); - //} -// else { + .map(stReq -> stReq.getTable().getKey() + " generationId=" + stReq.getGroupId()) + .collect(TextUtil.join)); throw new IllegalStateException("not implemented"); -// } } private static StatementRequest find(SdfTable table, Collection reqs) { @@ -194,7 +173,7 @@ public class StatementServiceV2 { nRequest.setPriority(Priority.HIGH.getKey()); nRequest.setComment("Поручения из клиринговой системы имеют неисполненный статус в ответе ДФ-04 из расчетной организации"); kafkaSender.sendRequestToQueue(Consts.NOTIFICATION_NEW, nRequest); - } else { // отправить в SessionMonitor + } else { kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); } } else { @@ -210,13 +189,11 @@ public class StatementServiceV2 { "generationId", sdf01.getGroupId())); } else { log.debug("accounts were created: {} for generationId {} child generationId {}", - sdf01.getAccountCreationResults().size(), sdf01.getGroupId(), sdf01.getChildGenerationId()); - //todo могут ли тут реквесты бегать по кругу, если да, то у нас проблемы + sdf01.getAccountCreationResults().size(), sdf01.getGroupId(), sdf01.getChildGenerationId()); sdfGroup = sdf01.getAccountCreationResults() - .stream() -// .filter(part -> part.getErrorCode() == null) //fixme эти случае должны попадать в ошибочный sdf02 - .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) - .collect(Collectors.toList()); + .stream() + .map(part -> sdfImdg.getSingleObjectByID(part.getSdfId())) + .collect(Collectors.toList()); } AbstractExecutor service = sdf01Executor; Result sdf01Res = service.execute(sdfGroup, sdf01); @@ -237,24 +214,23 @@ public class StatementServiceV2 { private void processSdf57(StatementRequest sdf57) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf57, SDf57.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", sdf57.getGroupId())); + "generationId", sdf57.getGroupId())); AbstractExecutor service = sdf57Executor; Result res = service.execute(sdfGroup, sdf57); boolean sessionStarted = res.isSessionWasStarted(); removeFirstWithSameTableAndGroupId(sdf57); if (!sessionStarted - || sessionImdg.getFirstObjectBySQL("workflowStatus = '%s'".formatted(WorkflowStatus.Active.getKey())) != null) { + || sessionImdg.getFirstObjectBySQL("workflowStatus = '%s'".formatted(WorkflowStatus.Active.getKey())) != null) { SessionContinueEvent continueSessionBn = new SessionContinueEvent(SdfTable.SDF_01, SdfTable.SDF_57); kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); } log.info("sdf57 processed successfully"); -// finishSendCommand(res, service, statementRequest); } private void processSdf13(StatementRequest statementRequest) { Imdg sdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf13, SDf13.class); Collection sdfGroup = sdfImdg.getCollectionObjectsByFieldValues(Map.of( - "generationId", statementRequest.getGroupId())); + "generationId", statementRequest.getGroupId())); AbstractExecutor service = sdf13Executor; removeFirstWithSameTableAndGroupId(statementRequest); Result res = service.execute(sdfGroup, statementRequest); @@ -268,7 +244,6 @@ public class StatementServiceV2 { } else { kafkaSender.sendRequestToQueue(Consts.CONTINUE_SESSION_BN_FIRST_PART, continueSessionBn); } -// finishSendCommand(res, service, statementRequest); } @@ -334,7 +309,7 @@ public class StatementServiceV2 { .map(StatementRequest::getTable) .map(Object::toString) .collect(Collectors.joining(",", "[", "]"))); - for (StatementRequest stmtReqOld : statementRequests) { //проходим с головы (с самых старых) + for (StatementRequest stmtReqOld : statementRequests) { boolean matchGroup = group.getGroup().contains(stmtReqOld.getTable()); boolean notIncludedThisTableAlready = reqs.stream().map(StatementRequest::getTable).noneMatch(t -> t.equals(stmtReqOld.getTable())); boolean isNotTheSameAsNewReq = !Objects.equals(stmtReqOld.getTable(), stmtReq.getTable()); diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/ClearingServiceTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/ClearingServiceTest.java index df28212a6..86ac016cd 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/ClearingServiceTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/ClearingServiceTest.java @@ -96,18 +96,8 @@ class ClearingServiceTest extends AbstractClearingTest { this.accountBalanceImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class); } - /** - * {@link ClearingService#executeClearing()}
- * Тест проверяет создание сущностей - * {@link LauncherCommandRequest} - * {@link LiabilitiesClaimsMoney} - * {@link PaymentInstruction} - * {@link ExecutionDeposit} - * в Hazelcast при передаче из Apache Kafka.
- */ @Test void startClearingNew() { - //ARRANGE int times = currentInteger.getAndIncrement(); Long companyIdI1 = 11L; Long relationIdI1 = 111L; @@ -117,35 +107,22 @@ class ClearingServiceTest extends AbstractClearingTest { LocalDate secondSettlementDateI2 = LocalDate.ofYearDay(2022, 31); preparOptimisticCase(companyIdI1, relationIdI1, accountIdI1, - securityIdI1, firstSettlementDateI1, secondSettlementDateI2, "I"); - - //ACT - //stage executeClearing(startClearing) + securityIdI1, firstSettlementDateI1, secondSettlementDateI2, "I"); addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_START_CLEARING, PARTITION, times, getJsonStringForNew(new DealRegisterNewRequest(), FIRST_ID)); - - //waiting for kafka producer send message verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); assertEquals(Consts.BALANCE_ACCOUNT_UPDATE, producerRecord.getValue().topic()); BaseRequest baseRequestResult = (BaseRequest) producerRecord.getValue().value(); - - //stage continueClearing CommonIdRequest requestPayload = new CommonIdRequest(); requestPayload.setId(baseRequestResult.getId()); addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_CONTINUE_CLEARING, PARTITION, times, getJsonStringForNew(requestPayload, FIRST_ID)); - - //waiting for kafka producer send message (finale event) verify(mockProducer, timeout(30_000L).times(2)) - .send(producerRecord.capture()); - - //ASSERT + .send(producerRecord.capture()); assertEquals(Task.createOrder.topic(), producerRecord.getValue().topic()); - - //First LiabilitiesClaimsAssets && LiabilitiesClaimsMoney LiabilitiesClaimsAssets resultFirstClaimsAssets = liabilitiesClaimsAssetsImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); + Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); LiabilitiesClaimsMoney resultFirstClaimsMoney = liabilitiesClaimsMoneyImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); + Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); LiabilitiesClaimsAssets predictableFirstClaimsAssets = lbltsClmsAssetsCreator.createFirstLegLCA(category, executionDeposit); predictableFirstClaimsAssets.setId(resultFirstClaimsAssets.getId()); predictableFirstClaimsAssets.setPaymentId(resultFirstClaimsAssets.getPaymentId()); @@ -154,11 +131,10 @@ class ClearingServiceTest extends AbstractClearingTest { predictableFirstClaimsMoney.setId(resultFirstClaimsMoney.getId()); LIABILITIES_CLAIMS_ASSETS_MATCHER.assertMatch(resultFirstClaimsAssets, predictableFirstClaimsAssets); LIABILITIES_CLAIMS_MONEY_MATCHER.assertMatch(resultFirstClaimsMoney, predictableFirstClaimsMoney); - //Second LiabilitiesClaimsAssets && LiabilitiesClaimsMoney LiabilitiesClaimsAssets resultSecondClaimsAssets = liabilitiesClaimsAssetsImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); + Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); LiabilitiesClaimsMoney resultSecondClaimsMoney = liabilitiesClaimsMoneyImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); + Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); LiabilitiesClaimsAssets predictableSecondClaimsAssets = lbltsClmsAssetsCreator.createSecondLegLCA(category, executionDeposit); predictableSecondClaimsAssets.setId(resultSecondClaimsAssets.getId()); predictableSecondClaimsAssets.setLiabilitiesClaimsMoneyId(resultSecondClaimsMoney.getId()); @@ -166,31 +142,19 @@ class ClearingServiceTest extends AbstractClearingTest { predictableSecondClaimsMoney.setId(resultSecondClaimsMoney.getId()); LIABILITIES_CLAIMS_ASSETS_MATCHER.assertMatch(resultSecondClaimsAssets, predictableSecondClaimsAssets); LIABILITIES_CLAIMS_MONEY_MATCHER.assertMatch(resultSecondClaimsMoney, predictableSecondClaimsMoney); - //PaymentInstruction PaymentInstruction resultPaymentInstruction = paymentInstructionCreator.searchExistPaymentInstructionsFirstI(predictableFirstClaimsAssets); PaymentInstruction predictablePaymentInstruction = paymentInstructionCreator.createPaymentInstruction(executionDeposit, predictableFirstClaimsAssets, Collections.singleton(category)); predictablePaymentInstruction.setId(resultPaymentInstruction.getId()); predictablePaymentInstruction.setDocumentNumber(resultPaymentInstruction.getDocumentNumber()); PAYMENT_INSTRUCTION_MATCHER.assertMatch(resultPaymentInstruction, predictablePaymentInstruction); - //ExecutionDeposit ExecutionDeposit resultExecutionDeposit = executionDepositImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "securityId", securityIdI1)); + Map.of("accountId", accountIdI1, "securityId", securityIdI1)); executionDeposit.setSessionId(resultExecutionDeposit.getSessionId()); EXECUTION_DEPOSIT_MATCHER.assertMatch(resultExecutionDeposit, executionDeposit); } - /** - * {@link ClearingService#executeClearing()}
- * Тест проверяет обновление сущностей - * {@link LauncherCommandRequest} - * {@link LiabilitiesClaimsMoney} - * {@link PaymentInstruction} - * {@link ExecutionDeposit} - * в Hazelcast при передаче из Apache Kafka.
- */ @Test void startClearingUpdate() { - //ARRANGE int times = currentInteger.getAndIncrement(); Long companyIdI1 = 21L; Long relationIdI1 = 211L; @@ -200,7 +164,7 @@ class ClearingServiceTest extends AbstractClearingTest { LocalDate secondSettlementDateI2 = LocalDate.ofYearDay(2022, 31); preparOptimisticCase(companyIdI1, relationIdI1, accountIdI1, - securityIdI1, firstSettlementDateI1, secondSettlementDateI2, "I"); + securityIdI1, firstSettlementDateI1, secondSettlementDateI2, "I"); LiabilitiesClaimsAssets predictableFirstClaimsAssets = lbltsClmsAssetsCreator.createFirstLegLCA(category, executionDeposit); predictableFirstClaimsAssets.setId(FIRST_ID); @@ -214,75 +178,50 @@ class ClearingServiceTest extends AbstractClearingTest { LiabilitiesClaimsMoney predictableSecondClaimsMoney = lbltsClmsMoneyCreator.createSecondLegLcm(predictableSecondClaimsAssets, category); predictableSecondClaimsMoney.setId(SECOND_ID); liabilitiesClaimsMoneyImdg.insert(predictableSecondClaimsMoney); - //ACT - //stage executeClearing(startClearing) addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_START_CLEARING, PARTITION, times, getJsonStringForNew(new DealRegisterNewRequest(), FIRST_ID)); - - //waiting for kafka producer send message verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); assertEquals(Consts.BALANCE_ACCOUNT_UPDATE, producerRecord.getValue().topic()); BaseRequest baseRequestResult = (BaseRequest) producerRecord.getValue().value(); - - //stage continueClearing CommonIdRequest requestPayload = new CommonIdRequest(); requestPayload.setId(baseRequestResult.getId()); addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_CONTINUE_CLEARING, PARTITION, times, getJsonStringForNew(requestPayload, FIRST_ID)); - - //waiting for kafka producer send message (finale event) verify(mockProducer, timeout(30_000L).times(2)) - .send(producerRecord.capture()); - - //ASSERT + .send(producerRecord.capture()); assertEquals(Task.createOrder.topic(), producerRecord.getValue().topic()); - - //First LiabilitiesClaimsAssets && LiabilitiesClaimsMoney LiabilitiesClaimsAssets resultFirstClaimsAssets = liabilitiesClaimsAssetsImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); + Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); LiabilitiesClaimsMoney resultFirstClaimsMoney = liabilitiesClaimsMoneyImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); + Map.of("accountId", accountIdI1, "settlementDate", firstSettlementDateI1)); predictableFirstClaimsAssets.setPaymentId(resultFirstClaimsAssets.getPaymentId()); predictableFirstClaimsAssets.setLiabilitiesClaimsMoneyId(resultFirstClaimsMoney.getId()); lbltsClmsAssetsCreator.updateFirstLegLca(predictableFirstClaimsAssets, executionDeposit, category); lbltsClmsMoneyCreator.updateFirstLegLcm(predictableFirstClaimsMoney, predictableFirstClaimsAssets, executionDeposit, category); LIABILITIES_CLAIMS_ASSETS_MATCHER.assertMatch(resultFirstClaimsAssets, predictableFirstClaimsAssets); LIABILITIES_CLAIMS_MONEY_MATCHER.assertMatch(resultFirstClaimsMoney, predictableFirstClaimsMoney); - //Second LiabilitiesClaimsAssets && LiabilitiesClaimsMoney LiabilitiesClaimsAssets resultSecondClaimsAssets = liabilitiesClaimsAssetsImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); + Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); LiabilitiesClaimsMoney resultSecondClaimsMoney = liabilitiesClaimsMoneyImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); + Map.of("accountId", accountIdI1, "settlementDate", secondSettlementDateI2)); predictableSecondClaimsAssets.setLiabilitiesClaimsMoneyId(resultSecondClaimsMoney.getId()); lbltsClmsAssetsCreator.updateSecondLegLca(predictableSecondClaimsAssets, executionDeposit, category); lbltsClmsMoneyCreator.updateSecondLegLcm(predictableSecondClaimsMoney, predictableSecondClaimsAssets, executionDeposit, category); LIABILITIES_CLAIMS_ASSETS_MATCHER.assertMatch(resultSecondClaimsAssets, predictableSecondClaimsAssets); LIABILITIES_CLAIMS_MONEY_MATCHER.assertMatch(resultSecondClaimsMoney, predictableSecondClaimsMoney); - //PaymentInstruction PaymentInstruction resultPaymentInstruction = paymentInstructionCreator.searchExistPaymentInstructionsFirstI(predictableFirstClaimsAssets); PaymentInstruction predictablePaymentInstruction = paymentInstructionCreator.createPaymentInstruction(executionDeposit, predictableFirstClaimsAssets, Collections.singleton(category)); predictablePaymentInstruction.setId(resultPaymentInstruction.getId()); predictablePaymentInstruction.setDocumentNumber(resultPaymentInstruction.getDocumentNumber()); PAYMENT_INSTRUCTION_MATCHER.assertMatch(resultPaymentInstruction, predictablePaymentInstruction); - //ExecutionDeposit ExecutionDeposit resultExecutionDeposit = executionDepositImdg.getFirstObjectByFieldValues( - Map.of("accountId", accountIdI1, "securityId", securityIdI1)); + Map.of("accountId", accountIdI1, "securityId", securityIdI1)); executionDeposit.setSessionId(resultExecutionDeposit.getSessionId()); EXECUTION_DEPOSIT_MATCHER.assertMatch(resultExecutionDeposit, executionDeposit); } - /** - * {@link ClearingService#executeClearing()}
- * Тест проверяет обновление сущностей - * {@link LauncherCommandRequest} - * {@link LiabilitiesClaimsMoney} - * {@link PaymentInstruction} - * {@link ExecutionDeposit} - * в Hazelcast при передаче из Apache Kafka.
- */ @Test void startClearingValidatError() { - //ARRANGE Long companyId = 31L; Long relationId = 311L; Long accountId = 3111L; @@ -291,15 +230,10 @@ class ClearingServiceTest extends AbstractClearingTest { LocalDate secondSettlementDate = LocalDate.ofYearDay(2022, 31); preparOptimisticCase(companyId, relationId, accountId, - securityId, firstSettlementDate, secondSettlementDate, "V"); - - - //ClearingIsAllowed + securityId, firstSettlementDate, secondSettlementDate, "V"); relation.setServiceStatus(ServiceStatus.Blocked.getKey()); relationImdg.insert(relation); checkHaveSomeError(currentInteger.getAndIncrement()); - - //AccountIsNotBlocked relation.setServiceStatus(ServiceStatus.Active.getKey()); relationImdg.insert(relation); executionDeposit = getExecutionDeposit(companyId, null, securityId, firstSettlementDate, secondSettlementDate); @@ -311,8 +245,6 @@ class ClearingServiceTest extends AbstractClearingTest { account.setStatus(AccountStatus.BLOCKED.getKey()); accountImdg.insert(account); checkHaveSomeError(currentInteger.getAndIncrement()); - - //CompanyIsNotBlocked account.setStatus(AccountStatus.ACTIVE.getKey()); accountImdg.insert(account); company.setWorkflowStatus(WorkflowStatus.Blocked.getKey()); @@ -322,8 +254,6 @@ class ClearingServiceTest extends AbstractClearingTest { company.setWorkflowStatus(null); companyImdg.insert(company); checkHaveSomeError(currentInteger.getAndIncrement()); - - //FinancialObligationSecurity company.setWorkflowStatus(WorkflowStatus.Active.getKey()); companyImdg.insert(company); accountBalance.setAccountId(0L); @@ -378,7 +308,7 @@ class ClearingServiceTest extends AbstractClearingTest { executionDeposit.setExchangeExecutionId(5L); executionDeposit.setExchangeExecutionTime(Instant.now()); executionDeposit.setTradingDate(LocalDate.now()); - executionDeposit.setTradingClearingRegistryId(accountId); //todo CLS-275 executionDeposit.setAccountId(accountId); + executionDeposit.setTradingClearingRegistryId(accountId); executionDeposit.setMarket("market"); executionDeposit.setPrice(new BigDecimal(9)); executionDeposit.setLots(new BigDecimal(0)); @@ -407,15 +337,9 @@ class ClearingServiceTest extends AbstractClearingTest { } void checkHaveSomeError(long times) { - //ACT - //stage executeClearing(startClearing) addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_START_CLEARING, PARTITION, times, getJsonStringForNew(new DealRegisterNewRequest(), FIRST_ID)); - - //waiting for kafka producer send message verify(mockProducer, timeout(30_000L).times((int) times)) - .send(producerRecord.capture()); - - //ASSERT + .send(producerRecord.capture()); assertEquals(Task.createOrder.topic(), producerRecord.getValue().topic()); ExecutionDeposit resultExecutionDeposit = executionDepositImdg.getFirstObjectBySQL("settlementCurrency = 'settlementCurrency'"); executionDeposit.setUpdated(resultExecutionDeposit.getUpdated()); diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java index 018ebd19b..4699028d5 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/PaymentUpdateBySdf04Test.java @@ -36,22 +36,13 @@ class PaymentUpdateBySdf04Test extends AbstractClearingTest { super.init(); this.paymentImdgs = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); this.sdf04Imdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_SDf04, SDf04.class); - - //setting imdg for been PaymentUpdateBySdf04 this.paymentImdgsMock = getMockForFildObj(paymentImdgs, paymentUpdateBySdf04, "paymentImdgs"); this.settingResult = ArgumentCaptor.forClass(PaymentInstruction.class); } - /** - * {@link PaymentUpdateBySdf04#updatePayments(Long)} ()}
- * Тест проверяет обновление сущности - * {@link PaymentInstruction} - * в Hazelcast при передаче из Apache Kafka.
- */ @Test void updatePayments() { - //ARRANGE Long sdf04GroupId = 12L; Long paymentId = 10L; String docnm_ref = paymentId.toString(); @@ -64,29 +55,20 @@ class PaymentUpdateBySdf04Test extends AbstractClearingTest { PaymentInstruction payment = new PaymentInstruction(); payment.setId(paymentId); paymentImdgs.insert(payment); - - //ACT & ASSERT checkTransactionStatus(sdf04GroupId, currentInteger.getAndIncrement(), TransactionStatus.ok.getKey()); sDf04s.setImp_result("imp_result"); sdf04Imdg.insert(sDf04s); - //ACT & ASSERT checkTransactionStatus(sdf04GroupId, currentInteger.getAndIncrement(), TransactionStatus.fail.getKey()); } private void checkTransactionStatus(Long sdf04GroupId, int times, String key) { Sdf04Request requestPayload = new Sdf04Request(); requestPayload.setGroupId(sdf04GroupId); - - //ACT addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_SDF04_PROCESS, - PARTITION, times, getJsonStringForUPDATE(requestPayload, sdf04GroupId)); - - //waiting for paymentImdgs update + PARTITION, times, getJsonStringForUPDATE(requestPayload, sdf04GroupId)); verify(paymentImdgsMock, timeout(30_000L).times(times)) - .update(settingResult.capture()); - - //ASSERT + .update(settingResult.capture()); assertEquals(key, settingResult.getValue().getTransactionStatus()); } } \ No newline at end of file diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SdfCreatorBySTLDPaymentTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SdfCreatorBySTLDPaymentTest.java index b0f4e27ef..4a2e0a660 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SdfCreatorBySTLDPaymentTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SdfCreatorBySTLDPaymentTest.java @@ -22,8 +22,6 @@ class SdfCreatorBySTLDPaymentTest { void setUp() { ImdgProvider mock = Mockito.mock(ImdgProvider.class); sdfCreatorBySTLDPayment = new SdfCreatorBySTLDPayment(mock, null, null); - //create a Mockito spy for the sdfCreatorBySTLDPayment object - //when getClearingCategory is called, return the value from the categories map by paymentInstruction.getSenderId() sdfCreatorBySTLDPayment = Mockito.spy(sdfCreatorBySTLDPayment); Mockito.doAnswer(invocation -> { Object[] args = invocation.getArguments(); @@ -78,7 +76,6 @@ class SdfCreatorBySTLDPaymentTest { assertEquals(4, group.size()); SenderChecker checker = checker(group); - //order i 1 v b checker.check(i1, 0, 1); checker.check(i2, 0, 1); checker.check(i3, 0, 1); @@ -97,17 +94,13 @@ class SdfCreatorBySTLDPaymentTest { private SenderChecker checker(List>>> group) { return (senderId, order, count) -> { - //получаем группы относящиеся к order категории Map.Entry>> entry = group.get(order); Collection> allSenderForThisCategory = entry.getValue(); - //находим нашего sender List senderFound = allSenderForThisCategory.stream().filter(paymentInstructions -> { PaymentInstruction specificSender = paymentInstructions.iterator().next(); return specificSender.getSenderId().equals(senderId); }).findFirst().orElseThrow(() -> new RuntimeException("Sender " + senderId + " not found")); - //проверяем количество PaymentInstruction assertEquals(count, senderFound.size()); - //проверяем что в остальных группах нет нашего sender for (int i = 0; i < group.size(); i++) { if (i == order) { continue; diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java index fa2e7f367..56c49587e 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/SpecifUtilTest.java @@ -16,7 +16,6 @@ class SpecifUtilTest { @Test public void testSplit() { { - //40 symbols String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("0123456789012345678901234567890123456789"); Assertions.assertEquals(2, splitted.length); Assertions.assertEquals("01234567890123456789012345678901234", splitted[0]); @@ -24,29 +23,25 @@ class SpecifUtilTest { } { - //40 symbols String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("01234567890123456789012345678901234"); Assertions.assertEquals(1, splitted.length); Assertions.assertEquals("01234567890123456789012345678901234", splitted[0]); } { - //10 symbols String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("0123456789"); Assertions.assertEquals(1, splitted.length); Assertions.assertEquals("0123456789", splitted[0]); } { - //0 symbols String[] splitted = SpecifUtil.split5SegmentsBy35Symbols(""); Assertions.assertEquals(0, splitted.length); } { - //80 symbols String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("0123456789012345678901234567890123456789" + - "0123456789012345678901234567890123456789"); + "0123456789012345678901234567890123456789"); Assertions.assertEquals(3, splitted.length); Assertions.assertEquals("01234567890123456789012345678901234", splitted[0]); Assertions.assertEquals("56789012345678901234567890123456789", splitted[1]); @@ -54,14 +49,13 @@ class SpecifUtilTest { } { - //maximum symbols String[] splitted = SpecifUtil.split5SegmentsBy35Symbols("01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "outside of scope" + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "outside of scope" ); Assertions.assertEquals(7, splitted.length); for (int i = 0; i < splitted.length; i++) { @@ -72,7 +66,6 @@ class SpecifUtilTest { } } } -// ""; } @Test @@ -80,8 +73,6 @@ class SpecifUtilTest { { AtomicReference part0 = new AtomicReference<>(); AtomicReference part1 = new AtomicReference<>(); - - //40 symbols SpecifUtil.fillSegmentsBy35Symbols("0123456789012345678901234567890123456789", part0::set, part1::set); Assertions.assertNotNull(part0.get()); Assertions.assertNotNull(part1.get()); @@ -92,8 +83,6 @@ class SpecifUtilTest { { AtomicReference part0 = new AtomicReference<>(); AtomicReference part1 = new AtomicReference<>(); - - //35 symbols SpecifUtil.fillSegmentsBy35Symbols("01234567890123456789012345678901234", part0::set, part1::set); Assertions.assertNotNull(part0.get()); Assertions.assertNull(part1.get()); @@ -104,8 +93,6 @@ class SpecifUtilTest { { AtomicReference part0 = new AtomicReference<>(); AtomicReference part1 = new AtomicReference<>(); - - //10 symbols SpecifUtil.fillSegmentsBy35Symbols("0123456789", part0::set, part1::set); Assertions.assertNotNull(part0.get()); Assertions.assertNull(part1.get()); @@ -115,8 +102,6 @@ class SpecifUtilTest { { AtomicReference part0 = new AtomicReference<>(); AtomicReference part1 = new AtomicReference<>(); - - //0 symbols SpecifUtil.fillSegmentsBy35Symbols("", part0::set, part1::set); Assertions.assertNull(part0.get()); Assertions.assertNull(part1.get()); @@ -125,10 +110,8 @@ class SpecifUtilTest { { AtomicReference part0 = new AtomicReference<>(); AtomicReference part1 = new AtomicReference<>(); - - //80 symbols SpecifUtil.fillSegmentsBy35Symbols("0123456789012345678901234567890123456789" + - "0123456789012345678901234567890123456789", part0::set, part1::set); + "0123456789012345678901234567890123456789", part0::set, part1::set); Assertions.assertNotNull(part0.get()); Assertions.assertNotNull(part1.get()); Assertions.assertEquals("01234567890123456789012345678901234", part0.get()); @@ -140,10 +123,8 @@ class SpecifUtilTest { AtomicReference part0 = new AtomicReference<>(); AtomicReference part1 = new AtomicReference<>(); AtomicReference part2 = new AtomicReference<>(); - - //80 symbols SpecifUtil.fillSegmentsBy35Symbols("0123456789012345678901234567890123456789" + - "0123456789012345678901234567890123456789", part0::set, part1::set, part2::set); + "0123456789012345678901234567890123456789", part0::set, part1::set, part2::set); Assertions.assertNotNull(part0.get()); Assertions.assertNotNull(part1.get()); Assertions.assertNotNull(part2.get()); @@ -159,14 +140,12 @@ class SpecifUtilTest { AtomicReference part2 = new AtomicReference<>(); AtomicReference part3 = new AtomicReference<>(); AtomicReference part4 = new AtomicReference<>(); - - //maximum symbols SpecifUtil.fillSegmentsBy35Symbols("01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "outside of scope", part0::set, part1::set, part2::set, part3::set, part4::set); + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "outside of scope", part0::set, part1::set, part2::set, part3::set, part4::set); Assertions.assertNotNull(part0.get()); Assertions.assertNotNull(part1.get()); @@ -187,14 +166,12 @@ class SpecifUtilTest { AtomicReference part3 = new AtomicReference<>(); AtomicReference part4 = new AtomicReference<>(); AtomicReference part5 = new AtomicReference<>(); - - //> 35*5 symbols but 6 setters SpecifUtil.fillSegmentsBy35Symbols("01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "01234567890123456789012345678912345" + - "outside of scope", part0::set, part1::set, part2::set, part3::set, part4::set, part5::set); + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "01234567890123456789012345678912345" + + "outside of scope", part0::set, part1::set, part2::set, part3::set, part4::set, part5::set); Assertions.assertNotNull(part0.get()); Assertions.assertNotNull(part1.get()); diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/StatementServiceServiceTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/StatementServiceServiceTest.java index bd7655f7c..8fa2a86cf 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/StatementServiceServiceTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/StatementServiceServiceTest.java @@ -1,111 +1,4 @@ package ru.spcex.clearing.service; -//todo раскоментить тест class StatementServiceServiceTest { -// extends AbstractServiceTest { -// private static final String TOPIC = Consts.STATEMENT_PROCESS; -// private static final int PARTITION = 1; -// private static final Long groupId = 111L; -// private final static AtomicLong cuurentOffset = new AtomicLong(1L); -// private final Long ID = 11L; -// @Autowired -// StatementService statementService; -// @Captor -// ArgumentCaptor producerRecord; -// private MockConsumer mockConsumer; -// private SDf01 sDf01; -// private Company company; -// @SpyBean -// private MockProducer producer; -// -// @PostConstruct -// void init() { -// super.init(); -// mockConsumer = (MockConsumer) statementService.getConsumer(); -// sDf01 = getTestSdf01(ID, groupId); -// company = getTestCompany(); -// } -// -// /** -// * {@link StatementService}
-// * Тест проверяет генерацию сущностей {@link RequestInfo}
-// * Входные параметры:
-// * {@link StatementRequest}: new StatementRequest()
-// * {@link StatementRequest#table} - SDF_01
-// */ -// @Test -// void processEXPORT_PROCESS() { -// sdf01Imdg.delete(sDf01); -// companyImdg.delete(company); -// -// companyImdg.delete(company); -// StatementRequest statementRequest = new StatementRequest(); -// statementRequest.setGroupId(groupId); -// statementRequest.setTable(SDF_01); -// BaseRequest baseNewRequest = new BaseRequest<>(); -// baseNewRequest.setRequestPayload(statementRequest); -// baseNewRequest.setId(currentId.getAndIncrement()); -// baseNewRequest.setActionType(ActionType.NEW); -// String jsonBaseNewRequest; -// ObjectMapper objectMapper = new ObjectMapper(); -// try { -// jsonBaseNewRequest = objectMapper.writeValueAsString(baseNewRequest); -// } catch (JsonProcessingException e) { -// throw new RuntimeException(e); -// } -// -// addRecordToKafka(mockConsumer, TOPIC, PARTITION, cuurentOffset.getAndIncrement(), jsonBaseNewRequest); -// -// //waiting for kafka producer send message (finale event) -// verify(producer, timeout(30_000L).times(1)) -// .send(producerRecord.capture()); -// -// BaseRequest baseRequest = (BaseRequest) producerRecord.getValue().value(); -// RequestInfo resultRequestInfo = requestInfoImdg.getSingleObjectByID(baseRequest.getId()); -// -// assertEquals(Consts.EXPORT_PROCESS, producerRecord.getValue().topic()); -// assertNotNull(baseRequest); -// assertNotNull(resultRequestInfo); -// } -// -// /** -// * {@link StatementService}
-// * Тест проверяет генерацию сущностей {@link RequestInfo}
-// * Входные параметры:
-// * {@link StatementRequest}: new StatementRequest()
-// * {@link StatementRequest#table} - SDF_01
-// */ -// @Test -// void processACCOUNT_NEW() { -// sdf01Imdg.insert(sDf01); -// companyImdg.insert(company); -// -// StatementRequest statementRequest = new StatementRequest(); -// statementRequest.setGroupId(groupId); -// statementRequest.setTable(SDF_01); -// BaseRequest baseNewRequest = new BaseRequest<>(); -// baseNewRequest.setRequestPayload(statementRequest); -// baseNewRequest.setId(currentId.getAndIncrement()); -// baseNewRequest.setActionType(ActionType.NEW); -// String jsonBaseNewRequest; -// ObjectMapper objectMapper = new ObjectMapper(); -// try { -// jsonBaseNewRequest = objectMapper.writeValueAsString(baseNewRequest); -// } catch (JsonProcessingException e) { -// throw new RuntimeException(e); -// } -// -// addRecordToKafka(mockConsumer, TOPIC, PARTITION, cuurentOffset.getAndIncrement(), jsonBaseNewRequest); -// -// //waiting for kafka producer send message (finale event) -// verify(producer, timeout(30_000L).times(1)) -// .send(producerRecord.capture()); -// -// BaseRequest baseRequest = (BaseRequest) producerRecord.getValue().value(); -// RequestInfo resultRequestInfo = requestInfoImdg.getSingleObjectByID(baseRequest.getId()); -// -// assertEquals(Consts.ACCOUNT_NEW_SDF01, producerRecord.getValue().topic()); -// assertNotNull(baseRequest); -// assertNotNull(resultRequestInfo); -// } } \ No newline at end of file diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java index c1906f2da..a3f178fba 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/VerificationResultComponentTest.java @@ -52,20 +52,11 @@ class VerificationResultComponentTest extends AbstractClearingTest { clearAllInImdg(accountBalanceImdg); clearAllInImdg(accountImdg); clearAllInImdg(companyImdg); - - //setting imdg for been VerificationResultComponent this.verificationResultImdgMock = getMockForFildObj(verificationResultImdg, verificationResultComponent, "verificationResultImdg"); } - /** - * {@link VerificationResultComponent#executeRevision()} ()}
- * Тест проверяет создание сущностей - * {@link VerificationResult} - * в Hazelcast при передаче из Apache Kafka.
- */ @Test void executeRevision() { - //ARRANGE Long companyId = 10L; String acc = "15444876546"; String remainder = "15"; @@ -91,38 +82,27 @@ class VerificationResultComponentTest extends AbstractClearingTest { company.setId(companyId); company.setClearingCode("codeTest"); companyImdg.insert(company); - - //ACT & ASSERT checkVerificationResults(ResultStatuses.success.getKey()); - - // сравнить remainder==balance sDf01.setRemainder(remainder + "1"); sdf01Imdg.insert(sDf01); - //ACT & ASSERT checkVerificationResults(ResultStatuses.notSuccess.getKey()); - - // 2.1 Номера торговых/клиринговых счетов, соответствующие загруженным в КС sDf01.setRemainder(remainder); sDf01.setDeal(acc + "1"); sdf01Imdg.insert(sDf01); - //ACT & ASSERT checkVerificationResults(ResultStatuses.notSuccess.getKey()); } private void checkVerificationResults(String resultStatuses) { int times = currentInteger.getAndIncrement(); - //ACT addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC_VERIFICATION, - PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L)); + PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L)); ArgumentCaptor settingResult = ArgumentCaptor.forClass(VerificationResult.class); verify(verificationResultImdgMock, timeout(30_000L).times(4 * times)) - .insert(settingResult.capture()); + .insert(settingResult.capture()); Collection results = verificationResultImdg.getAllValues(); Long generationId = null; - - //ASSERT for (VerificationResult verificationResult : results) { if (generationId == null) generationId = verificationResult.getGenerationId(); assertEquals(resultStatuses, verificationResult.getGenerationStatus()); diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/builder/sql/RegistryCodeSqlBuilderTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/builder/sql/RegistryCodeSqlBuilderTest.java index c1ffcec83..ae5abdef3 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/builder/sql/RegistryCodeSqlBuilderTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/builder/sql/RegistryCodeSqlBuilderTest.java @@ -1,47 +1,4 @@ package ru.spcex.clearing.service.builder.sql; public class RegistryCodeSqlBuilderTest { -//todo раскоментить тесты - -// @Test -// public void testBuildByOneObject() { -// RegistryTradingParams registryTradingParams = new RegistryTradingParams(RegistryDesignation.C, RegistryInstrumentType.M, RegistryCapacity.B, RegistryUnit.R); -// RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(registryTradingParams); -// String sql = registryCodeSqlBuilder.build(); -// Assertions.assertEquals("(registryDesignation = 'C' and registryInstrumentType = 'M' and registryCapacity = 'B' and registryUnit = 'R')", sql); -// -// registryTradingParams = new RegistryTradingParams(null, RegistryInstrumentType.M, RegistryCapacity.B, RegistryUnit.R); -// registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(registryTradingParams); -// sql = registryCodeSqlBuilder.build(); -// Assertions.assertEquals("(registryInstrumentType = 'M' and registryCapacity = 'B' and registryUnit = 'R')", sql); -// -// registryTradingParams = new RegistryTradingParams(RegistryDesignation.C, null, null, RegistryUnit.R); -// registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(registryTradingParams); -// sql = registryCodeSqlBuilder.build(); -// Assertions.assertEquals("(registryDesignation = 'C' and registryUnit = 'R')", sql); -// } -// -// @Test -// public void testBuildByFewObjects() { -// RegistryTradingParams registryTradingParams_first = new RegistryTradingParams(RegistryDesignation.C, RegistryInstrumentType.M, RegistryCapacity.B, RegistryUnit.R); -// RegistryTradingParams registryTradingParams_second = new RegistryTradingParams(RegistryDesignation.O, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.F); -// RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(registryTradingParams_first, registryTradingParams_second); -// String sql = registryCodeSqlBuilder.build(); -// Assertions.assertEquals("(registryDesignation = 'C' and registryInstrumentType = 'M' and registryCapacity = 'B' and registryUnit = 'R')" + -// " or (registryDesignation = 'O' and registryInstrumentType = 'S' and registryCapacity = 'A' and registryUnit = 'F')", sql); -// -// registryTradingParams_first = new RegistryTradingParams(null, RegistryInstrumentType.M, RegistryCapacity.B, RegistryUnit.R); -// registryTradingParams_second = new RegistryTradingParams(null, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.F); -// registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(registryTradingParams_first, registryTradingParams_second); -// sql = registryCodeSqlBuilder.build(); -// Assertions.assertEquals("(registryInstrumentType = 'M' and registryCapacity = 'B' and registryUnit = 'R') or " + -// "(registryInstrumentType = 'S' and registryCapacity = 'A' and registryUnit = 'F')", sql); -// -// registryTradingParams_first = new RegistryTradingParams(RegistryDesignation.C, null, null, RegistryUnit.R); -// registryTradingParams_second = new RegistryTradingParams(null, RegistryInstrumentType.S, RegistryCapacity.A, RegistryUnit.F); -// registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(registryTradingParams_first, registryTradingParams_second); -// sql = registryCodeSqlBuilder.build(); -// Assertions.assertEquals("(registryDesignation = 'C' and registryUnit = 'R') or " + -// "(registryInstrumentType = 'S' and registryCapacity = 'A' and registryUnit = 'F')", sql); -// } } diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponentTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponentTest.java index afe56a23d..5e59fd459 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponentTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionCurrencyComponentTest.java @@ -43,8 +43,7 @@ class ExecutionCurrencyComponentTest extends AbstractClearingTest { @PostConstruct protected void init() { super.init(); -// executionCurrencyComponent.resetTradingDay(); - this.todayInstant = Instant.now(); //executionCurrencyComponent.tradingDay; + this.todayInstant = Instant.now(); this.sTradeImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_STrades, STrades.class); this.securityImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Security, Security.class); this.executionCurrencyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class); @@ -54,12 +53,6 @@ class ExecutionCurrencyComponentTest extends AbstractClearingTest { } - /** - * {@link ExecutionCurrencyComponent#processNewTS()} ()}
- * Тест проверяет создание сущностей - * {@link ExecutionCurrency} - * в Hazelcast при передаче из Apache Kafka.
- */ @Test void processNewTS() { String secCode = "SecCode"; @@ -86,10 +79,6 @@ class ExecutionCurrencyComponentTest extends AbstractClearingTest { int times = currentInteger.getAndIncrement(); addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC, - PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L)); - - //waiting for kafka producer send message (finale event) -// verify(mockProducer, timeout(30_000L).times(times)) -// .send(producerRecord.capture()); + PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L)); } } \ No newline at end of file diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionDepositComponentTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionDepositComponentTest.java index 55007f097..63bde7785 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionDepositComponentTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/execution/ExecutionDepositComponentTest.java @@ -54,12 +54,6 @@ class ExecutionDepositComponentTest extends AbstractClearingTest { } - /** - * {@link ExecutionDepositComponent#processNewTS()} ()}
- * Тест проверяет создание сущностей - * {@link ExecutionDeposit} - * в Hazelcast при передаче из Apache Kafka.
- */ @Test void processNewTS() { String secCode = "SecCode"; @@ -85,10 +79,6 @@ class ExecutionDepositComponentTest extends AbstractClearingTest { int times = currentInteger.getAndIncrement(); addRecordToKafka((MockConsumer) eventsReceiver.getConsumer(), TOPIC, - PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L)); - - //waiting for kafka producer send message (finale event) -// verify(mockProducer, timeout(30_000L).times(times)) -// .send(producerRecord.capture()); + PARTITION, times, getJsonStringForUPDATE(new LauncherCommandRequest(), 1L)); } } \ No newline at end of file diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/executors/Sdf01ExecutorTest.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/executors/Sdf01ExecutorTest.java index 0b358ae18..047cc7bf9 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/executors/Sdf01ExecutorTest.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/service/executors/Sdf01ExecutorTest.java @@ -1,238 +1,4 @@ package ru.spcex.clearing.service.executors; -//todo раскоментить тест -// -class Sdf01ExecutorTest { -// extends AbstractServiceTest { -// public final static DateTimeFormatter datFormatter = DateTimeFormatter.ofPattern("dd.MM.yy"); -// public final static String acc = "123456789"; -// private static final MatcherFactory.Matcher SDF_02_MATCHER = usingIgnoringFieldsComparator("created", "comment", "outSDfId", "generationTime", "generationId", "id"); -// private final Long ID = 1L; -// @Autowired -// Sdf01Executor sdf01Executor; -// private StatementRequest statementRequest; -// @SpyBean -// private MockProducer producer; -// -// @PostConstruct -// void init() { -// super.init(); -// statementRequest = new StatementRequest(); -// } -// -// /** -// * {@link Sdf01Executor#execute(Collection collection, StatementRequest statementRequest)}
-// * Тест проверяет генерацию сущностей {@link Result}, {@link Statement}, {@link SDf02}
-// * Входные параметры:
-// * accountId - {@link StatementRequest}: new StatementRequest()
-// * addresseeId - {@link Collection}
-// * addresseeId - {@link SDf01}
-// * {@link SDf01#market} - "U"
-// * {@link SDf01#deal} - "111111111"
-// * {@link SDf01#account} - "123456789"
-// * {@link SDf01#curr_code} - "RUR"
-// * {@link SDf01#dat} - текущая дата
-// * {@link SDf01#acc_type} - "A"
-// * {@link SDf01#remainder} - "1000"
-// */ -// @Test -// void execute() { -// //check create statement, SDf02 and AccountBalance -// SDf01 sdf01 = getTestSdf01(ID, 1L); -// Company company = getTestCompany(); -// companyMap.put(addresseeIdNew, company); -// -// Account account = getTestAccount(ID, acc); -// accountMap.put(accountIdNew, account); -// -// Result predictableResult = new Result(); -// predictableResult.setGenerationId(ID); -// Statement predictableStatement = getTestStatement(currentId.getAndIncrement(), company, account, sdf01); -// predictableStatement.setOperationStatus(OperationStatus.Executed.getKey()); -// SDf02 predictableSdf02 = getTestSdf02(currentId.getAndIncrement(), sdf01, ID); -// predictableStatement.setOutSDfId(predictableSdf02.getId()); -// AccountResult predictableNewResult = getTestAccountResult(currentId.getAndIncrement(), account, company); -// -// Result result = sdf01Executor.execute(Collections.singletonList(sdf01), statementRequest); -// Statement resultStatement = statementImdg.getSingleObjectByFieldValues(Map.of("account", acc)); -// SDf02 resultSdf02 = sdf02Imdg.getSingleObjectByFieldValues(Map.of("account", acc)); -// AccountBalance resultAccountBalance = accountBalanceImdg.getSingleObjectByFieldValues(Map.of("account", acc)); -// -// RESULT_MATCHER.assertMatch(result, predictableResult); -// STATEMENT_MATCHER.assertMatch(resultStatement, predictableStatement); -// SDF_02_MATCHER.assertMatch(resultSdf02, predictableSdf02); -// ACCOUNT_BALANCE_MATCHER.assertMatch(resultAccountBalance, predictableNewResult.getAccount()); -// } -// -// /** -// * {@link Sdf01Executor#execute(Collection collection, StatementRequest statementRequest)}
-// * Тест проверяет валидацию
-// * Входные параметры:
-// * accountId - {@link StatementRequest}: new StatementRequest()
-// * addresseeId - {@link Collection}
-// * addresseeId - {@link SDf01}
-// * {@link SDf01#market} - "U"
-// * {@link SDf01#deal} - "111111111"
-// * {@link SDf01#account} - "123456789"
-// * {@link SDf01#curr_code} - "RUR"
-// * {@link SDf01#dat} - текущая дата
-// * {@link SDf01#acc_type} - "A"
-// * {@link SDf01#remainder} - "1000"
-// */ -// @Test -// void validatedExecute() { -// //CompanyNotFound -// SDf01 sdf01 = getTestSdf01(ID, 1L); -// companyMap.delete(addresseeIdNew); -// checkError(new EnumMessage(BalanceError.CompanyNotFound), sdf01); -// -// sdf01.setDeal(null); -// checkError(new EnumMessage(BalanceError.CompanyNotFound), sdf01); -// -// //AccountNotPresent accountType=null -// sdf01.setDeal(deal); -// Company company = getTestCompany(); -// companyMap.put(addresseeIdNew, company); -// Account account = new Account(); -// account.setAccount(acc); -// account.setStatus(Status.Active.getKey()); -// accountMap.put(accountIdNew, account); -// checkErrorAccountNotPresent(company, sdf01); -// -// //AccountNotPresent account=null -// account.setAccount(null); -// account.setAccountType(AccountType.Clrn.getKey()); -// account.setStatus(Status.Active.getKey()); -// accountMap.put(accountIdNew, account); -// checkErrorAccountNotPresent(company, sdf01); -// -// //AccountNotPresent sdf01.account==null -// sdf01.setAccount(null); -// checkErrorAccountNotPresent(company, sdf01); -// -// //CurrencyNotFound sdf01.curr_code =! "RUR" -// accountMap.put(accountIdNew, getTestAccount(ID, acc)); -// sdf01.setAccount(acc); -// sdf01.setCurr_code("RUB"); -// checkError(new EnumMessage(BalanceError.CurrencyNotFound), sdf01); -// -// //CurrencyNotFound sdf01.curr_code =! "RUR" -// sdf01.setCurr_code(null); -// checkError(new EnumMessage(BalanceError.CurrencyNotFound), sdf01); -// -// //CurrentDateOnly -// sdf01.setCurr_code("RUR"); -// sdf01.setDat("19.01.23"); -// checkError(new EnumMessage(BalanceError.CurrentDateOnly), sdf01); -// -// //CurrentDateOnly -// sdf01.setDat("19.01.2023"); -// checkError(new EnumMessage(BalanceError.CurrentDateOnly), sdf01); -// -// //CurrentDateOnly -// sdf01.setDat(null); -// checkError(new EnumMessage(BalanceError.CurrentDateOnly), sdf01); -// -// //WrongAccount -// sdf01.setDat(LocalDate.now().format(datFormatter)); -// sdf01.setAcc_type(null); -// checkError(new EnumMessage(BalanceError.WrongAccount), sdf01); -// -// //WrongMarket -// sdf01.setAcc_type("A"); -// sdf01.setMarket(null); -// checkError(new EnumMessage(BalanceError.WrongMarket), sdf01); -// -// sdf01.setMarket("U"); -// } -// -// private void checkError(EnumMessage enumMessage, SDf01 sdf01) { -//// SDf01 sdf01 = getTestSdf01(); -// SDf02 predictableSdf02 = getTestErrorSdf02(sdf01, enumMessage, ID); -// Result result = sdf01Executor.execute(Collections.singletonList(sdf01), statementRequest); -// Collection resultsSdf02 = sdf02Imdg.getCollectionObjectsByFieldValues(Map.of("account", acc)); -// SDf02 resultSdf02 = resultsSdf02.stream().max((entry1, entry2) -> entry1.getId() > entry2.getId() ? 1 : -1).get(); -// SDF_02_MATCHER.assertMatch(resultSdf02, predictableSdf02); -// } -// -// private void checkErrorAccountNotPresent(Company company, SDf01 sdf01) { -// Result predictableResult = new Result(); -// predictableResult.getAccountRequests().add(createAccountRequestPart(sdf01.getId(), sdf01.getAccount(), company.getId())); -// Result result = sdf01Executor.execute(Collections.singletonList(sdf01), statementRequest); -// RESULT_MATCHER.assertMatch(result, predictableResult); -// -// } -// -// private SDf02 getTestSdf02(Long id, SDf01 sdf01, Long generationIdForGroup) { -// SDf02 sDf02 = new SDf02(); -// sDf02.setId(id); -// sDf02.setCurr_code(sdf01.getCurr_code()); -// sDf02.setAccount(sdf01.getAccount()); -// sDf02.setRemainder(sdf01.getRemainder()); -// sDf02.setDeal(sdf01.getDeal()); -// sDf02.setAcc_code(sdf01.getAcc_code()); -// sDf02.setDat(sdf01.getDat()); -// sDf02.setMarket(sdf01.getMarket()); -// sDf02.setAcc_name(sdf01.getAcc_name()); -// sDf02.setAcc_type(sdf01.getAcc_type()); -// sDf02.setSumengage(sdf01.getSumengage()); -// sDf02.setSumunblock(sdf01.getSumunblock()); -// sDf02.setFile_type(sdf01.getFile_type()); -// sDf02.setInSDfId(sdf01.getId()); -// sDf02.setGenerationId(generationIdForGroup); -// sDf02.setGenerationTime(Instant.now()); -// sDf02.setResult("OK!"); -// return sDf02; -// } -// -// private Statement getTestStatement(Long id, Company company, Account account, SDf01 sdf01) { -// Statement statement = new Statement(); -// statement.setId(id); -// statement.setAddresseeId(company.getId()); -// statement.setSenderId(Sender.Prc.getId()); -// statement.setCreated(Instant.now()); -// statement.setClearingDate(LocalDate.now()); -// statement.setStatementType(StatementType.full.getKey()); -// statement.setAccountId(account.getId()); -// statement.setAccount(sdf01.getAccount()); -// statement.setInOutDirection(InOutDirection.in.getKey()); -// statement.setSettlementDate(LocalDate.parse(sdf01.getDat(), datFormatter)); -// statement.setAmount(BigDecimalUtil.parse(sdf01.getRemainder())); -// statement.setOperationStatus(OperationStatus.Pending.getKey()); -// statement.setInSDfId(sdf01.getId()); -// statement.setInOutSDfType(InOutSDfType.type1.getKey()); -// return statement; -// } -// -// private SDf02 getTestErrorSdf02(SDf01 sdf01, EnumMessage error, Long generationIdForGroup) { -// SDf02 sDf02 = new SDf02(); -// sDf02.setId(ID); -// sDf02.setCurr_code(sdf01.getCurr_code()); -// sDf02.setAccount(sdf01.getAccount()); -// sDf02.setRemainder(sdf01.getRemainder()); -// sDf02.setDeal(sdf01.getDeal()); -// sDf02.setAcc_code(sdf01.getAcc_code()); -// sDf02.setDat(sdf01.getDat()); -// sDf02.setMarket(sdf01.getMarket()); -// sDf02.setAcc_name(sdf01.getAcc_name()); -// sDf02.setAcc_type(sdf01.getAcc_type()); -// sDf02.setSumengage(sdf01.getSumengage()); -// sDf02.setSumunblock(sdf01.getSumunblock()); -// sDf02.setFile_type(sdf01.getFile_type()); -// sDf02.setInSDfId(sdf01.getId()); -// String errorId = error.getSubject().getId().toString(); -// sDf02.setResult(errorId.substring(errorId.length() - 3)); -// sDf02.setGenerationId(generationIdForGroup); -// sDf02.setGenerationTime(Instant.now()); -// return sDf02; -// } -// -// private AccountSdfRequestPart createAccountRequestPart(Long sdf01Id, String account, Long companyId) { -// AccountSdfRequestPart req = new AccountSdfRequestPart(); -// req.setAccount(account); -// req.setCompanyId(companyId); -// req.setAccountType(AccountType.Clrn.getKey()); -// req.setSdfId(sdf01Id); -// return req; -// } +class Sdf01ExecutorTest { } \ No newline at end of file diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/MatcherFactory.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/MatcherFactory.java index 1141f3840..b363ecf15 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/MatcherFactory.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/MatcherFactory.java @@ -4,11 +4,6 @@ import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; -/** - * Factory for creating test matchers. - *

- * Comparing actual and expected objects via AssertJ - */ public class MatcherFactory { public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { diff --git a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/TestUtils.java b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/TestUtils.java index 3d3a969f8..976fcf1f2 100644 --- a/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/TestUtils.java +++ b/clearing-parent/clearing-service/src/test/java/ru/spcex/clearing/utils/TestUtils.java @@ -50,10 +50,8 @@ public class TestUtils { requestInfoUpdate.setId(id); requestInfoUpdate.setStatus(Success); predictableBaseRequest.setRequestPayload(requestInfoUpdate); - - //waiting for kafka producer send message (finale event) verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); BaseRequest baseRequestResult = (BaseRequest) producerRecord.getValue().value(); assertEquals(Consts.REQUEST_INFO_UPDATE, producerRecord.getValue().topic()); diff --git a/clearing-parent/clearing-validation/pom.xml b/clearing-parent/clearing-validation/pom.xml index 613ad8e2f..51bad338f 100644 --- a/clearing-parent/clearing-validation/pom.xml +++ b/clearing-parent/clearing-validation/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - clearing-validation + clearing-validation clearing-validation Clearing-module, dependency version of platform-utils jar diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/scheduler/ISchedulerChecker.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/scheduler/ISchedulerChecker.java index 0c8d273cc..a341a7815 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/scheduler/ISchedulerChecker.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/scheduler/ISchedulerChecker.java @@ -20,12 +20,9 @@ public class ISchedulerChecker { && (planner.getTask() != null && planner.getTask().equalsIgnoreCase(plannerAllToday.getTask())); } - /** - * @param isWeekend тек.день=СБ-ВС
- */ public static boolean isWorkDayByTradingCalendar(ClearingCalendar clearingCalendar, boolean isWeekend) { return clearingCalendar.getDayStatus() != null - && clearingCalendar.getDayStatus().equalsIgnoreCase(DayStatus.Workday.getKey()); + && clearingCalendar.getDayStatus().equalsIgnoreCase(DayStatus.Workday.getKey()); } public static boolean isWorkDayByTradingCalendar(ClearingCalendar clearingCalendar) { diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/package-info.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/package-info.java index 4077b07c4..f0e827655 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/package-info.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/package-info.java @@ -1,4 +1 @@ -/** - * Утилиты с зависимостями от множества модулей clearing-* - */ package ru.spcex.clearing.util; \ No newline at end of file diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/IMDGMessageResolver.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/IMDGMessageResolver.java index 3da17146d..9c8fc3fdd 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/IMDGMessageResolver.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/IMDGMessageResolver.java @@ -13,9 +13,6 @@ import java.util.Arrays; import java.util.MissingFormatArgumentException; import java.util.function.Supplier; -/** - * Использует ErrorCodeDictionary для расшифровки текста кодов ошибок. - */ public class IMDGMessageResolver implements IMessageResolver { protected final Logger log = LoggerFactory.getLogger(getClass()); protected final Imdg errorCodeDictionaryIMDG; @@ -38,7 +35,7 @@ public class IMDGMessageResolver implements IMessageResolver { String textTemplate = errId + " " + errorDictionary.getName(); try { return String.format(textTemplate, errMsg.getArgs()); - } catch (MissingFormatArgumentException errFormatting) { // MissingFormatArgumentException + } catch (MissingFormatArgumentException errFormatting) { int argExpected = 0; int i = 0, li = -1; while ((i = textTemplate.indexOf("%", i)) >= 0 && i != li) { @@ -47,12 +44,12 @@ public class IMDGMessageResolver implements IMessageResolver { i++; } log.warn("Error dictionary {} text \"{}\" contains {} argument position, but message contains only: {}", - errId, textTemplate, argExpected, errMsg.getArgs().length); + errId, textTemplate, argExpected, errMsg.getArgs().length); Object[] arg = Arrays.copyOf(errMsg.getArgs(), Math.max(errMsg.getArgs().length, argExpected)); for (i = errMsg.getArgs().length; i < arg.length; i++) arg[i] = " "; return String.format(textTemplate, arg); } - } catch (Exception errFormatting) { // MissingFormatArgumentException + } catch (Exception errFormatting) { log.warn("Error in message resolver for error {} id {}. Format error: {}", errMsg.getSubject(), errMsg.getSubject().getId(), errFormatting); return simplFormatter.get(); } diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/RequestHelper.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/RequestHelper.java index c14458175..05c664c07 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/RequestHelper.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/RequestHelper.java @@ -14,17 +14,6 @@ import ru.spcex.platform.utils.log.ExceptionUtils; import java.util.Objects; -/** - * Упрощает обработку ошибок во время обработки реквестов. - * Передаёт регламентированные ошибки из ClearingBaseException. - * - * Пример: - * callback(CompanyNewRequest.class) - * .setFunction( request -> requestHelper.requestFunction(this::createCompany, request)) - * .forDestination(Consts.DESTINATION_COMPANY_NEW, callbacks::put); - * - * return requestHelper.makeErrorResponse(CompanyError.GeneralError, ...) - */ public class RequestHelper { protected Logger log = LoggerFactory.getLogger(getClass()); protected final IMessageResolver messageResolver; @@ -46,51 +35,43 @@ public class RequestHelper { Objects.requireNonNull(generalError, "Required generalError enum"); } - /** - * Оборачивает функцию command в try-catch - * @param command обработчик реквеста - * @param userRequest реквест - * @param request payload type - * @param тип BaseRequest - * @return RequestInfoUpdate или null - */ public > RequestInfoUpdate requestFunction(RequestCommand command, T userRequest) { try { log.debug("{} request received, BaseRequest.id = {}", userRequest.getClass().getSimpleName(), userRequest.getId()); RequestInfoUpdate reply = command.command(userRequest); - log.trace("Reply on request {}: {}" , userRequest.getId(), reply); + log.trace("Reply on request {}: {}", userRequest.getId(), reply); return reply; } catch (ClearingBaseException expectedE) { log.trace("{} return expected exception: {}", command, expectedE.toString()); String message = expectedE.getEnumMsg() == null - ? expectedE.getMessage() - : messageResolver.resolve(expectedE.getEnumMsg()); + ? expectedE.getMessage() + : messageResolver.resolve(expectedE.getEnumMsg()); log.info("Response: {}", message); return new RequestInfoUpdate() - .setId(userRequest.getId()) - .setStatus(Status.Error) - .setMessage(message); + .setId(userRequest.getId()) + .setStatus(Status.Error) + .setMessage(message); } catch (Exception unexpectedE) { log.error("Error at {}: {} ", command, ExceptionUtils.getStackTrace(unexpectedE)); String message = messageResolver.resolve(new EnumMessage(generalError)); return new RequestInfoUpdate() - .setId(userRequest.getId()) - .setStatus(Status.Error) - .setMessage(message); + .setId(userRequest.getId()) + .setStatus(Status.Error) + .setMessage(message); } } public RequestInfoUpdate makeErrorResponse(BaseRequest request, EnumMessage msg) { - String errorMsg = msg == null? "" : messageResolver.resolve(msg); + String errorMsg = msg == null ? "" : messageResolver.resolve(msg); log.info("Response: {}", errorMsg); return new RequestInfoUpdate() - .setId(request.getId()) - .setStatus(Status.Error) - .setMessage(errorMsg); + .setId(request.getId()) + .setStatus(Status.Error) + .setMessage(errorMsg); } - public RequestInfoUpdate makeErrorResponse(BaseRequest request, IErrorEnumId error, Object ... args) { + public RequestInfoUpdate makeErrorResponse(BaseRequest request, IErrorEnumId error, Object... args) { return makeErrorResponse(request, new EnumMessage(error, args)); } diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/exchangers/BiDirectionQueueExchanger.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/exchangers/BiDirectionQueueExchanger.java index eaec45cc3..4a467aafb 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/exchangers/BiDirectionQueueExchanger.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/util/services/exchangers/BiDirectionQueueExchanger.java @@ -19,18 +19,6 @@ import java.io.Closeable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; -/** - * Синхронный обмен сообщениями с ассинхронным сервисом. - * Метод exchange() отправляет сообщение в очередь и дожидается ответа из другой очереди. - * Использовать с осторожностью, т.к. нет возобновления ожидания в случае нештатного выключения модуля при ожидании ответа из kafka. - *

- *

- * Ожидает из очереди (CommonIdRequest) - * - * Похожая функция ожидания: KafkaSender.sendToQueueWaitForAnswer - * - * @param отправляется в очередь - */ public class BiDirectionQueueExchanger> extends QueueConsumer implements Closeable { protected final Logger log = LoggerFactory.getLogger(getClass()); protected String outQueue; @@ -42,18 +30,8 @@ public class BiDirectionQueueExchanger> extends Queu protected Object syncObject; protected Long lastSentRequestId; protected volatile Long lastResponseId; - protected boolean ignoreOtherResponse = true; // Пропускать другие ID, пока не получит lastResponseId==lastSentRequestId + protected boolean ignoreOtherResponse = true; - /** - * Синхронно-ассинхронный обмен сообщениями - * - * @param kafkaQueue уникальный kafka Consumer (Spring prototype). Нельзя переиспользовать существующие. - * @param kafkaProducer - * @param outQueue отправляет в очередь - * @param inQueue слушает очередь/топик, ожидает ответов. Пример: Consts.CONTINUE_CLEARING - * @param ignoreOtherResponse true для inQueue=Consts.REQUEST_INFO_UPDATE - * @param timeout - максимальное ожидание ответа, в миллисекундах, 0 - неограничено - */ public BiDirectionQueueExchanger(Consumer kafkaQueue, Producer kafkaProducer, String outQueue, String inQueue, @@ -84,21 +62,12 @@ public class BiDirectionQueueExchanger> extends Queu initReplyListener(); } - /** - * Отправить сообщение message в outQueue и дождаться ответа из очереди inQueue - * - * @param message - * @return request/reply id - * @throws InterruptedException или когда поток прерывают, или когда BiDirectionQueueExchanger.close() - */ public Long exchange(TOut message) throws InterruptedException { if (syncObject == null) throw new IllegalStateException("Listener queue not initialized"); if (message.getId() == null) { throw new IllegalArgumentException("Required message " + message.getClass().getSimpleName() + ".id is null"); } - - //send request to kafka, wait for a reply try { synchronized (syncObject) { Long sentRequestId = sendMessage(message); @@ -114,13 +83,9 @@ public class BiDirectionQueueExchanger> extends Queu } else { syncObject.wait(); } - //если на этом месте произошла ошибка - непонятно как обрабатывать - //т.к. request на самом деле могла быть проблема с сетью/недоступностью кафки etc. } catch (InterruptedException e) { log.error(ExceptionUtils.getStackTrace(e)); throw e; -// Thread.currentThread().interrupt(); -// throw new RuntimeException(e); } waitTime = timeout - (System.currentTimeMillis() - waitStart); if (isTerminated && lastResponseId == null) { @@ -133,7 +98,7 @@ public class BiDirectionQueueExchanger> extends Queu } while (ignoreOtherResponse && !sentRequestId.equals(lastResponseId) && (timeout > 0 && waitTime > 0)); if (!sentRequestId.equals(lastResponseId)) { log.error("FATAL: last response from {} update from Kafka ID was {}, but sent ID was {}", - inQueue, lastResponseId, sentRequestId); + inQueue, lastResponseId, sentRequestId); throw new IllegalStateException("Expected wait till requestId=" + sentRequestId + " but catch lastResponseId=" + lastResponseId); } return sentRequestId; @@ -165,8 +130,8 @@ public class BiDirectionQueueExchanger> extends Queu throw new IllegalStateException("Already initialized"); } callback(CommonIdRequest.class) - .setConsumer(this::continueWaiting) - .forDestination(inQueue, callbacks::put); + .setConsumer(this::continueWaiting) + .forDestination(inQueue, callbacks::put); init(); syncObject = new Object(); diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/ValidationHelper.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/ValidationHelper.java index 5681e0780..b7134ac59 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/ValidationHelper.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/ValidationHelper.java @@ -23,12 +23,6 @@ public class ValidationHelper { this.messageResolver = messageResolver; } - /** - * Валидация запроса до первой ошибки - * - * @param Класс проверяемого запроса - * @return null если ошибок нет - */ public RequestInfoUpdate validateTillFirstError(BaseRequest userRequest, Function validatorBuilder) { if (validatorBuilder != null) { @@ -39,9 +33,9 @@ public class ValidationHelper { String errorMsg = messageResolver.resolve(validationError.get()); log.warn("validation error for {} error={}, id={}: {}", req.getClass().getSimpleName(), validationError.get().getSubject(), userRequest.getId(), errorMsg); return new RequestInfoUpdate() - .setId(userRequest.getId()) - .setStatus(Status.Error) - .setMessage(errorMsg); + .setId(userRequest.getId()) + .setStatus(Status.Error) + .setMessage(errorMsg); } } return null; diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java index a22834156..aa31d5abd 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DateNotBeforeRule.java @@ -9,26 +9,14 @@ import java.time.LocalDate; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с LocalDate. Условие проверки: поверяемая дата >= текущая дата - * @param Класс проверяемого объекта - */ public record DateNotBeforeRule( - String fieldName, - Function getter, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorTaskForPastDate, - boolean required + String fieldName, + Function getter, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorTaskForPastDate, + boolean required ) implements IValidationRule> { - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемой даты - * @param required Флаг обязательности поля - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorTaskForPastDate Ошибка, которая будет возвращена, если проверяемая дата меньше текущей - * @param Класс проверяемого объекта - */ public static DateNotBeforeRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, @@ -37,13 +25,6 @@ public record DateNotBeforeRule( return new DateNotBeforeRule<>(fieldName, getter, errorEmptyRequiredValue, errorTaskForPastDate, required); } - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемой даты - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorTaskForPastDate Ошибка, которая будет возвращена, если проверяемая дата меньше текущей - * @param Класс проверяемого объекта - */ public static DateNotBeforeRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java index e67250089..3fb424313 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/DictionaryPresentRule.java @@ -15,12 +15,6 @@ import java.util.Objects; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с кодом из словаря (таблицы *_dictionary) - * - * @param Класс проверяемого объекта - * @param Класс словаря - */ public class DictionaryPresentRule implements IValidationRule> { public static final IMessageDecorator FIELD_NOT_FOUND_DECORATOR_1 = (isEmpty, errorCode, dictionaryName, fieldValue) -> new EnumMessage(errorCode, dictionaryName); public static final IMessageDecorator DICTIONARY_NOT_FOUND_DECORATOR_2 = (isEmpty, errorCode, dictionaryName, fieldValue) -> new EnumMessage(errorCode, fieldValue, dictionaryName); @@ -47,18 +41,6 @@ public class DictionaryPresentRule implements I this.decorator = DICTIONARY_NOT_FOUND_DECORATOR_2; } - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param dictionaryName Название словаря (см. IMDGDistributedNames) - * @param dictionaryClass Класс словаря (классы *Dictionary.class) - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorWrongDictionaryValue Ошибка, которая будет возвращена, если поле не найдено в словаре - * @param required Флаг обязательности - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param Класс проверяемого объекта - * @param Класс словаря - */ @SafeVarargs public static DictionaryPresentRule instance(String fieldName, Function getter, @@ -72,26 +54,15 @@ public class DictionaryPresentRule implements I if (required) Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue"); return new DictionaryPresentRule<>(fieldName, - getter, - dictionaryName, - dictionaryClass, - errorEmptyRequiredValue, - errorWrongDictionaryValue, - required, - additionalChecks); + getter, + dictionaryName, + dictionaryClass, + errorEmptyRequiredValue, + errorWrongDictionaryValue, + required, + additionalChecks); } - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param dictionaryName Название словаря (см. IMDGDistributedNames) - * @param dictionaryClass Класс словаря (классы *Dictionary.class) - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorWrongDictionaryValue Ошибка, которая будет возвращена, если поле не найдено в словаре - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param Класс проверяемого объекта - * @param Класс словаря - */ @SafeVarargs public static DictionaryPresentRule instance(String fieldName, Function getter, @@ -103,13 +74,13 @@ public class DictionaryPresentRule implements I Objects.requireNonNull(errorWrongDictionaryValue, "errorWrongDictionaryValue"); Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue"); return new DictionaryPresentRule<>(fieldName, - getter, - dictionaryName, - dictionaryClass, - errorEmptyRequiredValue, - errorWrongDictionaryValue, - true, - additionalChecks); + getter, + dictionaryName, + dictionaryClass, + errorEmptyRequiredValue, + errorWrongDictionaryValue, + true, + additionalChecks); } @Override @@ -118,8 +89,8 @@ public class DictionaryPresentRule implements I String enumCode = getter.apply(validatedObject); if (enumCode == null) return required ? decorator.of(true, errorEmptyRequiredValue, fieldName, null) : empty(); Imdg dictImdg = context.obtainMap( - dictionaryName, - dictionaryClass + dictionaryName, + dictionaryClass ); ImdgPredicateBuilder imdgPredicateBuilder = dictImdg.predicateBuilder(); ImdgPredicate imdgPredicate = imdgPredicateBuilder.equals("code", enumCode); @@ -128,7 +99,7 @@ public class DictionaryPresentRule implements I return decorator.of(false, errorWrongDictionaryValue, dictionaryClass.getSimpleName(), enumCode); } D dictionaryFromMap = fromMap.iterator().next(); - if (dictionaryFromMap == null) { // never + if (dictionaryFromMap == null) { return decorator.of(false, errorWrongDictionaryValue, dictionaryClass.getSimpleName(), enumCode); } for (Function additionalCheck : additionalChecks) { 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 92302ad9d..d9ee46df2 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 @@ -9,30 +9,16 @@ import java.time.LocalDate; import java.util.Optional; import java.util.function.Function; -/** - * Проверка EndDt < StartDt - * @param Класс проверяемого объекта - */ public record EndDtAfterStartDtRule( - String startDtFieldName, - String endDtFieldName, - Function getterStartDt, - Function getterEndDt, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorEndDtAfterStartDt, - boolean required + String startDtFieldName, + String endDtFieldName, + Function getterStartDt, + Function getterEndDt, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorEndDtAfterStartDt, + boolean required ) implements IValidationRule> { - /** - * @param startDtFieldName Название поля класса, содержащий StartDt - * @param endDtFieldName Название поля класса, содержащий EndDt - * @param getterStartDt Метод получения проверяемой StartDt - * @param getterEndDt Метод получения проверяемой EndDt - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если одна из дат пустая - * @param errorEndDtAfterStartDt Ошибка, которая будет возвращена, если EndDt > StartDt - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ public static EndDtAfterStartDtRule instance(String startDtFieldName, String endDtFieldName, Function getterStartDt, @@ -41,37 +27,28 @@ public record EndDtAfterStartDtRule( IErrorEnumId errorEndDtAfterStartDt, boolean required) { return new EndDtAfterStartDtRule<>(startDtFieldName, - endDtFieldName, - getterStartDt, - getterEndDt, - errorEmptyRequiredValue, - errorEndDtAfterStartDt, - required); + endDtFieldName, + getterStartDt, + getterEndDt, + errorEmptyRequiredValue, + errorEndDtAfterStartDt, + required); } - /** - * @param startDtFieldName Название поля класса, содержащий StartDt - * @param endDtFieldName Название поля класса, содержащий EndDt - * @param getterStartDt Метод получения проверяемой StartDt - * @param getterEndDt Метод получения проверяемой EndDt - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если одна из дат пустая - * @param errorEndDtAfterStartDt Ошибка, которая будет возвращена, если StartDt > EndDt - * @param Класс проверяемого объекта - */ public static EndDtAfterStartDtRule instance( - String startDtFieldName, - String endDtFieldName, - Function getterStartDt, - Function getterEndDt, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorEndDtAfterStartDt) { + String startDtFieldName, + String endDtFieldName, + Function getterStartDt, + Function getterEndDt, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorEndDtAfterStartDt) { return new EndDtAfterStartDtRule<>(startDtFieldName, - endDtFieldName, - getterStartDt, - getterEndDt, - errorEmptyRequiredValue, - errorEndDtAfterStartDt, - true); + endDtFieldName, + getterStartDt, + getterEndDt, + errorEmptyRequiredValue, + errorEndDtAfterStartDt, + true); } @Override diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java index 06df4e777..a8d38896a 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/EnumPresentRule.java @@ -9,12 +9,6 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля со значением из множества (enum) - * Рекомендуется использовать не эту валидацию, а DictionaryPresentRule - * @param Класс проверяемого объекта - * @param Enum - */ public record EnumPresentRule(String fieldName, Function getter, E[] enumValues, @@ -22,16 +16,6 @@ public record EnumPresentRule(String fieldName, IErrorEnumId errorWrongEnumValue, IErrorEnumId errorEmptyRequiredValue) implements IValidationRule> { - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param enumValues Значения из проверяемого множества (Enum.values()) - * @param errorWrongEnumValue Ошибка, которая будет возвращена, если поле не найдено в Enum - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param required Флаг обязательности - * @param Класс проверяемого объекта - * @param Enum - */ public static EnumPresentRule instance(String fieldName, Function getter, E[] enumValues, @@ -39,19 +23,11 @@ public record EnumPresentRule(String fieldName, IErrorEnumId errorWrongEnumValue, IErrorEnumId errorEmptyRequiredValue) { if (errorWrongEnumValue == null) throw new IllegalArgumentException("Empty errorWrongEnumValue"); - if (required && errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); + if (required && errorEmptyRequiredValue == null) + throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); return new EnumPresentRule<>(fieldName, getter, enumValues, required, errorWrongEnumValue, errorEmptyRequiredValue); } - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param enumValues Значения из проверяемого множества (Enum.values()) - * @param errorWrongEnumValue Ошибка, которая будет возвращена, если поле не найдено в Enum - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param Класс проверяемого объекта - * @param Enum - */ public static EnumPresentRule instance(String fieldName, Function getter, E[] enumValues, diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldNotBlankRequiredRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldNotBlankRequiredRule.java index f3fea7b35..bf6c1b24d 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldNotBlankRequiredRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldNotBlankRequiredRule.java @@ -10,49 +10,25 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка обязательности String поля (not null) - * - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ public record FieldNotBlankRequiredRule( - String fieldName, - Function getter, - IErrorEnumId errorEmptyRequiredValue, - boolean required, - Function[] additionalChecks + String fieldName, + Function getter, + IErrorEnumId errorEmptyRequiredValue, + boolean required, + Function[] additionalChecks ) implements IValidationRule> { - /** - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ @SafeVarargs public static FieldNotBlankRequiredRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, boolean required, Function... additionalChecks) { - if (required && errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); + if (required && errorEmptyRequiredValue == null) + throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); return new FieldNotBlankRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, required, additionalChecks); } - /** - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param Класс проверяемого объекта - */ @SafeVarargs public static FieldNotBlankRequiredRule instance(String fieldName, Function getter, diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java index c2e0ebe48..71b7d3df8 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/FieldRequiredRule.java @@ -9,52 +9,25 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка обязательности поля (not null) - * - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ public record FieldRequiredRule( - String fieldName, - Function getter, - IErrorEnumId errorEmptyRequiredValue, - boolean required, - Function[] additionalChecks + String fieldName, + Function getter, + IErrorEnumId errorEmptyRequiredValue, + boolean required, + Function[] additionalChecks ) implements IValidationRule> { - /** - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ @SafeVarargs public static FieldRequiredRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, boolean required, Function... additionalChecks) { - if (required && errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); + if (required && errorEmptyRequiredValue == null) + throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, required, additionalChecks); } - /** - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ @SafeVarargs public static FieldRequiredRule instance(String fieldName, Function getter, @@ -65,7 +38,6 @@ public record FieldRequiredRule( } @Override - // todo replace for error fieldName to fieldValue public Optional validate(ImdgValidationContext context) { R validatedObject = context.getValidatedObject(); V value = getter.apply(validatedObject); diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java index 62d44872a..1309035b9 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IdPresentRule.java @@ -11,36 +11,18 @@ import java.util.Objects; import java.util.Optional; import java.util.function.Function; -/** - * Проверка наличия связанного по Id объекта в базе - * - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ public record IdPresentRule( - String fieldName, - Function idGetter, - String mapName, - Class mapClass, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorIdNotPresent, - boolean required, - Function[] additionalChecks, - Function[] additionalChecks2 + String fieldName, + Function idGetter, + String mapName, + Class mapClass, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorIdNotPresent, + boolean required, + Function[] additionalChecks, + Function[] additionalChecks2 ) implements IValidationRule> { - /** - * @param fieldName Название поля, содержащего Id - * @param idGetter Метод получения Id - * @param mapName Название мапы связанного объекта (см. IMDGDistributedNames) - * @param mapClass Класс связанного объекта - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorIdNotPresent Ошибка, которая будет возвращена, если Id не найден - * @param required Флаг обязательности - * @param additionalChecks Дополнительные проверки, которые можно провести со связанным объектом - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ @SafeVarargs public static IdPresentRule instance(String fieldName, Function idGetter, @@ -54,48 +36,37 @@ public record IdPresentRule( Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue"); Objects.requireNonNull(errorIdNotPresent, "errorIdNotPresent"); return new IdPresentRule<>(fieldName, - idGetter, - mapName, - mapClass, - errorEmptyRequiredValue, - errorIdNotPresent, - required, - additionalChecks, null); + idGetter, + mapName, + mapClass, + errorEmptyRequiredValue, + errorIdNotPresent, + required, + additionalChecks, null); } @SafeVarargs public static IdPresentRule instance2(String fieldName, - Function idGetter, - String mapName, - Class mapClass, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorIdNotPresent, - boolean required, - Function... additionalChecks2) { + Function idGetter, + String mapName, + Class mapClass, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorIdNotPresent, + boolean required, + Function... additionalChecks2) { if (required) Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue"); Objects.requireNonNull(errorIdNotPresent, "errorIdNotPresent"); return new IdPresentRule<>(fieldName, - idGetter, - mapName, - mapClass, - errorEmptyRequiredValue, - errorIdNotPresent, - required, - null, additionalChecks2); + idGetter, + mapName, + mapClass, + errorEmptyRequiredValue, + errorIdNotPresent, + required, + null, additionalChecks2); } - /** - * @param fieldName Название поля, содержащего Id - * @param idGetter Метод получения Id - * @param mapName Название мапы связанного объекта (см. IMDGDistributedNames) - * @param mapClass Класс связанного объекта - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorIdNotPresent Ошибка, которая будет возвращена, если Id не найден - * @param additionalChecks Дополнительные проверки, которые можно провести со связанным объектом - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ @SafeVarargs public static IdPresentRule instance(String fieldName, Function idGetter, @@ -107,13 +78,13 @@ public record IdPresentRule( Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue"); Objects.requireNonNull(errorIdNotPresent, "errorIdNotPresent"); return new IdPresentRule<>(fieldName, - idGetter, - mapName, - mapClass, - errorEmptyRequiredValue, - errorIdNotPresent, - true, - additionalChecks, null); + idGetter, + mapName, + mapClass, + errorEmptyRequiredValue, + errorIdNotPresent, + true, + additionalChecks, null); } @Override diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IsLongValueRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IsLongValueRule.java index a5dcdd328..261a311aa 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IsLongValueRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/IsLongValueRule.java @@ -8,27 +8,14 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля типа String на возможность преобразования в Long - * - * @param Класс проверяемого объекта - */ public record IsLongValueRule( - String fieldName, - Function getter, - IErrorEnumId errorEmptyRequiredField, - IErrorEnumId errorWrongFieldValue, - boolean required + String fieldName, + Function getter, + IErrorEnumId errorEmptyRequiredField, + IErrorEnumId errorWrongFieldValue, + boolean required ) implements IValidationRule> { - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемого поля - * @param errorEmptyRequiredField Ошибка, которая будет возвращена, если поле пустое - * @param errorWrongFieldValue Ошибка, которая будет возвращена, если поле нельзя преобразовать в Long - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ public static IsLongValueRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredField, @@ -37,13 +24,6 @@ public record IsLongValueRule( return new IsLongValueRule<>(fieldName, getter, errorEmptyRequiredField, errorWrongFieldValue, required); } - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемого поля - * @param errorEmptyRequiredField Ошибка, которая будет возвращена, если поле пустое - * @param errorWrongFieldValue Ошибка, которая будет возвращена, если поле нельзя преобразовать в Long - * @param Класс проверяемого объекта - */ public static IsLongValueRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredField, diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/SpecialIdPresentRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/SpecialIdPresentRule.java index afa281bc5..1640c3fa9 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/SpecialIdPresentRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/SpecialIdPresentRule.java @@ -15,12 +15,6 @@ import java.util.Map; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с кодом из таблицы (аналог IdPresentRule / DictionaryPresentRule) - * - * @param Класс проверяемого объекта - * @param Класс искомого объекта (mapName) - */ public record SpecialIdPresentRule(String fieldName, Function getter, String keyName, @@ -34,18 +28,18 @@ public record SpecialIdPresentRule(String fieldNam @SafeVarargs public static SpecialIdPresentRule instance(String fieldName, - Function getter, - String keyName, - String mapName, - Class mapClass, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorWrongDictionaryValue, - boolean required, - Function... additionalChecks) { + Function getter, + String keyName, + String mapName, + Class mapClass, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorWrongDictionaryValue, + boolean required, + Function... additionalChecks) { return new SpecialIdPresentRule<>(fieldName, getter, - keyName, mapName, mapClass, - errorEmptyRequiredValue, errorWrongDictionaryValue, - required, additionalChecks); + keyName, mapName, mapClass, + errorEmptyRequiredValue, errorWrongDictionaryValue, + required, additionalChecks); } @Override diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java index 7ab42a96c..637382461 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/TimeNotBeforeRule.java @@ -9,26 +9,14 @@ import java.time.LocalTime; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с LocalTime. Условие проверки: проверяемое время >= текущее время - * @param Класс проверяемого объекта - */ public record TimeNotBeforeRule( - String fieldName, - Function getter, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorTaskForPastTime, - boolean required + String fieldName, + Function getter, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorTaskForPastTime, + boolean required ) implements IValidationRule> { - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемого времени - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorTaskForPastTime Ошибка, которая будет возвращена, если проверяемое время меньше текущего - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ public static TimeNotBeforeRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, @@ -37,13 +25,6 @@ public record TimeNotBeforeRule( return new TimeNotBeforeRule<>(fieldName, getter, errorEmptyRequiredValue, errorTaskForPastTime, required); } - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемого времени - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorTaskForPastTime Ошибка, которая будет возвращена, если проверяемое время меньше текущего - * @param Класс проверяемого объекта - */ public static TimeNotBeforeRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/FieldRequiredSpecificRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/FieldRequiredSpecificRule.java index 1d5b8a444..1b4331fe0 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/FieldRequiredSpecificRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/FieldRequiredSpecificRule.java @@ -9,52 +9,25 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка обязательности поля (not null) - * - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ public record FieldRequiredSpecificRule( - String fieldName, - Function getter, - IErrorEnumId errorEmptyRequiredValue, - boolean required, - Function[] additionalChecks + String fieldName, + Function getter, + IErrorEnumId errorEmptyRequiredValue, + boolean required, + Function[] additionalChecks ) implements IValidationRule> { - /** - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ @SafeVarargs public static FieldRequiredSpecificRule instance(String fieldName, Function getter, IErrorEnumId errorEmptyRequiredValue, boolean required, Function... additionalChecks) { - if (required && errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); + if (required && errorEmptyRequiredValue == null) + throw new IllegalArgumentException("Empty errorEmptyRequiredValue"); return new FieldRequiredSpecificRule<>(fieldName, getter, errorEmptyRequiredValue, required, additionalChecks); } - /** - * @param fieldName Название поля - * @param getter Метод получения значения - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param additionalChecks Дополнительные проверки, связанные с этим полем - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ @SafeVarargs public static FieldRequiredSpecificRule instance(String fieldName, Function getter, @@ -65,7 +38,6 @@ public record FieldRequiredSpecificRule( } @Override - // todo replace for error fieldName to fieldValue public Optional validate(ImdgValidationContext context) { R validatedObject = context.getValidatedObject(); V value = getter.apply(validatedObject); diff --git a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/IdPresentSpecificRule.java b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/IdPresentSpecificRule.java index d99015e93..b1d06d99f 100644 --- a/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/IdPresentSpecificRule.java +++ b/clearing-parent/clearing-validation/src/main/java/ru/spcex/clearing/validation/common/rules/specific/IdPresentSpecificRule.java @@ -11,35 +11,17 @@ import java.util.Objects; import java.util.Optional; import java.util.function.Function; -/** - * Проверка наличия связанного по Id объекта в базе - * - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ public record IdPresentSpecificRule( - String fieldName, - Function idGetter, - String mapName, - Class mapClass, - IErrorEnumId errorEmptyRequiredValue, - IErrorEnumId errorIdNotPresent, - boolean required, - Function[] additionalChecks + String fieldName, + Function idGetter, + String mapName, + Class mapClass, + IErrorEnumId errorEmptyRequiredValue, + IErrorEnumId errorIdNotPresent, + boolean required, + Function[] additionalChecks ) implements IValidationRule> { - /** - * @param fieldName Название поля, содержащего Id - * @param idGetter Метод получения Id - * @param mapName Название мапы связанного объекта (см. IMDGDistributedNames) - * @param mapClass Класс связанного объекта - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorIdNotPresent Ошибка, которая будет возвращена, если Id не найден - * @param required Флаг обязательности - * @param additionalChecks Дополнительные проверки, которые можно провести со связанным объектом - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ @SafeVarargs public static IdPresentSpecificRule instance(String fieldName, Function idGetter, @@ -53,26 +35,15 @@ public record IdPresentSpecificRule( Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue"); Objects.requireNonNull(errorIdNotPresent, "errorIdNotPresent"); return new IdPresentSpecificRule<>(fieldName, - idGetter, - mapName, - mapClass, - errorEmptyRequiredValue, - errorIdNotPresent, - required, - additionalChecks); + idGetter, + mapName, + mapClass, + errorEmptyRequiredValue, + errorIdNotPresent, + required, + additionalChecks); } - /** - * @param fieldName Название поля, содержащего Id - * @param idGetter Метод получения Id - * @param mapName Название мапы связанного объекта (см. IMDGDistributedNames) - * @param mapClass Класс связанного объекта - * @param errorEmptyRequiredValue Ошибка, которая будет возвращена, если поле пустое - * @param errorIdNotPresent Ошибка, которая будет возвращена, если Id не найден - * @param additionalChecks Дополнительные проверки, которые можно провести со связанным объектом - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ @SafeVarargs public static IdPresentSpecificRule instance(String fieldName, Function idGetter, @@ -84,13 +55,13 @@ public record IdPresentSpecificRule( Objects.requireNonNull(errorEmptyRequiredValue, "errorEmptyRequiredValue"); Objects.requireNonNull(errorIdNotPresent, "errorIdNotPresent"); return new IdPresentSpecificRule<>(fieldName, - idGetter, - mapName, - mapClass, - errorEmptyRequiredValue, - errorIdNotPresent, - true, - additionalChecks); + idGetter, + mapName, + mapClass, + errorEmptyRequiredValue, + errorIdNotPresent, + true, + additionalChecks); } @Override diff --git a/clearing-parent/clearing-validation/src/test/java/ru/spcex/clearing/util/services/IMDGMessageResolverTest.java b/clearing-parent/clearing-validation/src/test/java/ru/spcex/clearing/util/services/IMDGMessageResolverTest.java index fddf0fa74..b756317c0 100644 --- a/clearing-parent/clearing-validation/src/test/java/ru/spcex/clearing/util/services/IMDGMessageResolverTest.java +++ b/clearing-parent/clearing-validation/src/test/java/ru/spcex/clearing/util/services/IMDGMessageResolverTest.java @@ -51,18 +51,13 @@ class IMDGMessageResolverTest { { String text = resolver.resolve(new EnumMessage(err1, "one only this")); assertEquals("1 Error 1 test. Two arg one only this, .", text); - // java.util.MissingFormatArgumentException: Format specifier '%s' -// assertEquals("(1) args [one only this]", text); } { String text = resolver.resolve(new EnumMessage(err1)); assertEquals("1 Error 1 test. Two arg , .", text); - // java.util.MissingFormatArgumentException: Format specifier '%s' -// assertEquals("(1) args []", text); } { String text = resolver.resolve(new EnumMessage(ClearingErrorInternalTest.TestError2, "text")); - // java.util.UnknownFormatConversionException: Conversion = 'Q' assertEquals("(2) args [text]", text); } { @@ -74,7 +69,7 @@ class IMDGMessageResolverTest { } } - enum ClearingErrorInternalTest implements IErrorEnumId { // see ClearingErrorInternal + enum ClearingErrorInternalTest implements IErrorEnumId { TestError(1L), TestError2(2L), TestError3(3L); private final Long id; diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java index 649caaae4..7090228be 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyRoleSetValidationConfig.java @@ -38,33 +38,31 @@ public class CompanyRoleSetValidationConfig { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(companyRoleSetNewRequest); Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); -// addImdg.accept(IMDGDistributedNames.Map_CompanyRoleSet); addImdg.accept(IMDGDistributedNames.Map_CompanyRoleDictionary); addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary); addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl<>(context, -// FieldRequiredRule.instance("companyId", CompanyRoleSetNewRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty), - IdPresentRule.instance("companyId", - CompanyRoleSetNewRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyNotFound, - true), - DictionaryPresentRule.instance("companyRole", - CompanyRoleSetNewRequest::getCompanyRole, - IMDGDistributedNames.Map_CompanyRoleDictionary, - CompanyRoleDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - true), - DictionaryPresentRule.instance("workflowStatus", - CompanyRoleSetNewRequest::getWorkflowStatus, - IMDGDistributedNames.Map_WorkflowStatusDictionary, - WorkflowStatusDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false) + IdPresentRule.instance("companyId", + CompanyRoleSetNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound, + true), + DictionaryPresentRule.instance("companyRole", + CompanyRoleSetNewRequest::getCompanyRole, + IMDGDistributedNames.Map_CompanyRoleDictionary, + CompanyRoleDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + true), + DictionaryPresentRule.instance("workflowStatus", + CompanyRoleSetNewRequest::getWorkflowStatus, + IMDGDistributedNames.Map_WorkflowStatusDictionary, + WorkflowStatusDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false) ); }; } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java index a0910d687..caa052bd1 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanySymbolValidationConfig.java @@ -37,23 +37,21 @@ public class CompanySymbolValidationConfig { addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary); addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl<>(context, - FieldRequiredRule.instance("companyId", CompanySymbolNewRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty), - IdPresentRule.instance("companyId", - CompanySymbolNewRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyNotFound), -// FieldRequiredRule.instance("companySymbol", CompanySymbolUpdateRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty), -// FieldRequiredRule.instance("companySymbolValue", CompanySymbolUpdateRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty), - DictionaryPresentRule.instance("companySymbol", - CompanySymbolNewRequest::getCompanySymbol, - IMDGDistributedNames.Map_CompanySymbolDictionary, - CompanySymbolDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false), - new CompanySymbolOfSymbolNewRequestNotExistRule() + FieldRequiredRule.instance("companyId", CompanySymbolNewRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty), + IdPresentRule.instance("companyId", + CompanySymbolNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound), + DictionaryPresentRule.instance("companySymbol", + CompanySymbolNewRequest::getCompanySymbol, + IMDGDistributedNames.Map_CompanySymbolDictionary, + CompanySymbolDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false), + new CompanySymbolOfSymbolNewRequestNotExistRule() ); }; } @@ -68,38 +66,35 @@ public class CompanySymbolValidationConfig { addImdg.accept(IMDGDistributedNames.Map_CompanySymbolDictionary); addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl>(context, - IdPresentRule.instance("id", - CompanySymbolUpdateRequest::getId, - IMDGDistributedNames.Map_CompanySymbols, - CompanySymbols.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyInfoNotFound, - (CompanySymbols existSymbol) -> { - assert existSymbol.getId().equals(context.getValidatedObject().getId()); - if (context.getValidatedObject().getCompanySymbol() == null) - return null; - // сейчас в коде предусмотрено редактирование-смена типа, но пока в ТЗ это не делали - return existSymbol.getCompanySymbol().equals(context.getValidatedObject().getCompanySymbol()) - ? null : CompanyErrors.EditCompanySymbols; - } - ), + IdPresentRule.instance("id", + CompanySymbolUpdateRequest::getId, + IMDGDistributedNames.Map_CompanySymbols, + CompanySymbols.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyInfoNotFound, + (CompanySymbols existSymbol) -> { + assert existSymbol.getId().equals(context.getValidatedObject().getId()); + if (context.getValidatedObject().getCompanySymbol() == null) + return null; + return existSymbol.getCompanySymbol().equals(context.getValidatedObject().getCompanySymbol()) + ? null : CompanyErrors.EditCompanySymbols; + } + ), - FieldRequiredRule.instance("companyId", CompanySymbolUpdateRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty), - IdPresentRule.instance("companyId", - CompanySymbolUpdateRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyNotFound), -// FieldRequiredRule.instance("companySymbol", CompanySymbolUpdateRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty), -// FieldRequiredRule.instance("companySymbolValue", CompanySymbolUpdateRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty), - DictionaryPresentRule.instance("companySymbol", - CompanySymbolUpdateRequest::getCompanySymbol, - IMDGDistributedNames.Map_CompanySymbolDictionary, - CompanySymbolDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false) + FieldRequiredRule.instance("companyId", CompanySymbolUpdateRequest::getCompanyId, CompanyErrors.RequiredFieldEmpty), + IdPresentRule.instance("companyId", + CompanySymbolUpdateRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound), + DictionaryPresentRule.instance("companySymbol", + CompanySymbolUpdateRequest::getCompanySymbol, + IMDGDistributedNames.Map_CompanySymbolDictionary, + CompanySymbolDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false) ); }; } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java index 2c029714d..ee14aeca4 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/CompanyValidationConfig.java @@ -73,26 +73,18 @@ public class CompanyValidationConfig { addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary); addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl<>(context, - FieldRequiredRule.instance("id", CompanyNewRequest::getId, CompanyErrors.RequiredFieldEmpty), + FieldRequiredRule.instance("id", CompanyNewRequest::getId, CompanyErrors.RequiredFieldEmpty), - FieldRequiredRule.instance("shortName", CompanyNewRequest::getShortName, CompanyErrors.RequiredFieldEmpty, - shortName -> StringUtils.isBlank(shortName) ? CompanyErrors.RequiredFieldEmpty : null), -// FieldRequiredRule.instance("companySymbol", CompanyNewRequest::getCompanySymbol, CompanyErrors.RequiredFieldEmpty), -// FieldRequiredRule.instance("companySymbolValue", CompanyNewRequest::getCompanySymbolValue, CompanyErrors.RequiredFieldEmpty), - FieldRequiredRule.instance("workflowStatus", CompanyNewRequest::getWorkflowStatus, CompanyErrors.RequiredFieldEmpty), + FieldRequiredRule.instance("shortName", CompanyNewRequest::getShortName, CompanyErrors.RequiredFieldEmpty, + shortName -> StringUtils.isBlank(shortName) ? CompanyErrors.RequiredFieldEmpty : null), + FieldRequiredRule.instance("workflowStatus", CompanyNewRequest::getWorkflowStatus, CompanyErrors.RequiredFieldEmpty), - DictionaryPresentRule.instance("workflowStatus", - CompanyNewRequest::getWorkflowStatus, - IMDGDistributedNames.Map_WorkflowStatusDictionary, - WorkflowStatusDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound) -// DictionaryPresentRule.instance("companySymbol", -// CompanyNewRequest::getCompanySymbol, -// IMDGDistributedNames.Map_CompanySymbolDictionary, -// CompanySymbolDictionary.class, -// CompanyErrors.RequiredFieldEmpty, -// CompanyErrors.DictionaryNotFound) + DictionaryPresentRule.instance("workflowStatus", + CompanyNewRequest::getWorkflowStatus, + IMDGDistributedNames.Map_WorkflowStatusDictionary, + WorkflowStatusDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound) ); }; } @@ -106,15 +98,14 @@ public class CompanyValidationConfig { Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); addImdg.accept(IMDGDistributedNames.Map_Company); return new ValidatorImpl<>(context, -// FieldRequiredRule.instance("id", CommonDeleteRequest::getId, CompanyErrors.RequiredFieldEmpty), - IdPresentSpecificRule.instance("id", - CommonDeleteRequest::getId, - IMDGDistributedNames.Map_Company, - Company.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyNotFound, - company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : - new EnumMessage(CompanyErrors.CompanyDisabled, company.getShortName())) + IdPresentSpecificRule.instance("id", + CommonDeleteRequest::getId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound, + company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : + new EnumMessage(CompanyErrors.CompanyDisabled, company.getShortName())) ); }; } @@ -136,57 +127,55 @@ public class CompanyValidationConfig { addImdg.accept(IMDGDistributedNames.Map_LegalKindDictionary); addImdg.accept(IMDGDistributedNames.Map_OrganizationTypeDictionary); return new ValidatorImpl<>(context, -// FieldRequiredRule.instance("id", CommonDeleteRequest::getId, CompanyErrors.RequiredFieldEmpty), - IdPresentRule.instance("id", - CompanyInfoUpdateRequest::getId, - IMDGDistributedNames.Map_Company, - Company.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyNotFound - //, company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : CompanyErrors.CompanyDisabled - ), + IdPresentRule.instance("id", + CompanyInfoUpdateRequest::getId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound + ), - DictionaryPresentRule.instance("CorporationSoleType", - CompanyInfoUpdateRequest::getCorporationSoleType, - IMDGDistributedNames.Map_CorporationSoleTypeDictionary, - CorporationSoleTypeDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, false), - DictionaryPresentRule.instance("CountryCode", - CompanyInfoUpdateRequest::getCountryCode, - IMDGDistributedNames.Map_CountryCodeDictionary, - CountryCodeDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false), - DictionaryPresentRule.instance("ProfessionalSign", - CompanyInfoUpdateRequest::getProfessionalSign, - IMDGDistributedNames.Map_AllowedDictionary, - AllowedDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false), - DictionaryPresentRule.instance("legalKind", - CompanyInfoUpdateRequest::getLegalKind, - IMDGDistributedNames.Map_LegalKindDictionary, - LegalKindDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false), - DictionaryPresentRule.instance("organizationType", - CompanyInfoUpdateRequest::getOrganizationType, - IMDGDistributedNames.Map_OrganizationTypeDictionary, - OrganizationTypeDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false), - DictionaryPresentRule.instance("residence", - CompanyInfoUpdateRequest::getResidence, - IMDGDistributedNames.Map_CountryCodeDictionary, - CountryCodeDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound, - false) + DictionaryPresentRule.instance("CorporationSoleType", + CompanyInfoUpdateRequest::getCorporationSoleType, + IMDGDistributedNames.Map_CorporationSoleTypeDictionary, + CorporationSoleTypeDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, false), + DictionaryPresentRule.instance("CountryCode", + CompanyInfoUpdateRequest::getCountryCode, + IMDGDistributedNames.Map_CountryCodeDictionary, + CountryCodeDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false), + DictionaryPresentRule.instance("ProfessionalSign", + CompanyInfoUpdateRequest::getProfessionalSign, + IMDGDistributedNames.Map_AllowedDictionary, + AllowedDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false), + DictionaryPresentRule.instance("legalKind", + CompanyInfoUpdateRequest::getLegalKind, + IMDGDistributedNames.Map_LegalKindDictionary, + LegalKindDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false), + DictionaryPresentRule.instance("organizationType", + CompanyInfoUpdateRequest::getOrganizationType, + IMDGDistributedNames.Map_OrganizationTypeDictionary, + OrganizationTypeDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false), + DictionaryPresentRule.instance("residence", + CompanyInfoUpdateRequest::getResidence, + IMDGDistributedNames.Map_CountryCodeDictionary, + CountryCodeDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound, + false) ); }; diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ProfileDocumentValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ProfileDocumentValidationConfig.java index 57ff9253c..90ef02a85 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ProfileDocumentValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/ProfileDocumentValidationConfig.java @@ -91,13 +91,12 @@ public class ProfileDocumentValidationConfig { CompanyErrors.RequiredFieldEmpty, CompanyErrors.RecordNotFound), IdPresentRule.instance("companyId", - ProfileDocumentUpdateRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.CompanyNotFound, - false - //company -> WorkflowStatus.Active.getKey().equals(company.getWorkflowStatus()) ? null : CompanyErrors.CompanyDisabled + ProfileDocumentUpdateRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.CompanyNotFound, + false ), DictionaryPresentRule.instance("documentType", ProfileDocumentUpdateRequest::getDocumentType, diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/RelationValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/RelationValidationConfig.java index 50eac7ce2..c38a78d67 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/RelationValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/RelationValidationConfig.java @@ -72,44 +72,31 @@ public class RelationValidationConfig { Consumer addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s)); addImdg.accept(IMDGDistributedNames.Map_Relation); addImdg.accept(IMDGDistributedNames.Map_Company); -// addImdg.accept(IMDGDistributedNames.Map_ClearingCategoryDictionary); addImdg.accept(IMDGDistributedNames.Map_WorkflowStatusDictionary); addImdg.accept(IMDGDistributedNames.Map_ServiceStatusDictionary); return new ValidatorImpl<>(context, - IdPresentRule.instance("id", - RelationUpdateRequest::getId, - IMDGDistributedNames.Map_Relation, - Relation.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.RelationNotFound, - relation -> { - if (relation.getConsumerId() == null) return null; - Imdg companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); - Company company = companyImdg.getSingleObjectByID(relation.getConsumerId()); - if (company == null) { - return CompanyErrors.CompanyNotFound; - } else { - return null; - } - }), -// IdPresentRule.instance("companyId", -// RelationUpdateRequest::getCompanyId, -// IMDGDistributedNames.Map_Company, -// Company.class, -// CompanyErrors.RequiredFieldEmpty, -// CompanyErrors.CompanyNotFound), -// DictionaryPresentRule.instance("documentType", -// RelationUpdateRequest::getClearingMemberCategory, -// IMDGDistributedNames.Map_ClearingCategoryDictionary, -// ClearingCategoryDictionary.class, -// CompanyErrors.RequiredFieldEmpty, -// CompanyErrors.WrongFieldValue), - DictionaryPresentRule.instance("serviceStatus", - RelationUpdateRequest::getServiceStatus, - IMDGDistributedNames.Map_ServiceStatusDictionary, - ServiceStatusDictionary.class, - CompanyErrors.RequiredFieldEmpty, - CompanyErrors.DictionaryNotFound) + IdPresentRule.instance("id", + RelationUpdateRequest::getId, + IMDGDistributedNames.Map_Relation, + Relation.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.RelationNotFound, + relation -> { + if (relation.getConsumerId() == null) return null; + Imdg companyImdg = context.obtainMap(IMDGDistributedNames.Map_Company, Company.class); + Company company = companyImdg.getSingleObjectByID(relation.getConsumerId()); + if (company == null) { + return CompanyErrors.CompanyNotFound; + } else { + return null; + } + }), + DictionaryPresentRule.instance("serviceStatus", + RelationUpdateRequest::getServiceStatus, + IMDGDistributedNames.Map_ServiceStatusDictionary, + ServiceStatusDictionary.class, + CompanyErrors.RequiredFieldEmpty, + CompanyErrors.DictionaryNotFound) ); }; } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/SettlementHousePropertiesValidationConfig.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/SettlementHousePropertiesValidationConfig.java index c5a61fca9..611852900 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/SettlementHousePropertiesValidationConfig.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/config/validation/SettlementHousePropertiesValidationConfig.java @@ -186,7 +186,7 @@ public class SettlementHousePropertiesValidationConfig { T validatedObject = context.getValidatedObject(); Long companyId = companyIdGetter.apply(validatedObject); String currencyCode = currencyCodeGetter.apply(validatedObject); - if (CurrencyCode.isRub(currencyCode) && !Sender.Prc.equalsById(companyId)) { // RU and companyId <> 2 + if (CurrencyCode.isRub(currencyCode) && !Sender.Prc.equalsById(companyId)) { return of(CompanyErrors.RuCurrencyMayOnlyNKOAOPRC, currencyCode, companyId); } return empty(); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java index d1703fcfb..cee367a17 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/error/CompanyErrors.java @@ -3,35 +3,35 @@ package ru.spcex.clearing.company.error; import ru.spcex.platform.utils.enumeration.IErrorEnumId; public enum CompanyErrors implements IErrorEnumId { - GeneralError(3000L), // Общая ошибка модуля company-service - UserVerifyDenial(3001L), // 'Нет прав на проведение данной операции + GeneralError(3000L), + UserVerifyDenial(3001L), - RequiredFieldEmpty(3002L), // Не заданы обязательные поля %s. - DictionaryNotFound(3003L), // Запись с идентификатором %s в справочнике %s не найдена. - WrongFieldValue(3004L), // Неверное значение поля %s. - RecordAlreadyExist(3005L), // Запись с идентификатором %s уже существует. - RecordNotFound(3006L), // Запись с идентификатором %s не найдена. - CompanyALreadyExist(3010L), // Компания %s уже существует - CompanyNotFound(3011L), // Компания %s не найдена. - CompanyDisabled(3012L), // Компания %s неактивна. (параметр company.shortName) - ProfileNotFound(3013L), // Профиль компании %s не найден. - CompanyInfoNotFound(3014L), // Реквизит компании %s не найден. - ContactNotFound(3015L), // Контакт компании %s не найден. - CategoryNotFound(3016L), // Категория компании %s не найдена. - CategoryAlreadySet(3017L), // Компании %s уже присвоена категория %s. - CompanyAlreadyHasLiabilities(3018L), // У компании %s присутствуют обязательства. - CompanyWithCompanySymbolAlreadyExist(3019L), // Компания с %s = %s уже создана" (где первый %s - companySymbol, второй %s - companySymbolValue) - EditCompanySymbols(3020L), // Тип реквизита компании %s не может быть изменен. - EditContactType(3021L), // Тип контакта компании %s не может быть изменен. - TradingClearingRegistryNotFound(3022L), // ТКР с %s не найден - AccountNotFound(3023L), // Счет %s не найден - ClearingMemberCategoryOnMKRAlreadyExist(3024L), // Договорные отношения %s в секции МКР уже созданы. - ClearingMemberCategoryOnFONDAlreadyExist(3025L), // Договорные отношения %s на фондовой секции уже созданы. - RelationNotFound(3026L), // Запись о договорных отношениях не найдена - CurrencyAlreadyAdded(3031L), // Валюта %s уже добавлена - CompanyParametersNotFound(3032L), // Параметр компании %s не найден + RequiredFieldEmpty(3002L), + DictionaryNotFound(3003L), + WrongFieldValue(3004L), + RecordAlreadyExist(3005L), + RecordNotFound(3006L), + CompanyALreadyExist(3010L), + CompanyNotFound(3011L), + CompanyDisabled(3012L), + ProfileNotFound(3013L), + CompanyInfoNotFound(3014L), + ContactNotFound(3015L), + CategoryNotFound(3016L), + CategoryAlreadySet(3017L), + CompanyAlreadyHasLiabilities(3018L), + CompanyWithCompanySymbolAlreadyExist(3019L), + EditCompanySymbols(3020L), + EditContactType(3021L), + TradingClearingRegistryNotFound(3022L), + AccountNotFound(3023L), + ClearingMemberCategoryOnMKRAlreadyExist(3024L), + ClearingMemberCategoryOnFONDAlreadyExist(3025L), + RelationNotFound(3026L), + CurrencyAlreadyAdded(3031L), + CompanyParametersNotFound(3032L), RuCurrencyMayOnlyNKOAOPRC(3033L), - CompanyHasNoSETHRole(3034L), // Компания %s не является расчетной организацией + CompanyHasNoSETHRole(3034L), ; private final Long id; diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/AccountNotificationHelper.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/AccountNotificationHelper.java index c220cf6dd..4a28c28b5 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/AccountNotificationHelper.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/AccountNotificationHelper.java @@ -63,32 +63,19 @@ public class AccountNotificationHelper { public CompanyErrors accountTerminationByDocumentNotification(Long companyId, Long terminationDocumentId) { -// Collection accounts = accountMap.getCollectionObjectsBySQL("companyId=" + companyId); -// log.trace("Found {} accounts (will be terminated) by company {}", accounts.size(), companyId); -// for (Account account : accounts) { -// Collection liabilities = liabilitiesClaimsAssetsMap.getCollectionObjectsBySQL("accountId=" + account.getId()); -// for (LiabilitiesClaimsAssets liability : liabilities) { -// if (liability.getLiabilitiesQuantity() != null && BigDecimal.ZERO.compareTo(liability.getLiabilitiesQuantity()) == 0) { -// return CompanyErrors.CompanyAlreadyHasLiabilities; -// } -// } -// } -// log.debug("Sending messages to account-service for {} account", accounts.size()); AccountTerminationRequest requestBatch = createAccountsRequest(companyId, terminationDocumentId); Long reqId = kafkaSender.sendRequestToQueue(Consts.ACCOUNT_TERMINATION, requestBatch); log.debug("For terminate account send termination by document request id={}", reqId); - // ответ должен послаться в ACCOUNT_TERMINATION_STEP2 = "company-block"; return null; } public void makeInfoAccount(Long companyId) { InformationAccountNewRequest r = new InformationAccountNewRequest(); r.setCompanyId(companyId); - // формат "39911"+ "810" +"000001"(счётчик)+"7000"; пример: "39911810000000017000" log.debug("Sending messages to account-service {} for company {}", - Consts.INFORMATION_ACCOUNT_SYSTEM_NEW, companyId); + Consts.INFORMATION_ACCOUNT_SYSTEM_NEW, companyId); Long reqId = kafkaSender.sendRequestToQueue(Consts.INFORMATION_ACCOUNT_SYSTEM_NEW, r); log.debug("Send request id={}", reqId); } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java index 5d0a3825e..8682b9ff1 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ClearingMemberCategoryService.java @@ -132,8 +132,6 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init log.debug("ClearingMemberCategoryUpdateRequest received"); ClearingMemberCategory clearingMemberCategory = clearingMemberCategoryMap.getSingleObjectByID(req.getId()); - - // if (Objects.equals(clearingMemberCategory.getClearingMemberCategory(), req.getClearingMemberCategory())) String oldClearingMemberCategory = clearingMemberCategory.getClearingMemberCategory(); clearingMemberCategory.setClearingMemberCategory(req.getClearingMemberCategory()); synchronized (companyService) { @@ -141,9 +139,6 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init transaction.beginTransaction(); boolean txOk = false; try { - //todo сложный кейс с возможным изменением релейшена или пересозданием. Скоро ТЗ доделают. - //companyService.relationService.updateExistRelation(transaction,clearingMemberCategory.getCompanyId(), oldClearingMemberCategory, - // clearingMemberCategory.getClearingMemberCategory()); companyService.relationService.createNewRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory); Imdg txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); txClearingMemberCategoryMap.insert(clearingMemberCategory); @@ -178,8 +173,8 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init boolean txOk = false; try { Imdg txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); - txClearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции - if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные + txClearingMemberCategoryMap.delete(clearingMemberCategory); + if (clearingMemberCategory.getCompanyId() == null) { log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId()); } else { companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java index ccdd7723e..aecbfaf64 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyInfoService.java @@ -65,8 +65,8 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea .setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request)) .forDestination(Consts.DESTINATION_COMPANY_INFO_UPDATE, callbacks::put); callback(CompanyInfoUpdateRequest.class) - .setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request)) - .forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); // логика заполнения одинакова с companyInfoUpdate + .setFunction(request -> requestHelper.requestFunction(this::companyInfoUpdate, request)) + .forDestination(Consts.DESTINATION_COMPANY_INFO_NEW, callbacks::put); init(); } @@ -74,7 +74,7 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea public RequestInfoUpdate companyInfoUpdate(BaseRequest companyInfoReq) throws ValidationException { CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload(); log.debug("{} received", req.getClass().getSimpleName()); - { // Валидация, ValidationException + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq); if (requestInfoUpdate != null) return requestInfoUpdate; diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java index 50e197e7e..32892f409 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyRoleSetService.java @@ -41,7 +41,6 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing private final RequestHelper requestHelper; private final ImdgProvider imdgProvider; - // private final Imdg companyMap; private final Imdg companyRoleSetMap; private final ImdgId idSequence; protected UserRoleVerification userRoleVerification; @@ -69,7 +68,6 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing super(kafkaQueue, kafkaProducer); this.imdgProvider = imdgProvider; this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); -// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.idSequence = imdgProvider.getImdgIdGenerator(); this.userRoleVerification = userRoleVerification; this.validationHelper = validationHelper; @@ -97,7 +95,7 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing private RequestInfoUpdate createCompanyRoleSet(BaseRequest companyRoleNewRequestBaseRequest) throws ValidationException { CompanyRoleSetNewRequest req = companyRoleNewRequestBaseRequest.getRequestPayload(); log.debug("companyroleset-new request received, BaseRequest.id = {}", companyRoleNewRequestBaseRequest.getId()); - { // Валидация, ValidationException + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyRoleNewRequestBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleNewRequestBaseRequest, companyRoleSetNewRequestValidator); @@ -134,7 +132,7 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing private RequestInfoUpdate updateCompanyRoleSet(BaseRequest companyRoleUpdateRequestBaseRequest) throws ValidationException { CompanyRoleSetUpdateRequest req = companyRoleUpdateRequestBaseRequest.getRequestPayload(); log.debug("companyroleset-update request received, BaseRequest.id = {}", companyRoleUpdateRequestBaseRequest.getId()); - { // Валидация, ValidationException + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyRoleUpdateRequestBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleUpdateRequestBaseRequest, companyRoleSetUpdateRequestValidator); @@ -173,7 +171,7 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing private RequestInfoUpdate deleteCompanyRoleSet(BaseRequest companyRoleSetDeleteRequest) throws ValidationException { CommonDeleteRequest request = companyRoleSetDeleteRequest.getRequestPayload(); log.debug("companyRoleSetDeleteRequest received id = {}", request.getId()); - { // Валидация, ValidationException + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyRoleSetDeleteRequest); if (requestInfoUpdate != null) return requestInfoUpdate; requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleSetDeleteRequest, companyRoleSetDeleteRequestValidator); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java index 62a0d4987..2fbec5240 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanyService.java @@ -113,18 +113,12 @@ public class CompanyService extends QueueConsumer implements InitializingBean { } private RequestInfoUpdate processBaseRequest(BaseRequest request) throws ValidationException { - // Валидация RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request); if (requestInfoUpdate != null) return requestInfoUpdate; ActionType actionType = request.getActionType(); switch (actionType) { case NEW -> { CompanyNewRequest companyNewRequest = (CompanyNewRequest) request.getRequestPayload(); -// IValidator validator = companyNewRequestValidator.apply(companyNewRequest); -// Optional error = validator.tillFirstError(); -// if (error.isPresent()) { -// throw new ValidationException(error.get()); -// } create(companyNewRequest); } case UPDATE -> update((CompanyNewRequest) request.getRequestPayload(), true); @@ -206,10 +200,6 @@ public class CompanyService extends QueueConsumer implements InitializingBean { log.trace("Company {} not found", updateRequest.getId()); throw new ValidationException(new EnumMessage(CompanyErrors.CompanyNotFound)); } -// if (!WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) { -// log.trace("Company {} not active: {}", company.getId(), company.getWorkflowStatus()); -// return requestHelper.makeErrorResponse(companyUpdateRequestBaseRequest, CompanyErrors.CompanyDisabled, updateRequest.getId()); -// } company.setUpdated(Instant.now()); if (StringUtils.isNotEmpty(updateRequest.getShortName())) @@ -285,16 +275,10 @@ public class CompanyService extends QueueConsumer implements InitializingBean { } } - /** - * Блокировка компании - * - * @param companyBlockRequestBaseRequest - * @return - */ private synchronized RequestInfoUpdate deleteCompany(BaseRequest companyBlockRequestBaseRequest) throws ValidationException { CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload(); log.debug("CommonDeleteRequest (block request) received id = {}", request.getId()); - { // Валидация + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -332,21 +316,12 @@ public class CompanyService extends QueueConsumer implements InitializingBean { } - /** - * Блокировка компании по документу о расторжении - * - * @param companyBlockRequestBaseRequest - * @return - */ private synchronized RequestInfoUpdate blockCompanyAfterDocument(BaseRequest companyBlockRequestBaseRequest) throws ValidationException { CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload(); log.debug("CommonDeleteRequest (block request) received id = {}", request.getId()); - { // Валидация + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyBlockRequestBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; - -// requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator); -// if (requestInfoUpdate != null) return requestInfoUpdate; } Company company = companyIMap.getSingleObjectByID(request.getId()); @@ -384,15 +359,10 @@ public class CompanyService extends QueueConsumer implements InitializingBean { return null; } - /** - * Блокировка компании после блокировки счетов - * - * @return - */ private synchronized RequestInfoUpdate finishCompanyTermination(BaseRequest terminationRequest) throws ValidationException { AccountTerminationRequest request = terminationRequest.getRequestPayload(); log.debug("AccountTerminationRequest (block request) received id = {}", terminationRequest.getId()); - { // Валидация + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(terminationRequest); if (requestInfoUpdate != null) return requestInfoUpdate; } @@ -405,11 +375,9 @@ public class CompanyService extends QueueConsumer implements InitializingBean { Company company = companyIMap.getSingleObjectByID(request.getCompanyId()); if (company == null) { log.warn("Company {} not found", request.getCompanyId()); - //return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyNotFound); } if (WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus())) { log.info("Company {} already blocked", company.getId()); - //return requestHelper.makeErrorResponse(companyBlockRequestBaseRequest, CompanyErrors.CompanyDisabled); } else { company.setWorkflowStatus(WorkflowStatus.Blocked.getKey()); company.setUpdated(Instant.now()); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java index 3d3cc40e0..f547a7643 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/CompanySymbolService.java @@ -93,7 +93,6 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB private RequestInfoUpdate processBaseRequest(BaseRequest request) { RequestInfoUpdate requestInfoUpdate = null; - // Валидация requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(request); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -112,7 +111,7 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB public Long create(CompanySymbolNewRequest symbolRequest) throws ValidationException { log.debug("CompanySymbolNewRequest received"); - { // validate + { IValidator validator = companySymbolNewRequestValidator.apply(symbolRequest); Optional error = validator.tillFirstError(); if (error.isPresent()) { @@ -159,7 +158,7 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB CompanySymbolUpdateRequest req = symbolRequest.getRequestPayload(); log.debug("CompanySymbolUpdateRequest received, id={}", symbolRequest.getId()); - { // validate + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -203,7 +202,7 @@ public class CompanySymbolService extends QueueConsumer implements InitializingB CommonDeleteRequest req = symbolRequest.getRequestPayload(); log.debug("CommonDeleteRequest for CompanySymbol received, id={}", symbolRequest.getId()); - { // validate + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(symbolRequest); if (requestInfoUpdate != null) return requestInfoUpdate; diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ContactService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ContactService.java index 48d592a95..b0d10729a 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ContactService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ContactService.java @@ -95,8 +95,6 @@ public class ContactService extends QueueConsumer implements InitializingBean { requestInfoUpdate = validationHelper.validateTillFirstError(userRequest, contactUpdateRequestValidator); if (requestInfoUpdate != null) return requestInfoUpdate; - - // Тип контакта не меняем, при валидации кидаем ошибку. ContactUpdateRequest req = userRequest.getRequestPayload(); Contact contact = contactMap.getSingleObjectByID(req.getId()); contact.setContactValue(req.getContactValue()); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java index 22dc30751..37c6c2f9a 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/MultiCompanyService.java @@ -38,18 +38,14 @@ import java.util.function.BiFunction; import java.util.stream.Collectors; import java.util.stream.Stream; -/** - * Обрабатывает MultiCompanyRequest и распределяет сложный объект по... - */ @Service public class MultiCompanyService - extends QueueConsumer implements InitializingBean { + extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); private final RequestHelper requestHelper; protected UserRoleVerification userRoleVerification; - // private final ValidationHelper validationHelper; protected IMessageResolver messageResolver; final CompanyService companyService; @@ -108,26 +104,25 @@ public class MultiCompanyService @Override public void afterPropertiesSet() { callback(CompanyGatewayRequest.class) - .setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request)) - .forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put); + .setFunction(request -> requestHelper.requestFunction(this::processMultiRequest, request)) + .forDestination(Consts.DESTINATION_COMPANY_GATEWAY_REQUEST, callbacks::put); init(); } private synchronized RequestInfoUpdate processMultiRequest(BaseRequest baseRequest) { CompanyGatewayRequest req = baseRequest.getRequestPayload(); log.debug("company-batch-new request received, BaseRequest.id = {}", baseRequest.getId()); - { // Валидация + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(baseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; } Long companyId = null; - boolean txOk = false; // todo IMDG transaction + boolean txOk = false; synchronized (companyService) { try { - //часть в companyService req.setCompanySymbols( - Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList()) + Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList()) ); companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany(), req.getCompanySymbols()); log.debug("For request {} (uuid {}) company {}.", baseRequest.getId(), req.getUuid(), companyId == null ? "not found" : ("found, id=" + companyId)); @@ -209,7 +204,7 @@ public class MultiCompanyService if (txOk) { log.debug("Create or update sendNewClientCode for company {}", companyId); for (ClientCodeNewRequest partRequest : req.getClientCodes()) { - accountNotification.clientCodeNew(partRequest); // Consts.DESTINATION_CLIENT_CODE_NEW Consts.DESTINATION_CLIENT_CODE_UPDATE + accountNotification.clientCodeNew(partRequest); } } @@ -227,11 +222,11 @@ public class MultiCompanyService return Optional.of(companySymbolNewRequest); }; return Stream.of(symbolCreation.apply(CompanySymbol.TRDC.getKey(), companyNewReq.getTradingCode()), - symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()), - symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()), - symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode())) - .filter(Optional::isPresent) - .map(Optional::get); + symbolCreation.apply(CompanySymbol.CLRC.getKey(), companyNewReq.getClearingCode()), + symbolCreation.apply(CompanySymbol.INTC.getKey(), companyNewReq.getInitiatorCode()), + symbolCreation.apply(CompanySymbol.RGRC.getKey(), companyNewReq.getRegistrationCode())) + .filter(Optional::isPresent) + .map(Optional::get); } void validateReply(Long companyId, String process, RequestInfoUpdate replyI) { @@ -244,7 +239,7 @@ public class MultiCompanyService Map> query = new HashMap<>(); query.put("companyId", partRequest.getCompanyId()); query.put("documentType", partRequest.getDocumentType()); - query.put("issueDate", partRequest.getIssueDate()); // может быть null + query.put("issueDate", partRequest.getIssueDate()); Collection allDoc = profileDocumentImdg.getCollectionObjectsByFieldValues(query); if (allDoc.isEmpty()) return null; @@ -336,10 +331,10 @@ public class MultiCompanyService if (StringUtils.isNotEmpty(uuid)) { log.trace("Search company by companySymbol uuid={}", uuid); Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues( - Map.of( - "companySymbol", CompanySymbol.UUID.getKey(), - "companySymbolValue", uuid - ) + Map.of( + "companySymbol", CompanySymbol.UUID.getKey(), + "companySymbolValue", uuid + ) ); if (!companySymbolsFromImdg.isEmpty()) { companySymbol = companySymbolsFromImdg.iterator().next(); @@ -349,17 +344,17 @@ public class MultiCompanyService } } if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue()) - && IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID + && IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.UUID, CompanySymbol.INN, CompanySymbol.CIO)) { { String companySymbolType = cnr.getCompanySymbol(); log.debug("Company not found by UUID=\"{}\", try find by {}={}", - uuid, companySymbolType, cnr.getCompanySymbolValue()); + uuid, companySymbolType, cnr.getCompanySymbolValue()); log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue()); Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues( - Map.of( - "companySymbol", companySymbolType, - "companySymbolValue", cnr.getCompanySymbolValue() - ) + Map.of( + "companySymbol", companySymbolType, + "companySymbolValue", cnr.getCompanySymbolValue() + ) ); if (!companySymbolsFromImdg.isEmpty()) { companySymbol = companySymbolsFromImdg.iterator().next(); @@ -376,10 +371,10 @@ public class MultiCompanyService log.debug("Company not found by UUID=\"{}\", try find by {}", uuid, companySymbolType); log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue()); Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues( - Map.of( - "companySymbol", companySymbolType, - "companySymbolValue", cSymbolReq.getCompanySymbolValue() - ) + Map.of( + "companySymbol", companySymbolType, + "companySymbolValue", cSymbolReq.getCompanySymbolValue() + ) ); if (!companySymbolsFromImdg.isEmpty()) { companySymbol = companySymbolsFromImdg.iterator().next(); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java index 8a548c097..8c7e989d1 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/ProfileDocumentService.java @@ -242,20 +242,14 @@ public class ProfileDocumentService extends QueueConsumer implements Initializin } if (!WorkflowStatus.Active.equalsByKey(existCompany.getWorkflowStatus())) { log.warn("Current workflowStatus {} for company {}. Do not termination account.", - existCompany.getWorkflowStatus(), existCompany.getId()); + existCompany.getWorkflowStatus(), existCompany.getId()); } CompanyErrors hasError = accountNotificationHelper.accountTerminationByDocumentNotification(profileDocument.getCompanyId(), profileDocument.getId()); if (hasError != null) { log.error("Error at termination account of company {} by document {}: {}", - profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")"); + profileDocument.getCompanyId(), profileDocument.getId(), hasError + "(" + hasError.getId() + ")"); } log.debug("Now wait notification from account-service."); - /* processXCNT - Дальнейшая обработка документа о расторжении, то есть обновление статусов в company и relation, возможна только после ответа об успешном обновлении статуса в account. - ACCOUNT_TERMINATION -> ACCOUNT_TERMINATION_STEP2 - 1.2. Обновить статус в бизнес-объекте company [profileDocument.companyId=company.id] согласно описанию с тегом "При расторжении". - 1.3. Обновить статус в бизнес-объекте relation [profileDocument.companyId=relation.consumerId] согласно описанию с тегом "При расторжении". - */ } } diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java index 4d9056990..784b70a05 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/RelationService.java @@ -51,7 +51,7 @@ import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; @Service public class RelationService extends QueueConsumer implements InitializingBean { - protected static final Long SPVB_ID = 1L; // СПВБ + protected static final Long SPVB_ID = 1L; protected final Logger log = LoggerFactory.getLogger(getClass()); protected ImdgProvider imdgProvider; @@ -98,21 +98,18 @@ public class RelationService extends QueueConsumer implements InitializingBean { this.requestHelper = requestHelper.setLogger(log); } - // --- external API --- @Override public void afterPropertiesSet() { -// this.profileDocumentMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); -// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); callback(RelationNewRequest.class) - .setFunction(this::relationNew) - .forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put); + .setFunction(this::relationNew) + .forDestination(Consts.DESTINATION_RELATION_NEW, callbacks::put); callback(RelationUpdateRequest.class) - .setFunction(this::relationUpdate) - .forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put); + .setFunction(this::relationUpdate) + .forDestination(Consts.DESTINATION_RELATION_UPDATE, callbacks::put); callback(CommonDeleteRequest.class) - .setFunction(this::relationDelete) - .forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put); + .setFunction(this::relationDelete) + .forDestination(Consts.DESTINATION_RELATION_DELETE, callbacks::put); init(); } @@ -120,7 +117,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { RelationNewRequest req = relationNewBaseRequest.getRequestPayload(); log.debug("relation-new request received, BaseRequest.id = {}", relationNewBaseRequest.getId()); - { //проверка заполнен ли serviceStatus + { String serviceStatus = req.getServiceStatus(); if (serviceStatus == null || serviceStatus.isEmpty()) { Company company = companyMap.getSingleObjectByID(req.getCompanyId()); @@ -129,7 +126,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { } } } - { // Валидация + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(relationNewBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -142,12 +139,12 @@ public class RelationService extends QueueConsumer implements InitializingBean { Relation existRelation = searchRelation(null, req.getClearingMemberCategory(), req.getCompanyId()); boolean isClosedRelation = existRelation != null && IEnumKey.contains - (existRelation.getServiceStatus(), Closed, ServiceStatus.Blocked, ServiceStatus.Suspended); + (existRelation.getServiceStatus(), Closed, ServiceStatus.Blocked, ServiceStatus.Suspended); if (existRelation != null && !isClosedRelation) { CompanyErrors errorType; if (MKR.equalsByKey(existRelation.getService())) { errorType = CompanyErrors.ClearingMemberCategoryOnMKRAlreadyExist; - } else if (ru.spcex.platform.enumeration.Service.FOND.equalsByKey(existRelation.getService())) { + } else if (FOND.equalsByKey(existRelation.getService())) { errorType = CompanyErrors.ClearingMemberCategoryOnFONDAlreadyExist; } else { log.warn("Unknown relation[{}] service={}", existRelation.getId(), existRelation.getService()); @@ -170,7 +167,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { } relation.setConsumerId(req.getCompanyId()); - relation.setSupplierId(SPVB_ID); // 1 СПВБ + relation.setSupplierId(SPVB_ID); if (req.getServiceStatus() != null) { relation.setServiceStatus(req.getServiceStatus()); } else { @@ -179,15 +176,15 @@ public class RelationService extends QueueConsumer implements InitializingBean { log.debug("Request has no status. Set status by resume: {}", relation.getServiceStatus()); } else { String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() : - WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() : - null; + WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() : + null; log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}", - company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus); + company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus); relation.setServiceStatus(toStatus); } } String service = serviceForCMC(req.getClearingMemberCategory()); - relation.setService(service); // MKR + relation.setService(service); relation.setServiceProduct(ServiceProduct.ZERO.getKey()); relation.setComment(req.getComment()); @@ -209,19 +206,19 @@ public class RelationService extends QueueConsumer implements InitializingBean { log.debug("New relation.id={}", relation.getId()); relation.setConsumerId(companyId); - relation.setSupplierId(SPVB_ID); // 1 СПВБ + relation.setSupplierId(SPVB_ID); if (req.getServiceStatus() != null) { relation.setServiceStatus(req.getServiceStatus()); } else { String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() : - WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() : - null; + WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() : + null; log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}", - company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus); + company.getId(), company.getWorkflowStatus(), relation.getId(), toStatus); relation.setServiceStatus(toStatus); } String service = serviceForCMC(clearingMemberCategory); - relation.setService(service); // MKR + relation.setService(service); relation.setServiceProduct(ServiceProduct.ZERO.getKey()); relation.setComment(req.getComment()); @@ -234,14 +231,14 @@ public class RelationService extends QueueConsumer implements InitializingBean { String serviceForCMC(String clearingMemberCategory) { String svc = null; if (ClearingCategory.B.equalsByKey(clearingMemberCategory) - || ClearingCategory.I.equalsByKey(clearingMemberCategory) - || ClearingCategory.V.equalsByKey(clearingMemberCategory) + || ClearingCategory.I.equalsByKey(clearingMemberCategory) + || ClearingCategory.V.equalsByKey(clearingMemberCategory) ) { svc = MKR.getKey(); } else if (ClearingCategory.C.equalsByKey(clearingMemberCategory) - || ClearingCategory.F.equalsByKey(clearingMemberCategory) + || ClearingCategory.F.equalsByKey(clearingMemberCategory) ) { - svc = ru.spcex.platform.enumeration.Service.FOND.getKey(); + svc = FOND.getKey(); } return svc; } @@ -265,8 +262,8 @@ public class RelationService extends QueueConsumer implements InitializingBean { } Imdg currentRelationMap = tx == null ? relationMap : tx.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); Relation existRelation = currentRelationMap.getFirstObjectByFieldValues(Map.of( - "consumerId", consumerId, - "service", svc + "consumerId", consumerId, + "service", svc )); if (existRelation == null) log.trace("Relation with consumerId={} and service={} not exist.", consumerId, svc); @@ -278,40 +275,34 @@ public class RelationService extends QueueConsumer implements InitializingBean { Collection selectCompanyClearingMemberCategory(ImdgTransaction tx, Long companyId) { Imdg cmcMap = tx == null ? clearingMemberCategoryImdg : tx.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); Collection companyCategory = cmcMap.getCollectionObjectsByFieldValues( - Map.of("companyId", companyId) + Map.of("companyId", companyId) ); return companyCategory.stream() - .map(ClearingMemberCategory::getClearingMemberCategory) - .filter(StringUtils::isNotEmpty) - .distinct() - .collect(Collectors.toList()); + .map(ClearingMemberCategory::getClearingMemberCategory) + .filter(StringUtils::isNotEmpty) + .distinct() + .collect(Collectors.toList()); } - /** - * @param companyId - * @param service - * @param statusActive фильтр, если null - разрешает всё. - * @return - */ Relation selectRelation(ImdgTransaction tx, Long companyId, String service, Boolean statusActive) { Objects.requireNonNull(companyId, "companyId"); Objects.requireNonNull(service, "service"); Imdg relationMap = tx.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); Collection relations = relationMap.getCollectionObjectsByFieldValues(Map.of("consumerId", companyId, "service", service)); Optional r = relations.stream() - .filter(rel -> { - if (statusActive == null) return true; - boolean wasClosed = IEnumKey.contains(rel.getServiceStatus(), - Closed, ServiceStatus.Suspended, ServiceStatus.Blocked); - return statusActive ? !wasClosed : wasClosed; - }).findFirst(); + .filter(rel -> { + if (statusActive == null) return true; + boolean wasClosed = IEnumKey.contains(rel.getServiceStatus(), + Closed, ServiceStatus.Suspended, ServiceStatus.Blocked); + return statusActive ? !wasClosed : wasClosed; + }).findFirst(); if (r.isPresent()) { log.trace("Found relation[{}] by consumerId={} and service={} and active={}", - r.get().getId(), companyId, service, statusActive); + r.get().getId(), companyId, service, statusActive); return r.get(); } else { log.trace("Relation not found by consumerId={} and service={} and active={}", - companyId, service, statusActive); + companyId, service, statusActive); return null; } } @@ -319,7 +310,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { private synchronized RequestInfoUpdate relationUpdate(BaseRequest relationUpdateBaseRequest) { RelationUpdateRequest req = relationUpdateBaseRequest.getRequestPayload(); log.debug("relation-update request received, BaseRequest.id = {}", relationUpdateBaseRequest.getId()); - { // Валидация + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(relationUpdateBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -331,7 +322,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { final Long companyId = relation.getConsumerId(); Collection companyCMC = selectCompanyClearingMemberCategory(null, companyId); boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey()) - || companyCMC.contains(ClearingCategory.V.getKey()); + || companyCMC.contains(ClearingCategory.V.getKey()); boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey()); String firstCMC = companyCMC.isEmpty() ? null : companyCMC.iterator().next(); @@ -339,12 +330,10 @@ public class RelationService extends QueueConsumer implements InitializingBean { boolean txOk = false; try { tx.beginTransaction(); - //relationUpdate0(tx, req, relation); // первоначальное ТЗ. - boolean needAddNewRelation = false; // call relationNew0(req, companyId, firstCMC); - if (ru.spcex.platform.enumeration.Service.MKR.equalsByKey(relation.getService())) { // relation B or I or V + boolean needAddNewRelation = false; + if (MKR.equalsByKey(relation.getService())) { if (companyCMCisCF) { - // 4.1. Если clearingMemberCategory = B or I or V и для этой компании установлены clearingMemberCategory = C or F: Relation relation1 = selectRelation(tx, companyId, MKR.getKey(), false); if (relation1 != null) { relationUpdate0WithResume(tx, req, relation1); @@ -353,13 +342,11 @@ public class RelationService extends QueueConsumer implements InitializingBean { } Relation relation2 = selectRelation(tx, companyId, MKR.getKey(), true); if (relation2 != null) { - // nothing } else { needAddNewRelation = true; } } if (!companyCMCisCF) { - // 4.3. Если clearingMemberCategory = B or I or V и для этой компании не установлены clearingMemberCategory = C or F: Relation relation1 = selectRelation(tx, companyId, MKR.getKey(), false); if (relation1 != null) { relationUpdate0WithResume(tx, req, relation1); @@ -368,19 +355,16 @@ public class RelationService extends QueueConsumer implements InitializingBean { } Relation relation2 = selectRelation(tx, companyId, MKR.getKey(), true); if (relation2 != null) { - // nothing } else { needAddNewRelation = true; } Relation relation3 = selectRelation(tx, companyId, FOND.getKey(), null); if (relation3 != null) { - // nothing relationClose0(tx, relation3); } } - } else if (FOND.equalsByKey(relation.getService())) { // relation C or F + } else if (FOND.equalsByKey(relation.getService())) { if (companyCMCisBIV) { - // 4.2. Если clearingMemberCategory = C or F и для этой компании установлены clearingMemberCategory = B or I or V: Relation relation1 = selectRelation(tx, companyId, FOND.getKey(), false); if (relation1 != null) { relationUpdate0WithResume(tx, req, relation1); @@ -389,13 +373,11 @@ public class RelationService extends QueueConsumer implements InitializingBean { } Relation relation2 = selectRelation(tx, companyId, FOND.getKey(), true); if (relation2 != null) { - // nothing } else { needAddNewRelation = true; } } if (!companyCMCisBIV) { - // 4.4. Если clearingMemberCategory = C or F и для этой компании установлены не clearingMemberCategory = B or I or V: Relation relation1 = selectRelation(tx, companyId, FOND.getKey(), false); if (relation1 != null) { relationUpdate0WithResume(tx, req, relation1); @@ -404,7 +386,6 @@ public class RelationService extends QueueConsumer implements InitializingBean { } Relation relation2 = selectRelation(tx, companyId, FOND.getKey(), true); if (relation2 != null) { - // nothing } else { needAddNewRelation = true; } @@ -414,7 +395,6 @@ public class RelationService extends QueueConsumer implements InitializingBean { } } } else { - // unknown type relationUpdate0(tx, req, relation); } @@ -440,21 +420,21 @@ public class RelationService extends QueueConsumer implements InitializingBean { if (req.getServiceStatus() != null) { log.debug("To relation {} set serivceStatus=\"{}\" by user request.", relation.getId(), req.getServiceStatus()); relation.setServiceStatus(req.getServiceStatus()); - } else { // never - см. валидатор relationUpdateRequestValidator + } else { if (relation.getConsumerId() == null) { log.warn("Relation[{}]. consumerId was null", relation.getId()); } Company company = companyMap.getSingleObjectByID(relation.getConsumerId()); String toStatus = WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? ServiceStatus.Active.getKey() : - WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() : - null; + WorkflowStatus.Blocked.equalsByKey(company.getWorkflowStatus()) ? Closed.getKey() : + null; if (ServiceStatus.Active.equalsByKey(toStatus) && Closed.equalsByKey(relation.getServiceStatus())) { relation.setServiceStatus(ServiceStatus.Reopened.getKey()); log.debug("Set status by resume: {}", relation.getServiceStatus()); } else { relation.setServiceStatus(toStatus); log.debug("Request has no status. Set status by company[{}].status={}. Relation[{}].serviceSStatus={}", - company.getId(), company.getWorkflowStatus(), toStatus, relation.getServiceStatus()); + company.getId(), company.getWorkflowStatus(), toStatus, relation.getServiceStatus()); } } @@ -484,7 +464,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { } private synchronized void relationClose0(ImdgTransaction tx, Relation relation) { - if (ServiceStatus.Closed.equalsByKey((relation.getServiceStatus()))) { + if (Closed.equalsByKey((relation.getServiceStatus()))) { log.debug("Relation {} already closed.", relation.getId()); return; } @@ -500,7 +480,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { private synchronized RequestInfoUpdate relationDelete(BaseRequest relationDeleteBaseRequest) { CommonDeleteRequest req = relationDeleteBaseRequest.getRequestPayload(); log.debug("relation-delete request received, BaseRequest.id = {}", relationDeleteBaseRequest.getId()); - { // Валидация + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(relationDeleteBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; @@ -514,17 +494,13 @@ public class RelationService extends QueueConsumer implements InitializingBean { Collection companyCMC = selectCompanyClearingMemberCategory(null, companyId); boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey()) - || companyCMC.contains(ClearingCategory.V.getKey()); + || companyCMC.contains(ClearingCategory.V.getKey()); boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey()); if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) { - // relation не изменяем } else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) { - // relation не изменяем } else { - // удалить. } - // else { ImdgTransaction tx = imdgProvider.newTransaction(); boolean txOk = false; @@ -559,9 +535,6 @@ public class RelationService extends QueueConsumer implements InitializingBean { return null; } - - // --- internal API --- - protected void createNewRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) { Objects.requireNonNull(companyId, "companyId"); Imdg relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); @@ -588,7 +561,7 @@ public class RelationService extends QueueConsumer implements InitializingBean { log.debug("Update exist relation.id={}", relation.getId()); } relation.setConsumerId(companyId); - relation.setSupplierId(SPVB_ID); // 1 СПВБ + relation.setSupplierId(SPVB_ID); relation.setServiceStatus(Objects.requireNonNull(workflowStatus).getKey()); relation.setService(serviceStatus); relation.setServiceProduct(ServiceProduct.ZERO.getKey()); @@ -596,28 +569,17 @@ public class RelationService extends QueueConsumer implements InitializingBean { relationMap.insert(relation); } - /** - * Приходит от ClearingMemberCategory - */ protected void cancelRelation(ImdgTransaction transaction, Long companyId, ClearingMemberCategory clearingMemberCategory) { log.debug("Cancelling relations for companyId={} and clearingMemberCategory {}", companyId, clearingMemberCategory == null ? null : clearingMemberCategory.getClearingMemberCategory()); Objects.requireNonNull(companyId, "companyId"); Imdg relationMap = transaction.getImdg(IMDGDistributedNames.Map_Relation, Relation.class); -// String serviceStatus = null; -// if (clearingMemberCategory == null) { -// log.warn("clearingMemberCategory not set for companyId={}", companyId); -// } else { -// ClearingCategory clearingCategory = getEnumByKey(ClearingCategory.class, clearingMemberCategory.getClearingMemberCategory()); -// serviceStatus = serviceForCMC(clearingCategory).getKey(); -// } Collection companyCMC = selectCompanyClearingMemberCategory(null, companyId); if (companyCMC.contains(clearingMemberCategory.getClearingMemberCategory())) { - // never log.warn("ClearingMemberCategory \"{}\" already exist in set for company {}.", clearingMemberCategory.getClearingMemberCategory(), companyId); } boolean companyCMCisBIV = companyCMC.contains(ClearingCategory.B.getKey()) || companyCMC.contains(ClearingCategory.I.getKey()) - || companyCMC.contains(ClearingCategory.V.getKey()); + || companyCMC.contains(ClearingCategory.V.getKey()); boolean companyCMCisCF = companyCMC.contains(ClearingCategory.C.getKey()) || companyCMC.contains(ClearingCategory.F.getKey()); @@ -626,13 +588,10 @@ public class RelationService extends QueueConsumer implements InitializingBean { log.debug("Relation for clearingMemberCategory.id={} {} not found", clearingMemberCategory.getId(), clearingMemberCategory.getClearingMemberCategory()); } else { if (companyCMCisBIV && MKR.equalsByKey(relation.getService())) { - // relation не изменяем log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory()); } else if (companyCMCisCF && FOND.equalsByKey(relation.getService())) { - // relation не изменяем log.debug("Relation {} {} lost for ClearingMemberCategory \"{}\".", relation.getId(), relation.getService(), clearingMemberCategory.getClearingMemberCategory()); } else { - // удалить. log.debug("Block exist relation.id={}", relation.getId()); relation.setUpdated(Instant.now()); relation.setServiceStatus(Closed.getKey()); @@ -669,18 +628,12 @@ public class RelationService extends QueueConsumer implements InitializingBean { log.debug("New Relation[{}] updated.", relation.getId()); } - /** - * @param company - * @param oldStatus - * @param newStatus WorkflowStatus.Active - при возобналвении; WorkflowStatus.Blocked - при блокировки/расторжении - */ public void onChangeWorkflowStatus(ImdgTransaction transaction, Company company, String oldStatus, String newStatus) throws ValidationException { log.debug("Company id={} status changed from {} to {}", - company.getId(), oldStatus, company.getWorkflowStatus()); + company.getId(), oldStatus, company.getWorkflowStatus()); onChangeWorkflowStatusOnlyRelationChange(transaction, company, newStatus); if (WorkflowStatus.Blocked.equalsByKey(newStatus)) { - // IV - сообщения на добавления документа расторжения договора CompanyErrors hasError = accountNotification.accountTerminationNotification(company.getId()); if (hasError != null) { log.warn("Can not block company, cause error {}", hasError); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/SettlementHousePropertiesService.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/SettlementHousePropertiesService.java index 895788e2b..1094204ae 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/SettlementHousePropertiesService.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/service/SettlementHousePropertiesService.java @@ -40,7 +40,6 @@ public class SettlementHousePropertiesService extends QueueConsumer implements I private final RequestHelper requestHelper; private final ImdgProvider imdgProvider; - // private final Imdg companyMap; private final Imdg settlementHousePropertiesMap; private final ImdgId idSequence; protected UserRoleVerification userRoleVerification; @@ -68,7 +67,6 @@ public class SettlementHousePropertiesService extends QueueConsumer implements I super(kafkaQueue, kafkaProducer); this.imdgProvider = imdgProvider; this.settlementHousePropertiesMap = imdgProvider.getImdg(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class); -// this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class); this.idSequence = imdgProvider.getImdgIdGenerator(); this.userRoleVerification = userRoleVerification; this.validationHelper = validationHelper; @@ -96,7 +94,7 @@ public class SettlementHousePropertiesService extends QueueConsumer implements I private RequestInfoUpdate createSettlementHouseProperty(BaseRequest settlementHousePropertyNewRequestBaseRequest) throws ValidationException { SettlementHousePropertyNewRequest req = settlementHousePropertyNewRequestBaseRequest.getRequestPayload(); log.debug("SettlementHouseProperty-new request received, BaseRequest.id = {}", settlementHousePropertyNewRequestBaseRequest.getId()); - { // Валидация, ValidationException + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyNewRequestBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyNewRequestBaseRequest, settlementHousePropertyNewRequestValidator); @@ -117,7 +115,7 @@ public class SettlementHousePropertiesService extends QueueConsumer implements I private RequestInfoUpdate updateSettlementHouseProperty(BaseRequest settlementHousePropertyUpdateRequestBaseRequest) throws ValidationException { SettlementHousePropertyUpdateRequest req = settlementHousePropertyUpdateRequestBaseRequest.getRequestPayload(); log.debug("SettlementHouseProperty-update request received, BaseRequest.id = {}", settlementHousePropertyUpdateRequestBaseRequest.getId()); - { // Валидация, ValidationException + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyUpdateRequestBaseRequest); if (requestInfoUpdate != null) return requestInfoUpdate; requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyUpdateRequestBaseRequest, settlementHousePropertyUpdateRequestRequestValidator); @@ -137,7 +135,7 @@ public class SettlementHousePropertiesService extends QueueConsumer implements I private RequestInfoUpdate deleteSettlementHouseProperty(BaseRequest settlementHousePropertyDeleteRequest) throws ValidationException { CommonDeleteRequest request = settlementHousePropertyDeleteRequest.getRequestPayload(); log.debug("SettlementHousePropertyDeleteRequest received id = {}", request.getId()); - { // Валидация, ValidationException + { RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(settlementHousePropertyDeleteRequest); if (requestInfoUpdate != null) return requestInfoUpdate; requestInfoUpdate = validationHelper.validateTillFirstError(settlementHousePropertyDeleteRequest, settlementHousePropertiesDeleteRequestValidator); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java index b2d477732..4e017fc46 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolNotExistRule.java @@ -16,17 +16,14 @@ import java.util.Arrays; import java.util.Collection; import java.util.Optional; -/** - * Проверка наличия компании с переданными в запросе companySymbol и companySymbolCode (реквизиты) - */ public class CompanySymbolNotExistRule implements IValidationRule> { @Override public Optional validate(ImdgValidationContext context) { CompanyNewRequest request = context.getValidatedObject(); String companySymbolCode = request.getCompanySymbol(); if (!Arrays.asList(CompanySymbol.INN.getKey(), - CompanySymbol.CIO.getKey(), - CompanySymbol.UUID.getKey()).contains(companySymbolCode)) return Optional.empty(); + CompanySymbol.CIO.getKey(), + CompanySymbol.UUID.getKey()).contains(companySymbolCode)) return Optional.empty(); String companySymbolValue = request.getCompanySymbolValue(); Imdg companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); diff --git a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java index f8dba7678..3c321beb0 100644 --- a/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java +++ b/clearing-parent/company-service/src/main/java/ru/spcex/clearing/company/validation/CompanySymbolOfSymbolNewRequestNotExistRule.java @@ -13,9 +13,6 @@ import java.util.Collection; import java.util.Map; import java.util.Optional; -/** - * Проверка наличия CompanySymbols с переданными в запросе companySymbol и companyId - */ public class CompanySymbolOfSymbolNewRequestNotExistRule implements IValidationRule> { @Override public Optional validate(ImdgValidationContext context) { @@ -24,8 +21,8 @@ public class CompanySymbolOfSymbolNewRequestNotExistRule implements IValidationR Imdg companySymbolsImdg = context.obtainMap(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class); Collection companySymbols = companySymbolsImdg.getCollectionObjectsByFieldValues(Map.of( - "companyId", request.getCompanyId(), - "companySymbol", request.getCompanySymbol() + "companyId", request.getCompanyId(), + "companySymbol", request.getCompanySymbol() )); if (companySymbols.isEmpty()) return Optional.empty(); return of(CompanyErrors.RecordAlreadyExist, request.getCompanyId(), request.getCompanySymbol()); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ClearingMemberCategoryServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ClearingMemberCategoryServiceTest.java index 3767a109c..5b8538793 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ClearingMemberCategoryServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ClearingMemberCategoryServiceTest.java @@ -98,7 +98,6 @@ class ClearingMemberCategoryServiceTest { @Test void clearingMemberCategoryNew() throws InterruptedException { - //ARRANGE String clearingMemberCategory = CLEARING_CATEGORY_DICT_CODE; ClearingMemberCategoryNewRequest memberCategoryNewRequest = new ClearingMemberCategoryNewRequest(); memberCategoryNewRequest.setClearingMemberCategory(clearingMemberCategory); @@ -107,29 +106,17 @@ class ClearingMemberCategoryServiceTest { ClearingMemberCategory predictableClearingMemberCategory = new ClearingMemberCategory(); predictableClearingMemberCategory.setCompanyId(COMPANY_ID); predictableClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory); - - //ACT String jsonString = getJsonStringForNew(memberCategoryNewRequest, ID); addRecordToKafka((MockConsumer) clearingMemberCategoryService.getConsumer(), TOPIC_MEMBER_CATEGORY_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ClearingMemberCategory resultNew = memberCategoryImdg.getFirstObjectBySQL(String.format("clearingMemberCategory = %s", clearingMemberCategory)); predictableClearingMemberCategory.setId(resultNew.getId()); MEMBER_CATEGORY_MATCHER.assertMatch(resultNew, predictableClearingMemberCategory); } - /** - * {@link ClearingMemberCategoryService#clearingMemberCategoryUpdate(BaseRequest)}
- * Тест проверяет обновление сущности {@link ClearingMemberCategory} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link ClearingMemberCategoryUpdateRequest}:
- * {@link ClearingMemberCategoryUpdateRequest#id} - Идентификатор записи
- * {@link ClearingMemberCategoryUpdateRequest#clearingMemberCategory} - 1234
- */ @Test void clearingMemberCategoryUpdate() throws InterruptedException { - //ARRANGE String clearingMemberCategory = CLEARING_CATEGORY_DICT_CODE; ClearingMemberCategory existsClearingMemberCategory = new ClearingMemberCategory(); existsClearingMemberCategory.setClearingMemberCategory("0000"); @@ -144,27 +131,16 @@ class ClearingMemberCategoryServiceTest { predictableClearingMemberCategory.setCompanyId(COMPANY_ID); predictableClearingMemberCategory.setId(id); predictableClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory); - - //ACT String jsonString = getJsonStringForUpdate(memberCategoryUpdateRequest, id); addRecordToKafka((MockConsumer) clearingMemberCategoryService.getConsumer(), TOPIC_MEMBER_CATEGORY_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(id, mockProducer); ClearingMemberCategory resultUpdating = memberCategoryImdg.getSingleObjectByID(id); MEMBER_CATEGORY_MATCHER.assertMatch(resultUpdating, predictableClearingMemberCategory); } - /** - * {@link ClearingMemberCategoryService#clearingMemberCategoryDelete(BaseRequest)}
- * Тест проверяет удаление сущности {@link ClearingMemberCategory} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test void clearingMemberCategoryDelete() throws InterruptedException { - //ARRANGE String clearingMemberCategory = "0000"; ClearingMemberCategory existsClearingMemberCategory = new ClearingMemberCategory(); existsClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory); @@ -173,12 +149,8 @@ class ClearingMemberCategoryServiceTest { CommonDeleteRequest memberCategoryDeleteRequest = new CommonDeleteRequest(); memberCategoryDeleteRequest.setId(id); - - //ACT String jsonString = getJsonStringForDelete(memberCategoryDeleteRequest, id); addRecordToKafka((MockConsumer) clearingMemberCategoryService.getConsumer(), TOPIC_MEMBER_CATEGORY_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(id, mockProducer); ClearingMemberCategory resultDeleting = memberCategoryImdg.getFirstObjectBySQL(String.format("clearingMemberCategory = %s", clearingMemberCategory)); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java index bf5cdf895..beff82feb 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyInfoServiceTest.java @@ -71,8 +71,6 @@ class CompanyInfoServiceTest { private void init() { waitAvailableImdgProviderAndAddAdminWithDefaultId(); companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class); - - // Словари для теста, применяются в ValidationConfig putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV"); putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC"); putToDictionary(IMDGDistributedNames.Map_CorporationSoleTypeDictionary, new CorporationSoleTypeDictionary(), "GDIR"); @@ -82,7 +80,7 @@ class CompanyInfoServiceTest { putToDictionary(IMDGDistributedNames.Map_OrganizationTypeDictionary, new OrganizationTypeDictionary(), "NCRD"); } - private void putToDictionary(String mapName, D object, String code) { + private void putToDictionary(String mapName, D object, String code) { Imdg dMap = (Imdg) hazelcastServiceTest.getImdg(mapName, object.getClass()); object.setId(2L); object.setCode(code); @@ -90,24 +88,8 @@ class CompanyInfoServiceTest { dMap.insert(object); } - /** - * {@link CompanyInfoService#companyInfoUpdate(BaseRequest)}
- * Тест проверяет обновление сущности {@link CompanyInfo} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CompanyInfoUpdateRequest}:
- * {@link CompanyInfoUpdateRequest#id} - Идентификатор записи
- * {@link CompanyInfoUpdateRequest#corporationSoleType} - GDIR
- * {@link CompanyInfoUpdateRequest#countryCode} - RUS
- * {@link CompanyInfoUpdateRequest#description} - updated description
- * {@link CompanyInfoUpdateRequest#professionalSign} - ALWD
- * {@link CompanyInfoUpdateRequest#legalKind} - JURD
- * {@link CompanyInfoUpdateRequest#organizationType} - NCRD
- * {@link CompanyInfoUpdateRequest#residence} - RUS
- * {@link CompanyInfoUpdateRequest#shortNameEng} - updated shortNameEng
- * {@link CompanyInfoUpdateRequest#fullNameEng} - updated fullNameEng
- */ @Test void companyInfoUpdate() throws InterruptedException { - //ARRANGE CompanyInfo existsCompanyInfo = new CompanyInfo(); existsCompanyInfo.setId(ID); existsCompanyInfo.setCompanyId(ID); @@ -154,13 +136,9 @@ class CompanyInfoServiceTest { predictableCompanyInfo.setResidence("RUS"); predictableCompanyInfo.setShortNameEng("updated shortNameEng"); predictableCompanyInfo.setFullNameEng("updated fullNameEng"); - - //ACT String jsonString = getJsonStringForUpdate(companyInfoUpdateRequest, ID); addRecordToKafka((MockConsumer) companyInfoService.getConsumer(), TOPIC_COMPANY_INFO_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Company resultUpdating = companyImdg.getSingleObjectByID(ID); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyRoleSetServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyRoleSetServiceTest.java index a0ab540bc..6c025804a 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyRoleSetServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyRoleSetServiceTest.java @@ -75,8 +75,6 @@ class CompanyRoleSetServiceTest { waitAvailableImdgProviderAndAddAdminWithDefaultId(); companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class); companyRoleSetImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); - - // Словари для теста, применяются в ValidationConfig putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV"); putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC"); putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD"); @@ -93,26 +91,16 @@ class CompanyRoleSetServiceTest { companyImdg.insert(comp); } - private void putToDictionary(String mapName, D object, String code) { + private void putToDictionary(String mapName, D object, String code) { Imdg dMap = (Imdg) hazelcastServiceTest.getImdg(mapName, object.getClass()); object.setId(1000L + code.hashCode() % 1000); object.setCode(code); object.setName("name of " + code); -// assert dMap.getSingleObjectByID(object.getId()) == null; dMap.insert(object); } - /** - * {@link CompanyRoleSetService#createCompanyRoleSet(BaseRequest)}
- * * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.
- * * Входной запрос {@link CompanyRoleSetNewRequest}:
- * * {@link CompanyRoleSetNewRequest#companyId} - COMPANY_ID (105)
- * * {@link CompanyRoleSetNewRequest#companyRole} - SETH
- * * {@link CompanyRoleSetNewRequest#workflowStatus} - ACTV
- */ @Test void companyRoleSetNew1() { - //ARRANGE final Long ID = 102L; final String DESTINATION_NEW = Consts.DESTINATION_COMPANY_ROLE_SETS_NEW; companyImdg.size(); @@ -121,36 +109,21 @@ class CompanyRoleSetServiceTest { newRequest.setCompanyId(COMPANY_ID); newRequest.setCompanyRole(CompanyRole.SETH.getKey()); newRequest.setWorkflowStatus(WorkflowStatus.Active.getKey()); - - //ACT String jsonString = getJsonStringForNew(newRequest, ID); addRecordToKafka((MockConsumer) companyRoleSetService.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); CompanyRoleSet resultNew = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID)); Assertions.assertNotNull(resultNew); Assertions.assertEquals("SETH", resultNew.getCompanyRole()); Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus()); - - // CLEAN UP companyRoleSetImdg.delete(resultNew); } - /** - * {@link CompanyRoleSetService#createCompanyRoleSet(BaseRequest)}
- * * Тест проверяет создание сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.
- * * Входной запрос {@link CompanyRoleSetNewRequest}:
- * * {@link CompanyRoleSetNewRequest#companyId} - COMPANY_ID (105)
- * * {@link CompanyRoleSetNewRequest#companyRole} - SETH
- * * {@link CompanyRoleSetNewRequest#workflowStatus} - null
- */ @Disabled @Test void companyRoleSetNew2() { - //ARRANGE final Long ID = 103L; final String DESTINATION_NEW = Consts.DESTINATION_COMPANY_ROLE_SETS_NEW; companyImdg.size(); @@ -159,37 +132,21 @@ class CompanyRoleSetServiceTest { newRequest.setCompanyId(COMPANY_ID); newRequest.setCompanyRole(CompanyRole.SETH.getKey()); newRequest.setWorkflowStatus(null); - - //ACT String jsonString = getJsonStringForNew(newRequest, ID); addRecordToKafka((MockConsumer) companyRoleSetService.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); CompanyRoleSet resultNew = companyRoleSetImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID)); Assertions.assertNotNull(resultNew); Assertions.assertEquals("SETH", resultNew.getCompanyRole()); Assertions.assertEquals(WorkflowStatus.Active.getKey(), resultNew.getWorkflowStatus()); - - // CLEAN UP companyRoleSetImdg.delete(resultNew); } - /** - * {@link CompanyRoleSetService#updateCompanyRoleSet(BaseRequest)}
- * * Тест проверяет обновление сущности {@link CompanyRoleSet} в IMDG при передаче из Apache Kafka.
- * * Входной запрос {@link CompanyRoleSetUpdateRequest}:
- * * {@link CompanyRoleSetUpdateRequest#id} - ID
- * * {@link CompanyRoleSetUpdateRequest#companyId} - COMPANY_ID
- * * {@link CompanyRoleSetUpdateRequest#companyRole} - SETH
- * * {@link CompanyRoleSetUpdateRequest#workflowStatus} - null
- */ @Test void companyRoleSetUpdate() { final Long ID = 104L; final String DESTINATION_UPDATE = Consts.DESTINATION_COMPANY_ROLE_SETS_UPDATE; - //ARRANGE CompanyRoleSet existsCompanyRoleSet = new CompanyRoleSet(); existsCompanyRoleSet.setId(ID); existsCompanyRoleSet.setCompanyId(COMPANY_ID); @@ -207,32 +164,19 @@ class CompanyRoleSetServiceTest { predictableCompanyRS.setCompanyId(COMPANY_ID); predictableCompanyRS.setCompanyRole("SETH"); predictableCompanyRS.setWorkflowStatus("ACTV"); - - //ACT String jsonString = getJsonStringForUpdate(companyRoleSetUpdateRequest, ID); addRecordToKafka((MockConsumer) companyRoleSetService.getConsumer(), DESTINATION_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); CompanyRoleSet resultUpdating = companyRoleSetImdg.getSingleObjectByID(ID); COMPANY_ROLE_SET_MATCHER.assertMatch(resultUpdating, predictableCompanyRS); - - // CLEAN UP companyRoleSetImdg.delete(existsCompanyRoleSet); } - /** - * {@link CompanyRoleSetService#deleteCompanyRoleSet(BaseRequest)}
- * Тест проверяет удаление сущности {@link CompanyRoleSet} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test void deleteCRS() { - //ARRANGE final Long ID = 101L; CompanyRoleSet existsCompanyRoleSet = new CompanyRoleSet(); existsCompanyRoleSet.setId(ID); @@ -242,17 +186,11 @@ class CompanyRoleSetServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(ID); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, ID); addRecordToKafka((MockConsumer) companyRoleSetService.getConsumer(), Consts.DESTINATION_COMPANY_ROLE_SETS_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); CompanyRoleSet resultDeleting = companyRoleSetImdg.getFirstObjectBySQL("id=" + ID); Assertions.assertNull(resultDeleting); -// Assertions.assertEquals(WorkflowStatus.Blocked.getKey(), resultDeleting.getWorkflowStatus()); -// companyRoleSetImdg.delete(existsCompanyRoleSet); } } \ No newline at end of file diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java index bb8a4bccc..381fda940 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanyServiceTest.java @@ -109,15 +109,8 @@ class CompanyServiceTest { } } - /** - * {@link CompanyService#deleteCompany(BaseRequest)}
- * Тест проверяет удаление сущности {@link Company} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test void deleteCompany() throws InterruptedException { - //ARRANGE final Long ID = 101L; Company existsCompany = new Company(); existsCompany.setId(ID); @@ -126,21 +119,13 @@ class CompanyServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(ID); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, ID); addRecordToKafka((MockConsumer) companyService.getConsumer(), TOPIC_COMPANY_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); - - //Company resultDeleting = companyImdg.getSingleObjectByID(ID); Company resultDeleting = companyImdg.getFirstObjectBySQL("id=" + ID); Assertions.assertEquals(WorkflowStatus.Blocked.getKey(), resultDeleting.getWorkflowStatus()); { - // Hazelcast 3.12.4 возможно имеет ошибку с NearCache (https://github.com/hazelcast/hazelcast/issues/16577) и её устранили в версии 3.12.7+. - // метод устранения проблемы: вместо return map.get(paramLong); использовать return map.getEntryView(paramLong).getValue(); Company resultDeletingDirectGet = companyImdg.getSingleObjectByID(ID); if (!resultDeleting.getWorkflowStatus().equals(resultDeletingDirectGet.getWorkflowStatus())) { System.out.println("WARNING: Hazelcast error: WorkflowStatus " + resultDeletingDirectGet.getWorkflowStatus() + " and " + resultDeleting.getWorkflowStatus() + " together!"); @@ -149,32 +134,20 @@ class CompanyServiceTest { } - /** - * {@link CompanyService#createCompany(BaseRequest)}
- * Тест проверяет удаление сущности {@link Company} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test void newCompany() throws InterruptedException { - //ARRANGE final Long ID = 102L; final String DESTINATION_COMPANY_NEW = Consts.DESTINATION_COMPANY_NEW; companyImdg.size(); CompanyNewRequest companyNewRequest = new CompanyNewRequest(); -// companyNewRequest.setId(ID); companyNewRequest.setCompanySymbol(CompanySymbol.CLRC.getKey()); companyNewRequest.setCompanySymbolValue("CLR-symbol ipo"); companyNewRequest.setShortName("ClrIPO"); companyNewRequest.setFullName("Clearing IPO"); companyNewRequest.setWorkflowStatus(WorkflowStatus.Active.getKey()); - - //ACT String jsonString = getJsonStringForNew(companyNewRequest, ID); addRecordToKafka((MockConsumer) companyService.getConsumer(), DESTINATION_COMPANY_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Company resultNew = companyImdg.getFirstObjectByFieldValues(Map.of("ShortName", "ClrIPO")); @@ -196,22 +169,17 @@ class CompanyServiceTest { companySymbolsImdg.insert(existCompanySymbols); CompanyNewRequest companyNewRequest = new CompanyNewRequest(); -// companyNewRequest.setId(ID); companyNewRequest.setCompanySymbol(CompanySymbol.CIO.getKey()); companyNewRequest.setCompanySymbolValue("test_value"); companyNewRequest.setShortName("ClrIPO"); companyNewRequest.setFullName("Clearing IPO"); companyNewRequest.setWorkflowStatus(WorkflowStatus.Active.getKey()); - - //ACT String jsonString = getJsonStringForNew(companyNewRequest, ID); addRecordToKafka((MockConsumer) companyService.getConsumer(), DESTINATION_COMPANY_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingWhenTryAddRecordAndCheckError(ID, - mockProducer, - String.valueOf(CompanyErrors.CompanyWithCompanySymbolAlreadyExist.getId()), - Arrays.asList("CIO", "test_value")); + mockProducer, + String.valueOf(CompanyErrors.CompanyWithCompanySymbolAlreadyExist.getId()), + Arrays.asList("CIO", "test_value")); Company resultNew = companyImdg.getFirstObjectByFieldValues(Map.of("ShortName", "ClrIPO")); Assertions.assertNull(resultNew); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java index dffd3056f..08ce9f868 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/CompanySymbolServiceTest.java @@ -96,18 +96,8 @@ class CompanySymbolServiceTest { } } - /** - * {@link CompanySymbolService#companySymbolUpdate(BaseRequest)}
- * Тест проверяет обновление сущности {@link CompanySymbols} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CompanySymbolUpdateRequest}:
- * {@link CompanySymbolUpdateRequest#id} - Идентификатор записи
- * {@link CompanySymbolUpdateRequest#companyId} - Идентификатор записи
- * {@link CompanySymbolUpdateRequest#companySymbol} - 1234
- * {@link CompanySymbolUpdateRequest#companySymbolValue} - new companySymbolValue
- */ @Test void companySymbolUpdate() throws InterruptedException { - //ARRANGE String companySymbolValue = "newCompanySymbolValue"; CompanySymbols existsCompanySymbols = new CompanySymbols(); existsCompanySymbols.setId(ID); @@ -127,12 +117,8 @@ class CompanySymbolServiceTest { predictableCompanySymbols.setCompanyId(ID); predictableCompanySymbols.setCompanySymbol("CIO"); predictableCompanySymbols.setCompanySymbolValue(companySymbolValue); - - //ACT String jsonString = getJsonStringForUpdate(companySymbolUpdateRequest, ID); addRecordToKafka((MockConsumer) companySymbolService.getConsumer(), TOPIC_COMPANY_SYMBOL_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); CompanySymbols resultUpdating = companySymbolsImdg.getFirstObjectBySQL(String.format("companySymbolValue = %s", companySymbolValue)); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java index 631608641..5f870afad 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ContactServiceTest.java @@ -84,7 +84,6 @@ class ContactServiceTest { } @Test void contactNew() throws InterruptedException { - //ARRANGE ContactNewRequest contactNewRequest = new ContactNewRequest(); contactNewRequest.setCompanyId(COMPANY_ID); contactNewRequest.setContactType(ContactTypes.adrs.getKey()); @@ -94,12 +93,8 @@ class ContactServiceTest { predictableContact.setCompanyId(COMPANY_ID); predictableContact.setContactType(ContactTypes.adrs.getKey()); predictableContact.setContactValue("value"); - - //ACT String jsonString = getJsonStringForNew(contactNewRequest, ID); addRecordToKafka((MockConsumer) contactService.getConsumer(), TOPIC_CONTACT_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Contact resultNew = contactImdg.getAllValues().iterator().next(); @@ -107,17 +102,8 @@ class ContactServiceTest { CONTACT_MATCHER.assertMatch(resultNew, predictableContact); } - /** - * {@link ContactService#contactUpdate(BaseRequest)}
- * Тест проверяет обновление сущности {@link Contact} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link ContactUpdateRequest}:
- * {@link ContactUpdateRequest#id} - Идентификатор записи
- * {@link ContactUpdateRequest#contactType} - ADDR
- * {@link ContactUpdateRequest#contactValue} - new ContactValue
- */ @Test void contactUpdate() throws InterruptedException { - //ARRANGE Long existContactID; Contact existsContact = new Contact(); existsContact.setCompanyId(COMPANY_ID); @@ -135,12 +121,8 @@ class ContactServiceTest { predictableContact.setCompanyId(COMPANY_ID); predictableContact.setContactType(ContactTypes.adrs.getKey()); predictableContact.setContactValue("new ContactValue"); - - //ACT String jsonString = getJsonStringForUpdate(contactUpdateRequest, existContactID); addRecordToKafka((MockConsumer) contactService.getConsumer(), TOPIC_CONTACT_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(existContactID, mockProducer); Contact resultUpdating = contactImdg.getSingleObjectByID(existContactID); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/MultiCompanyServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/MultiCompanyServiceTest.java index 67bd1f7f9..4e7589b8e 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/MultiCompanyServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/MultiCompanyServiceTest.java @@ -114,7 +114,7 @@ class MultiCompanyServiceTest { doc.setId(10002L); doc.setCompanyId(COMPANY_ID); doc.setDocumentType(DocumentTypes.form.getKey()); - doc.setIssueDate(LocalDate.now()); // тест может показать ложное срабатывание в 00:00:00.001 + doc.setIssueDate(LocalDate.now()); profileDocumentImdg.insert(doc); } diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ProfileDocumentServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ProfileDocumentServiceTest.java index acf59e7d6..e2368dee7 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ProfileDocumentServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/ProfileDocumentServiceTest.java @@ -110,14 +110,8 @@ class ProfileDocumentServiceTest { documentTypeDictionaryImdg.insert(documentTypeDictionary1); } - /** - * {@link ProfileDocumentService#profileDocumentNew(BaseRequest)}
- * Тест проверяет обновление сущности {@link ProfileDocument} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link ProfileDocumentNewRequest}:
- */ @Test void newProfileDocument() { - //ARRANGE ProfileDocumentNewRequest profileDocumentNewRequest = new ProfileDocumentNewRequest(); profileDocumentNewRequest.setCompanyId(COMPANY_ID); profileDocumentNewRequest.setDocumentType(TEST_DOCUMENT_TYPE_ID); @@ -146,13 +140,9 @@ class ProfileDocumentServiceTest { predictableProfileDocument.setValidFromDate(profileDocumentNewRequest.getValidFromDate()); predictableProfileDocument.setValidToDate(profileDocumentNewRequest.getValidToDate()); predictableProfileDocument.setLink(profileDocumentNewRequest.getLink()); - - //ACT String jsonString = getJsonStringForNew(profileDocumentNewRequest, ID); addRecordToKafka((MockConsumer) profileDocumentService.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ProfileDocument resultNew = profileDocumentMap.getFirstObjectBySQL(String.format("companyId = %d", COMPANY_ID)); predictableProfileDocument.setId(resultNew.getId()); @@ -161,7 +151,6 @@ class ProfileDocumentServiceTest { @Test void updateProfileDocument() { - //ARRANGE ProfileDocument existsProfileDocument = new ProfileDocument(); existsProfileDocument.setId(ID); existsProfileDocument.setCompanyId(COMPANY_ID); @@ -207,23 +196,17 @@ class ProfileDocumentServiceTest { profileDocumentUpdateRequest.setValidFromDate(LocalDate.now()); profileDocumentUpdateRequest.setValidToDate(LocalDate.now().plus(1, ChronoUnit.DAYS)); profileDocumentUpdateRequest.setLink("new_link"); - - //ACT String jsonString = getJsonStringForUpdate(profileDocumentUpdateRequest, ID); addRecordToKafka((MockConsumer) profileDocumentService.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ProfileDocument resultUpdate = profileDocumentMap.getFirstObjectBySQL(String.format("companyId = %d", COMPANY_ID)); -// predictableProfileDocument.setId(resultUpdate.getId()); PROFILE_DOCUMENT_MATCHER.assertMatch(resultUpdate, predictableProfileDocument); } @Test void deleteProfileDocument() { - //ARRANGE ProfileDocument existsProfileDocument = new ProfileDocument(); existsProfileDocument.setId(PROFILE_DOCUMENT_ID); existsProfileDocument.setCompanyId(COMPANY_ID); @@ -242,13 +225,9 @@ class ProfileDocumentServiceTest { CommonDeleteRequest profileDocumentDeleteRequest = new CommonDeleteRequest(); profileDocumentDeleteRequest.setId(PROFILE_DOCUMENT_ID); - - //ACT String jsonString = getJsonStringForUpdate(profileDocumentDeleteRequest, ID); addRecordToKafka((MockConsumer) profileDocumentService.getConsumer(), TOPIC_DESTINATION_PROFILE_DOCUMENT_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ProfileDocument resultUpdate = profileDocumentMap.getSingleObjectByID(PROFILE_DOCUMENT_ID); Assertions.assertNull(resultUpdate); diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/RelationServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/RelationServiceTest.java index 520291439..484c8eba6 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/RelationServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/RelationServiceTest.java @@ -119,7 +119,6 @@ class RelationServiceTest { @Test void newRelation() { - //ARRANGE clearAllInImdg(relationMap); RelationNewRequest relationNewRequest = new RelationNewRequest(); relationNewRequest.setCompanyId(COMPANY_ID); @@ -134,22 +133,17 @@ class RelationServiceTest { predictableRelation.setServiceProduct("ZERO"); predictableRelation.setSupplierId(1L); predictableRelation.setServiceStatus("ACTV"); - - //ACT String jsonString = getJsonStringForNew(relationNewRequest, ID); addRecordToKafka((MockConsumer) relationService.getConsumer(), Consts.DESTINATION_RELATION_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); - Relation resultNew = relationMap.getFirstObjectBySQL("serviceStatus=ACTV"); // String.format("supplierId = %d", COMPANY_ID)); + Relation resultNew = relationMap.getFirstObjectBySQL("serviceStatus=ACTV"); predictableRelation.setId(resultNew.getId()); RELATION_MATCHER.assertMatch(resultNew, predictableRelation); } @Test void updateRelation() { - //ARRANGE Relation existsRelation = new Relation(); existsRelation.setId(ID); existsRelation.setConsumerId(COMPANY_ID); @@ -173,23 +167,17 @@ class RelationServiceTest { relationUpdateRequest.setId(RELATION_ID); relationUpdateRequest.setComment("Another Me - ONE"); relationUpdateRequest.setServiceStatus("ACTV"); - - //ACT String jsonString = getJsonStringForUpdate(relationUpdateRequest, ID); addRecordToKafka((MockConsumer) relationService.getConsumer(), Consts.DESTINATION_RELATION_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Relation resultUpdate = relationMap.getFirstObjectBySQL(String.format("id = %d", RELATION_ID)); -// predictableProfileDocument.setId(resultUpdate.getId()); RELATION_MATCHER.assertMatch(resultUpdate, predictableRelation); } @Test void deleteProfileDocument() { - //ARRANGE Relation existsRelation = new Relation(); existsRelation.setId(ID); existsRelation.setConsumerId(COMPANY_ID); @@ -202,16 +190,11 @@ class RelationServiceTest { CommonDeleteRequest profileDocumentDeleteRequest = new CommonDeleteRequest(); profileDocumentDeleteRequest.setId(RELATION_ID); - - //ACT String jsonString = getJsonStringForUpdate(profileDocumentDeleteRequest, ID); addRecordToKafka((MockConsumer) relationService.getConsumer(), Consts.DESTINATION_RELATION_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Relation resultUpdate = relationMap.getSingleObjectByID(RELATION_ID); -// Assertions.assertNull(resultUpdate); assertEquals(WorkflowStatus.Blocked.getKey(), resultUpdate.getServiceStatus()); } } \ No newline at end of file diff --git a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/SettlementHousePropertiesServiceTest.java b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/SettlementHousePropertiesServiceTest.java index 760d4917d..576e11bed 100644 --- a/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/SettlementHousePropertiesServiceTest.java +++ b/clearing-parent/company-service/src/test/java/ru/spcex/clearing/company/service/SettlementHousePropertiesServiceTest.java @@ -81,8 +81,6 @@ class SettlementHousePropertiesServiceTest { companyImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_Company, Company.class); companyRoleSetImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); settlementHousePropertiesImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class); - - // Словари для теста, применяются в ValidationConfig putToDictionary(IMDGDistributedNames.Map_WorkflowStatusDictionary, new WorkflowStatusDictionary(), "ACTV"); putToDictionary(IMDGDistributedNames.Map_CompanySymbolDictionary, new CompanySymbolDictionary(), "CLRC"); putToDictionary(IMDGDistributedNames.Map_AllowedDictionary, new AllowedDictionary(), "ALWD"); @@ -108,64 +106,40 @@ class SettlementHousePropertiesServiceTest { companyRoleSetImdg.insert(crs); } - private void putToDictionary(String mapName, D object, String code) { + private void putToDictionary(String mapName, D object, String code) { Imdg dMap = (Imdg) hazelcastServiceTest.getImdg(mapName, object.getClass()); object.setId(1000L + code.hashCode() % 1000); object.setCode(code); object.setName("name of " + code); -// assert dMap.getSingleObjectByID(object.getId()) == null; dMap.insert(object); } - /** - * {@link SettlementHousePropertiesService#createSettlementHouseProperty(BaseRequest)}
- * * Тест проверяет создание сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.
- * * Входной запрос {@link SettlementHousePropertyNewRequest}:
- * * {@link SettlementHousePropertyNewRequest#companyId} - COMPANY_ID
- * * {@link SettlementHousePropertyNewRequest#currencyCode} - AED
- */ @Test void settlementHousePropertiesNew1() { - //ARRANGE final String DESTINATION_NEW = Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_NEW; companyImdg.size(); SettlementHousePropertyNewRequest newRequest = new SettlementHousePropertyNewRequest(); newRequest.setCompanyId(COMPANY_ID); - newRequest.setCurrencyCode("AED"); // RUB разрешён только для COMPANY_ID=2. - - //ACT + newRequest.setCurrencyCode("AED"); String jsonString = getJsonStringForNew(newRequest, ID); addRecordToKafka((MockConsumer) settlementHousePropertiesService.getConsumer(), DESTINATION_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); SettlementHouseProperties resultNew = settlementHousePropertiesImdg.getFirstObjectByFieldValues(Map.of("companyId", COMPANY_ID)); Assertions.assertNotNull(resultNew); Assertions.assertEquals("AED", resultNew.getCurrencyCode()); Assertions.assertEquals(COMPANY_ID, resultNew.getCompanyId()); - - // CLEAN UP settlementHousePropertiesImdg.delete(resultNew); } - /** - * {@link SettlementHousePropertiesService#updateSettlementHouseProperty(BaseRequest)}
- * * Тест проверяет обновление сущности {@link SettlementHouseProperties} в IMDG при передаче из Apache Kafka.
- * * Входной запрос {@link SettlementHousePropertyUpdateRequest}:
- * * {@link SettlementHousePropertyUpdateRequest#id} - ID
- * * {@link SettlementHousePropertyUpdateRequest#companyId} - COMPANY_ID
- * * {@link SettlementHousePropertyUpdateRequest#currencyCode} - AED
- */ @Test void companyRoleSetUpdate() { final String DESTINATION_UPDATE = Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE; - //ARRANGE SettlementHouseProperties existsSettlementHouseProperties = new SettlementHouseProperties(); existsSettlementHouseProperties.setId(ID); existsSettlementHouseProperties.setCompanyId(COMPANY_ID); - existsSettlementHouseProperties.setCurrencyCode("INR"); // Индийская рупия + existsSettlementHouseProperties.setCurrencyCode("INR"); settlementHousePropertiesImdg.insert(existsSettlementHouseProperties); SettlementHousePropertyUpdateRequest settlementHousePropertyUpdateRequest = new SettlementHousePropertyUpdateRequest(); @@ -177,32 +151,19 @@ class SettlementHousePropertiesServiceTest { predictableSHP.setId(ID); predictableSHP.setCompanyId(COMPANY_ID); predictableSHP.setCurrencyCode("AED"); - - //ACT String jsonString = getJsonStringForUpdate(settlementHousePropertyUpdateRequest, ID); addRecordToKafka((MockConsumer) settlementHousePropertiesService.getConsumer(), DESTINATION_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); SettlementHouseProperties resultUpdating = settlementHousePropertiesImdg.getSingleObjectByID(ID); SETTLEMENT_HOUSE_PROPERTIES_MATCHER.assertMatch(resultUpdating, predictableSHP); - - // CLEAN UP settlementHousePropertiesImdg.delete(resultUpdating); } - /** - * {@link SettlementHousePropertiesService#deleteSettlementHouseProperty(BaseRequest)} (BaseRequest)}
- * Тест проверяет удаление сущности {@link SettlementHouseProperties} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test void deleteSHP() throws InterruptedException { - //ARRANGE final Long ID = 101L; SettlementHouseProperties existsSettlementHouseProperties = new SettlementHouseProperties(); existsSettlementHouseProperties.setId(ID); @@ -212,15 +173,9 @@ class SettlementHousePropertiesServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(ID); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, ID); addRecordToKafka((MockConsumer) settlementHousePropertiesService.getConsumer(), Consts.DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); - - //Company resultDeleting = companyImdg.getSingleObjectByID(ID); SettlementHouseProperties resultDeleting = settlementHousePropertiesImdg.getFirstObjectBySQL("id=" + ID); Assertions.assertNull(resultDeleting); } diff --git a/clearing-parent/db-scripts/src/main/resources/db/readme.txt b/clearing-parent/db-scripts/src/main/resources/db/readme.txt index 3e1d23335..b0d98e537 100644 --- a/clearing-parent/db-scripts/src/main/resources/db/readme.txt +++ b/clearing-parent/db-scripts/src/main/resources/db/readme.txt @@ -1,4 +1,4 @@ -TODO + 1. Remove database rm -fr /opt/clearing/db/clearing.db diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/KafkaSenderConfig.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/KafkaSenderConfig.java index bd4994aca..ef707052c 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/KafkaSenderConfig.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/KafkaSenderConfig.java @@ -19,7 +19,6 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import java.util.function.Supplier; -//отдельный конфиг для sender чтобы сделать required false @Configuration public class KafkaSenderConfig { Logger log = LoggerFactory.getLogger(getClass()); @@ -53,13 +52,13 @@ public class KafkaSenderConfig { ImdgProvider imdgProvider) { ImdgId imdgIdGenerator = imdgProvider.getImdgIdGenerator(); return () -> KafkaSender - .setup() - .setKafkaTemplate(kafkaTemplate) - .idGenerator(imdgIdGenerator::nextId) - .imdgProvider(s -> { - Imdg imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class); - return imdg::insert; - }) - .build(); + .setup() + .setKafkaTemplate(kafkaTemplate) + .idGenerator(imdgIdGenerator::nextId) + .imdgProvider(s -> { + Imdg imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_RequestInfo, RequestInfo.class); + return imdg::insert; + }) + .build(); } } diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java index 636a9f201..e86e1d5ef 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/config/SFTPConfig.java @@ -60,7 +60,6 @@ public class SFTPConfig { return handler; } - // https://stackoverflow.com/questions/53655208/profile-doesnt-work-with-messaging-gateway @Bean("dbfGateway") public AnnotationGatewayProxyFactoryBean dbfGateway() { return new AnnotationGatewayProxyFactoryBean(DbfGateway.class); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/ResultContainer.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/ResultContainer.java index 14f144e2f..f70b6c909 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/ResultContainer.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/ResultContainer.java @@ -7,11 +7,8 @@ import java.io.File; import java.time.LocalDateTime; import java.util.UUID; -/** - * Контейнер для передачи результата между стадиями - */ public class ResultContainer { - private String sourceName; // имя инициатора (файла) + private String sourceName; private UUID uuid; private Table tableForExport; private File fileForExport; @@ -20,7 +17,8 @@ public class ResultContainer { private LocalDateTime registrationDateTime; private String memberCode; - protected ResultContainer() {} + protected ResultContainer() { + } public static ResultContainer createNewTask(Table tableForExport) { ResultContainer container = new ResultContainer(); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/Table.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/Table.java index 24ae62a8e..2d7fcb4de 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/Table.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/Table.java @@ -15,19 +15,10 @@ public enum Table { S_DF56("DF-56", IMDGDistributedNames.Map_SDf56, SDf56.class); - /** - * Префикс имени файла для экспорта - */ private final String filePrefix; - /** - * Имя мапы hazelcast - */ private final String hazelcastMapName; - /** - * Класс объекта - */ private final Class entityClass; diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java index eeaf67dd0..775c1d877 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/ExportFromHazelcast.java @@ -30,9 +30,6 @@ import ru.spcex.platform.enumeration.CurrencyCode; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -/** - * Выгрузка данных из мапы hazelcast и их запись в файлы - */ @Component public class ExportFromHazelcast extends Stage implements InitializingBean { private final ExportDBFServiceSettings settings; @@ -80,10 +77,10 @@ public class ExportFromHazelcast extends Stage implements InitializingBean { return StageResult.COMPLETE; } else { log.debug("uuid {}. Selected {} records from map {}, generationId {}", resultContainer.getUuid(), - tableRows.size(), resultContainer.getTableForExport().getHazelcastMapName(), resultContainer.getGroupId()); + tableRows.size(), resultContainer.getTableForExport().getHazelcastMapName(), resultContainer.getGroupId()); } if (Table.S_DF02 == resultContainer.getTableForExport()) { - log.trace("Sort S_DF02 items"); // Сортировка по возрастанию id, чтобы сохранить последовательность строк SDF02, как в SDF01 + log.trace("Sort S_DF02 items"); tableRows = new ArrayList(tableRows); ((ArrayList) tableRows).sort(Comparator.comparing(SpcexObjectBase::getId)); } @@ -91,7 +88,7 @@ public class ExportFromHazelcast extends Stage implements InitializingBean { for (SpcexObjectBase value : tableRows) { if (currentConverter == null) { currentConverter = converters.stream().filter(c -> c.canProcessing(value)).findFirst() - .orElseThrow(() -> new Exception("Get unknown object from imdg. Class: " + value.getClass().getSimpleName())); + .orElseThrow(() -> new Exception("Get unknown object from imdg. Class: " + value.getClass().getSimpleName())); currency = currentConverter.getCurrency(value); dbfWriter.setFields(currentConverter.getDBFHeaders()); } @@ -107,7 +104,7 @@ public class ExportFromHazelcast extends Stage implements InitializingBean { emptyMap = tableRows.isEmpty(); } catch (Exception e) { log.error(String.format("uuid %s. Can't export table %s (map %s) to file %s. Table was skipped.", - resultContainer.getUuid(), table, table.getHazelcastMapName(), dbfFile), e); + resultContainer.getUuid(), table, table.getHazelcastMapName(), dbfFile), e); return StageResult.ERROR; } finally { if (!writeOk || emptyMap) { @@ -128,10 +125,6 @@ public class ExportFromHazelcast extends Stage implements InitializingBean { return StageResult.OK; } - /** - * 1. Конструирует структуру DBF файлов для дальнейшей записи - * 2. Проверяет кодировку из настройки dbf.encoding - */ @Override public void afterPropertiesSet() { initDBFCharset(); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/Journal.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/Journal.java index f841d67d8..688636d3c 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/Journal.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/Journal.java @@ -42,7 +42,6 @@ public class Journal extends Stage implements InitializingBean { return StageResult.COMPLETE; } JournalSdf journalSdf = new JournalSdf(); - //todo read file attibutes journalSdf.setRegistrationDate(resultContainer.getRegistrationDateTime().toLocalDate()); journalSdf.setRegistrationTime(resultContainer.getRegistrationDateTime().toLocalTime()); journalSdf.setRegistrationNumber(resultContainer.getGroupId()); @@ -50,16 +49,7 @@ public class Journal extends Stage implements InitializingBean { journalSdf.setDossierNumber(dossierNumber.get(resultContainer.getTableForExport())); journalSdf.setResultStatus(StageResult.ERROR.equals(resultContainer.getLastStageResult()) ? "NACK" : "ACK"); kafkaSender.get().sendRequestToQueue(EXPORT_COMPLETED, journalSdf); - - //удалим временный файл File dbfFile = resultContainer.getFileForExport(); -// try { -// log.debug("Uuid {}, delete temp file \"{}\"", resultContainer.getUuid(), dbfFile); -// Files.deleteIfExists(dbfFile.toPath()); -// } catch (IOException e) { -// throw new RuntimeException(e); -// } - // Надо сохранять для разбора истории и отладки по логам log.debug("Uuid {}, save temp file \"{}\"", resultContainer.getUuid(), dbfFile); return StageResult.COMPLETE; } diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java index c38ddd3f7..8dcb13cf5 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/logic/stages/PrepareDBFFile.java @@ -21,9 +21,6 @@ import ru.spcex.clearing.dbf.exporter.logic.data.enums.FilenameTemplate; import ru.spcex.clearing.dbf.exporter.logic.data.enums.StageResult; import ru.spcex.clearing.dbf.exporter.logic.data.enums.Table; -/** - * Создание DBF файла - */ @Component public class PrepareDBFFile extends Stage implements InitializingBean { public static final String SECTION = "S"; @@ -42,12 +39,12 @@ public class PrepareDBFFile extends Stage implements InitializingBean { Objects.requireNonNull(resultContainer.getTableForExport()); if (settings.getStore().getOutPayValDir() == null || settings.getStore().getOutPayValDir().size() == 0) { log.error("No SFTP scanning directories, need will be adding settings like 'export-dbf-service.store.out-pay-val-dir.RUB=/RUB' and restart app"); - return StageResult.ERROR; + return StageResult.ERROR; } List files = new ArrayList<>(); log.trace("Get files from SFTP paths: {}", settings.getStore().getOutPayValDir().values()); for (String path : settings.getStore().getOutPayValDir().values()) { - if (!path.endsWith("/")) // без "/" на конце папки пишет ошибку: Caused by: com.jcraft.jsch.SftpException: No such file + if (!path.endsWith("/")) path += "/"; files.addAll(gateway.listFiles(path)); } @@ -66,7 +63,7 @@ public class PrepareDBFFile extends Stage implements InitializingBean { } resultContainer.setFileForExport(dbfFile); log.info("uuid {}. Rows from {} with generationId {} will be export to temp file \"{}\"", resultContainer.getUuid(), - resultContainer.getTableForExport().getFilePrefix(), resultContainer.getGroupId(), dbfFile); + resultContainer.getTableForExport().getFilePrefix(), resultContainer.getGroupId(), dbfFile); return StageResult.OK; } diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/CommandService.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/CommandService.java index d1a7c0bbe..11ea858e4 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/CommandService.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/CommandService.java @@ -44,8 +44,8 @@ public class CommandService extends QueueConsumer implements InitializingBean { .setConsumer(r -> processSpecial(Table.S_DF02, r)) .forDestination(Consts.SDF02_PROCESS, callbacks::put); callback(SdfClearingRequest.class) - .setConsumer(r -> processSpecial(Table.S_DF03, r)) // todo необходимо в отдельную папку: "в отдельную директорию SettlementHouse_Fail (чтобы не отдавать такие файлы в ПРЦ" - .forDestination(Consts.SDF03_PROCESS, callbacks::put); + .setConsumer(r -> processSpecial(Table.S_DF03, r)) + .forDestination(Consts.SDF03_PROCESS, callbacks::put); callback(SdfClearingRequest.class) .setConsumer(r -> processSpecial(Table.S_DF05, r)) .forDestination(Consts.SDF05_PROCESS, callbacks::put); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/DFConverter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/DFConverter.java index dbba5bb77..5855a233c 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/DFConverter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/DFConverter.java @@ -22,11 +22,7 @@ public abstract class DFConverter { public abstract DBFField[] getDBFHeaders(); public abstract String getCurrency(T entity); - /** - * Приведение типов в соответствие (для записи) - * @param src исходный объект - * @return объект другого типа, если тип не поддерживается dbfWriter - */ + protected Object typeMatch(Object src) { if (src instanceof Instant srcInstant) return Timestamp.from(srcInstant); if (src instanceof LocalDate srcLocalDate) return Date.valueOf(srcLocalDate); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF07_Converter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF07_Converter.java index ed9749564..e333d4d05 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF07_Converter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF07_Converter.java @@ -51,7 +51,7 @@ public class S_DF07_Converter extends DFConverter { dbfFields.add(new DBFField("MARKET", DBFDataType.CHARACTER, 1)); dbfFields.add(new DBFField("TYPE", DBFDataType.CHARACTER, 2)); dbfFields.add(new DBFField("DEAL", DBFDataType.CHARACTER, 10)); - dbfFields.add(new DBFField("CLIENTN", DBFDataType.CHARACTER, 254)); // если поставить длину 255, то: Length for CHARACTER must be between 1 and 254 + dbfFields.add(new DBFField("CLIENTN", DBFDataType.CHARACTER, 254)); dbfFields.add(new DBFField("INN", DBFDataType.CHARACTER, 12)); dbfFields.add(new DBFField("BIC", DBFDataType.CHARACTER, 9)); dbfFields.add(new DBFField("SPEC", DBFDataType.CHARACTER, 254)); diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF51_Converter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF51_Converter.java index d9c2c1c0c..25cc50c11 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF51_Converter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF51_Converter.java @@ -19,7 +19,7 @@ public class S_DF51_Converter extends DFConverter { public Object[] toObjectArray(SDf51 entity) { List values = new LinkedList<>(); values.add(typeMatch(entity.getNumber())); - values.add(typeMatch(convertStrToLong(entity.getDatetime()))); // UNIX TIME + values.add(typeMatch(convertStrToLong(entity.getDatetime()))); return values.toArray(Object[]::new); } @@ -27,7 +27,7 @@ public class S_DF51_Converter extends DFConverter { public DBFField[] getDBFHeaders() { List dbfFields = new LinkedList<>(); dbfFields.add(new DBFField("NUMBER", DBFDataType.CHARACTER, 10)); - dbfFields.add(new DBFField("DATETIME", DBFDataType.NUMERIC, 13)); // UNIX TIME + dbfFields.add(new DBFField("DATETIME", DBFDataType.NUMERIC, 13)); return dbfFields.toArray(DBFField[]::new); } diff --git a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF56_Converter.java b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF56_Converter.java index 39cb15ef5..eb879d9d8 100644 --- a/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF56_Converter.java +++ b/clearing-parent/dbf-exporter/src/main/java/ru/spcex/clearing/dbf/exporter/services/converters/S_DF56_Converter.java @@ -18,8 +18,8 @@ public class S_DF56_Converter extends DFConverter { public Object[] toObjectArray(SDf56 entity) { List values = new LinkedList<>(); values.add(typeMatch(entity.getNumber())); - values.add(convertStrToBigDecimal(entity.getStart_datetime())); // UNIX DATE TIME - values.add(convertStrToBigDecimal(entity.getEnd_datetime())); // UNIX DATE TIME + values.add(convertStrToBigDecimal(entity.getStart_datetime())); + values.add(convertStrToBigDecimal(entity.getEnd_datetime())); values.add(typeMatch(entity.getAccount())); values.add(typeMatch(entity.getDeal())); return values.toArray(Object[]::new); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/AbstractServiceTest.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/AbstractServiceTest.java index d4e8c0160..03d1673aa 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/AbstractServiceTest.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/AbstractServiceTest.java @@ -64,7 +64,6 @@ public abstract class AbstractServiceTest { Path path = Paths.get("src", "main", "resources"); String currentPath = path.toAbsolutePath().toString(); System.setProperty("spring.config.location", currentPath); -// Hazelcast.shutdownAll(); } protected void init() { diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/FilenameTemplateTest.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/FilenameTemplateTest.java index f560f5c11..53fe15e9f 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/FilenameTemplateTest.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/logic/data/enums/FilenameTemplateTest.java @@ -25,10 +25,6 @@ class FilenameTemplateTest { List files = List.of(sftpFileInfo); int count = FilenameTemplate.df_section_dateTime.countSameFilesInDir("DF-02", files); assertEquals(1, count); - -// doReturn("DF-02_S_PRC230").when(lsEntry).getFilename(); -// count = FilenameTemplate.df_section_dateTime.countSameFilesInDir("DF-02", files); -// assertEquals(0, count); } @Test diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF02_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF02_Test.java index 65ce96a4c..bd98ab485 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF02_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF02_Test.java @@ -29,9 +29,6 @@ class S_DF02_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF02; @@ -56,11 +53,9 @@ class S_DF02_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF02_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF03_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF03_Test.java index 02185e4a9..5f4b5c884 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF03_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF03_Test.java @@ -29,9 +29,6 @@ class S_DF03_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF03; @@ -64,11 +61,9 @@ class S_DF03_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF03_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF05_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF05_Test.java index 6cd675cd1..e0e065aa6 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF05_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF05_Test.java @@ -32,9 +32,6 @@ class S_DF05_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF05; @@ -50,11 +47,9 @@ class S_DF05_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF05_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF07_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF07_Test.java index 52ff5b556..1e5895939 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF07_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF07_Test.java @@ -30,9 +30,6 @@ class S_DF07_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF07; @@ -55,11 +52,9 @@ class S_DF07_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF07_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF51_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF51_Test.java index ac4aa9048..cabb4dc73 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF51_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF51_Test.java @@ -29,9 +29,6 @@ class S_DF51_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF51; @@ -45,11 +42,9 @@ class S_DF51_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF51_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF53_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF53_Test.java index 08e27f5dd..3e8230e1d 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF53_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF53_Test.java @@ -30,9 +30,6 @@ class S_DF53_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF53; @@ -48,11 +45,9 @@ class S_DF53_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF53_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF54_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF54_Test.java index 0491a8c0d..0e8a5faae 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF54_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF54_Test.java @@ -29,9 +29,6 @@ class S_DF54_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF54; @@ -83,11 +80,9 @@ class S_DF54_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF54_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF56_Test.java b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF56_Test.java index 4e7beff0d..4340c4922 100644 --- a/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF56_Test.java +++ b/clearing-parent/dbf-exporter/src/test/java/ru/spcex/clearing/dbf/exporter/services/S_DF56_Test.java @@ -29,9 +29,6 @@ class S_DF56_Test extends AbstractServiceTest { super.init(); } - /** - * Тест проверяет создание строк документа DBF .
- */ @Test void cdeateSdf() { Table table = Table.S_DF56; @@ -48,11 +45,9 @@ class S_DF56_Test extends AbstractServiceTest { sdfClearingRequest.setGroupId(generationId); String request = getJsonStringForNew(sdfClearingRequest, generationId); addRecordToKafka((MockConsumer) commandService.getConsumer(), Consts.SDF56_PROCESS, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPConfig.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPConfig.java index 072af77b6..5ac68b3a9 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPConfig.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/SFTPConfig.java @@ -38,7 +38,6 @@ public class SFTPConfig { return new CachingSessionFactory<>(factory); } - // https://stackoverflow.com/questions/53655208/profile-doesnt-work-with-messaging-gateway @Bean("dbfGateway") public AnnotationGatewayProxyFactoryBean dbfGateway() { return new AnnotationGatewayProxyFactoryBean(DbfGateway.class); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java index a600f4717..288145328 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/config/settings/Store.java @@ -8,7 +8,6 @@ public class Store { private String outDir; private String outDirError; private boolean deleteSrcFiles = true; - //sftp settings private SftpInboundFolderSetting sftpIn; public String getSrcDir() { return srcDir; diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java index fc5b7b7f2..505e2b6d5 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/ResultContainer.java @@ -6,9 +6,6 @@ import ru.spcex.clearing.dbf.importer.logic.data.enums.StageResult; import java.io.File; import java.util.UUID; -/** - * Контейнер для передачи результата между стадиями - */ public class ResultContainer { private UUID uuid; private ETable dbfTable; diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/enums/ColumnType.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/enums/ColumnType.java index 12a7e0fac..9a070bdf1 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/enums/ColumnType.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/enums/ColumnType.java @@ -4,10 +4,6 @@ import com.linuxense.javadbf.DBFDataType; import java.sql.Types; -/** - * Типы данных в таблицах. - * Ставит в соответствие типы PostGRE и DBF - */ public enum ColumnType { VARCHAR(DBFDataType.CHARACTER, Types.VARCHAR), CHARACTER(DBFDataType.CHARACTER, Types.CHAR), diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java index b5644ab41..72a3f489f 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/AbstractTable.java @@ -70,8 +70,7 @@ public abstract class AbstractTable { return (BigDecimal) value; } if (value instanceof String) { - //return BigDecimal.valueOf(Long.parseLong((String)value)); - String str = ((String)value).trim(); + String str = ((String) value).trim(); if (str.isEmpty()) return null; return new BigDecimal(str); } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52Table.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52Table.java index 7993885bb..6356a54cb 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52Table.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52Table.java @@ -26,7 +26,7 @@ public class SDf52Table extends AbstractTable { result.setDate((String) entity[3]); BigDecimal status = (BigDecimal) entity[4]; result.setAcc_type((String) entity[5]); - result.setStatus(status != null ? status.longValue() : null); // or safe universal type result.setStatus(anyNumberToLong(entity[4])); + result.setStatus(status != null ? status.longValue() : null); result.setFileName(filename); result.setGenerationTime(Instant.now()); result.setGenerationId(fileId); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java index f2ce982fa..7d00a32c2 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57Table.java @@ -48,7 +48,7 @@ public class SDf57Table extends AbstractTable { } else if (entity[19] instanceof BigDecimal) { BigDecimal unixTime19 = (BigDecimal) entity[19]; if (unixTime19 != null) { - result.setExt_date(unixTime19.toString()); // unix time + result.setExt_date(unixTime19.toString()); } } else if (entity[19] != null) { result.setExt_date(String.valueOf(entity[19])); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java index 3b6bf3287..3debde38b 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/DbfImportKafkaMessenger.java @@ -49,10 +49,6 @@ public class DbfImportKafkaMessenger implements InitializingBean { messengers.put(ETable.DF_57, groupId -> messageStatement(groupId, SdfTable.SDF_57)); } - /** - * отправляет в кафку сообщение, при необходимости - * (обрабатывается, например, в balance-service, clearing-service) - */ public void notifySystemIfNeeded(ETable table, Long groupId) { Consumer messenger = messengers.get(table); if (messenger != null) { @@ -85,7 +81,6 @@ public class DbfImportKafkaMessenger implements InitializingBean { private void sendUserNotification(ObjectType objectType, String comment, Priority priority) { final String destination = Consts.NOTIFICATION_NEW; NotificationNewRequest request = new NotificationNewRequest(); - //request.setObjectId(); request.setObjectType(objectType.getKey()); request.setPriority(priority.getKey()); request.setComment(comment); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java index c92470d1b..4e47eeb3c 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ImportToDB.java @@ -19,9 +19,6 @@ import java.util.Map; import static ru.spcex.clearing.dbf.importer.logic.data.enums.ETable.DF_01; -/** - * Заливка проверенных данных в базу - */ @Component public class ImportToDB extends Stage { private final ImportDBFServiceSettings settings; @@ -60,7 +57,7 @@ public class ImportToDB extends Stage { } table.injectEntity(table.getEntity(entity)); } - if (DF_01.equals(currTable)){ + if (DF_01.equals(currTable)) { kafkaMessenger.sendPairSdfRequest(table, currTable.getPrefix()); } kafkaMessenger.notifySystemIfNeeded(currTable, fileId); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java index 217206ccd..48b96ea94 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/stages/ValidateFields.java @@ -9,9 +9,6 @@ import ru.spcex.clearing.dbf.importer.logic.data.enums.StageResult; import java.nio.charset.Charset; -/** - * Фильтрация источника на предмет соответствия полей - */ @Component public class ValidateFields extends Stage implements InitializingBean { private final ImportDBFServiceSettings settings; @@ -26,9 +23,6 @@ public class ValidateFields extends Stage implements InitializingBean { return StageResult.OK; } - /** - * 1. Проверяет кодировку из настройки dbf.encoding-source - */ @Override public void afterPropertiesSet() throws Exception { initDBFCharset(); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java index 40a243e9b..c48a2ddba 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/DBFImporterService.java @@ -61,8 +61,6 @@ public class DBFImporterService { } else { log.trace("no files were found"); } - - // Сортировка по возрастанию времени изменения - обрабатывать только в таком порядке List> orderByTimeFiles = new ArrayList<>(); for (Map.Entry> newFilesEntry : newFiles.entrySet()) { ETable currTable = newFilesEntry.getKey(); diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java index 47ab54498..4f7de059b 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/FileChecker.java @@ -78,7 +78,7 @@ public class FileChecker { List files = new ArrayList<>(); log.trace("Load from SFTP paths: {}", settings.getStore().getSftpIn().getSftpSrcPayValDir().values()); for (String path : settings.getStore().getSftpIn().getSftpSrcPayValDir().values()) { - if (!path.endsWith("/")) // без "/" на конце папки пишет ошибку: Caused by: com.jcraft.jsch.SftpException: No such file + if (!path.endsWith("/")) path += "/"; files.addAll(gateway.listFiles(path)); } diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java index 9eb424392..e5c44f320 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/services/LauncherCommandReceiver.java @@ -23,23 +23,20 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi this.importer = importer; } - /** - * В реальности не используется - */ @Override public void afterPropertiesSet() { callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.run(ETable.DF_04)) - .forDestination(Task.createOrderConfirm.topic(), callbacks::put); // CORC + .setConsumer(action -> importer.run(ETable.DF_04)) + .forDestination(Task.createOrderConfirm.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.run(ETable.DF_01)) - .forDestination(Task.accrualOfBalance.topic(), callbacks::put); // GBAL + .setConsumer(action -> importer.run(ETable.DF_01)) + .forDestination(Task.accrualOfBalance.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.run(ETable.DF_09)) - .forDestination(Task.getBalance.topic(), callbacks::put); // GBLD + .setConsumer(action -> importer.run(ETable.DF_09)) + .forDestination(Task.getBalance.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.run(ETable.DF_16)) - .forDestination(Task.additionOrDeleteOfBalance.topic(), callbacks::put); // ADBL + .setConsumer(action -> importer.run(ETable.DF_16)) + .forDestination(Task.additionOrDeleteOfBalance.topic(), callbacks::put); init(); } diff --git a/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06TableTest.java b/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06TableTest.java index f8fcb3cec..dfed900d7 100644 --- a/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06TableTest.java +++ b/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06TableTest.java @@ -14,10 +14,10 @@ class SDf06TableTest { assertNull(table.anyNumberToBigDecimal(null)); assertNull(table.anyNumberToBigDecimal("")); assertNull(table.anyNumberToBigDecimal(" ")); - assertEquals(BigDecimal.valueOf(1234), table.anyNumberToBigDecimal("1234")); // это для INN + assertEquals(BigDecimal.valueOf(1234), table.anyNumberToBigDecimal("1234")); assertEquals(BigDecimal.valueOf(1234).setScale(0), table.anyNumberToBigDecimal(" 1234")); assertEquals(BigDecimal.valueOf(1234), table.anyNumberToBigDecimal(" 1234 ")); - assertEquals(new BigDecimal("100000000.0"), table.anyNumberToBigDecimal(" 100000000.0")); // это для SUM + assertEquals(new BigDecimal("100000000.0"), table.anyNumberToBigDecimal(" 100000000.0")); assertEquals(BigDecimal.ONE.scaleByPowerOfTen(3).setScale(2), table.anyNumberToBigDecimal(" 1000.00 ")); assertNull(table.anyNumberToBigDecimal(null)); } diff --git a/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52TableTest.java b/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52TableTest.java index c2604b788..ea9ea7cf1 100644 --- a/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52TableTest.java +++ b/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf52TableTest.java @@ -21,7 +21,6 @@ import java.util.List; class SDf52TableTest { - // @Test todo тестовый файл DF-52_S_PRC2308251504_1.dbf не готов, включить тест, когда будет пример формата void getEntity() throws IOException { ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer = null; ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter = null; @@ -31,21 +30,17 @@ class SDf52TableTest { SDf52Table tableReader = new SDf52Table(); tableReader.setHazelcastService(hcSvs); - // ImportToDB - byte[] fileData = Files.readAllBytes(Path.of("src/test/resources/sdf/DF-52_S_PRC2308251504_1.dbf")); tableReader.setFilename("DF-52_S_PRC2308251504_1.dbf"); tableReader.setFileId(123L); - tableReader.bootMap(); // IMDGDistributedNames.Map_SDf57 + tableReader.bootMap(); int count = reader(fileData, tableReader); Assertions.assertEquals(1, count); -// Assertions.assertEquals(count, tableReader.map.size()); } int reader(byte[] source, AbstractTable table) throws IOException { -// byte[] source = resultContainer.getDbfSource(); - Charset sourceCharset = Charset.forName("cp866"); //settings.getCommon().getEncodingSource()); + Charset sourceCharset = Charset.forName("cp866"); int count = 0; try (InputStream is = new ByteArrayInputStream(source); @@ -53,13 +48,11 @@ class SDf52TableTest { for (int i = 0; i < dbfReader.getRecordCount(); i++) { Object[] entity = dbfReader.nextRecord(); if (entity == null) { -// log.warn("record index {} null", i); continue; } count++; SpcexObjectBase entityObj = table.getEntity(entity); Assertions.assertNotNull(entityObj); - //table.injectEntity(table.getEntity(entity)); } } return count; diff --git a/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57TableTest.java b/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57TableTest.java index ec5ad0135..409f4e580 100644 --- a/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57TableTest.java +++ b/clearing-parent/dbf-importer/src/test/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf57TableTest.java @@ -31,33 +31,26 @@ class SDf57TableTest { HazelcastService hcSvs = new HazelcastService(taskExecutorHazelcastClientInitializer, taskExecutorIdGeneratorAwaiter, hazelcastClientParams); tableReader.setHazelcastService(hcSvs); - //tableReader.bootMap(); - - // ImportToDB - byte[] fileData = Files.readAllBytes(Path.of("src/test/resources/sdf/DF-57_S_PRC2306141135_1.dbf")); tableReader.setFilename("DF-57_S_PRC2306141135_1.dbf"); tableReader.setFileId(123L); - tableReader.bootMap(); // IMDGDistributedNames.Map_SDf57 + tableReader.bootMap(); int count = reader(fileData, tableReader); Assertions.assertEquals(10, count); } int reader(byte[] source, AbstractTable table) throws IOException { -// byte[] source = resultContainer.getDbfSource(); - Charset sourceCharset = Charset.forName("cp866"); //settings.getCommon().getEncodingSource()); + Charset sourceCharset = Charset.forName("cp866"); int count = 0; try (InputStream is = new ByteArrayInputStream(source); DBFReader dbfReader = new DBFReader(is, sourceCharset)) { for (int i = 0; i < dbfReader.getRecordCount(); i++) { Object[] entity = dbfReader.nextRecord(); if (entity == null) { -// log.warn("record index {} null", i); continue; } SpcexObjectBase entityObj = table.getEntity(entity); - //table.injectEntity(entityObj); count++; } } diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AccountTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AccountTypeDictionary.java index 00cfbfdc5..12442efe5 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AccountTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AccountTypeDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов счетов - * - * Dictionary DB table: ACCOUNT_TYPE_DICTIONARY - **/ public class AccountTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AllowedDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AllowedDictionary.java index 420b3eab8..5bfcbeaeb 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AllowedDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/AllowedDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: ALLOWED_DICTIONARY - */ public class AllowedDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BalanceDimensionDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BalanceDimensionDictionary.java index 1ba6eff87..d415bb26b 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BalanceDimensionDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BalanceDimensionDictionary.java @@ -1,9 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник размерностей балансов - * - * Dictionary DB table: BALANCE_DIMENSION_DICTIONARY - **/ + public class BalanceDimensionDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BondTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BondTypeDictionary.java index e6b4be62b..5ec030a3e 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BondTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/BondTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов облигаций - * - * Dictionary DB table: BOND_TYPE_DICTIONARY - **/ public class BondTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingAccountTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingAccountTypeDictionary.java index 7937910bd..6f3de1e94 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingAccountTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingAccountTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов клиринговых счетов - * - * Dictionary DB table: CLEARING_ACCOUNT_TYPE_DICTIONARY - **/ public class ClearingAccountTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingCategoryDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingCategoryDictionary.java index 72badda0d..ea574cfe9 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingCategoryDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingCategoryDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: CLEARING_CATEGORY_DICTIONARY - */ public class ClearingCategoryDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingStatusDictionary.java index e7060078f..02a2679c1 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ClearingStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник результатов клиринга - * - * Dictionary DB table: CLEARING_STATUS_DICTIONARY - **/ @Deprecated public class ClearingStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanyRoleDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanyRoleDictionary.java index da38ceef2..238e77a84 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanyRoleDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanyRoleDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: COMPANY_ROLE_DICTIONARY - */ public class CompanyRoleDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanySymbolDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanySymbolDictionary.java index 318814cfe..d2480cd2a 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanySymbolDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CompanySymbolDictionary.java @@ -1,9 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: COMPANY_SYMBOL_DICTIONARY - * Словарь с дополнительным полем shortname - */ public class CompanySymbolDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ConnectionStateDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ConnectionStateDictionary.java index ed96817e5..81a14929c 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ConnectionStateDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ConnectionStateDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник состояний соединений - * - * Dictionary DB table: CONNECTION_STATE_DICTIONARY - **/ public class ConnectionStateDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ContactTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ContactTypeDictionary.java index 699b695f6..1e3ef336b 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ContactTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ContactTypeDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: CONTACT_TYPE_DICTIONARY - */ public class ContactTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CorporationSoleTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CorporationSoleTypeDictionary.java index 82d4d5a1c..671e7fa65 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CorporationSoleTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CorporationSoleTypeDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: CORPORATION_SOLE_TYPE_DICTIONARY - */ public class CorporationSoleTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java index 256e8f4f0..1ad2471ef 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CountryCodeDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: COUNTRY_CODE_DICTIONARY - */ public class CountryCodeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CourierTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CourierTypeDictionary.java index 7b747a4f3..b88ed34fc 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CourierTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CourierTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Способ доставки документа - * - * Dictionary DB table: COURIER_TYPE_DICTIONARY - **/ public class CourierTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyCodeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyCodeDictionary.java index 2f8b2b247..784268d50 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyCodeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyCodeDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник кодов валют - * - * Dictionary DB table: CURRENCY_CODE_DICTIONARY - **/ public class CurrencyCodeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyPairDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyPairDictionary.java index b31ed025d..9860afee7 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyPairDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencyPairDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник способов доставки документа - *

- * Dictionary DB table: CURRENCY_PAIR_DICTIONARY - **/ public class CurrencyPairDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencySettlementTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencySettlementTypeDictionary.java index 29c1965a8..c07841fc5 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencySettlementTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/CurrencySettlementTypeDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов расчетов валютных пар - * - * Dictionary DB table: CURRENCY_SETTLEMENT_TYPE_DICTIONARY - **/ public class CurrencySettlementTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DayStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DayStatusDictionary.java index 724217d17..0b7164425 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DayStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DayStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник торговых статусов - * - * Dictionary DB table: DAY_STATUS_DICTIONARY - **/ public class DayStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DepoAccountTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DepoAccountTypeDictionary.java index 1b86ce7ed..56e37cbab 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DepoAccountTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DepoAccountTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов депозитарных счетов - * - * Dictionary DB table: DEPO_ACCOUNT_TYPE_DICTIONARY - **/ public class DepoAccountTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/Dictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/Dictionary.java index fbbec4e53..4dbbe376c 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/Dictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/Dictionary.java @@ -2,9 +2,6 @@ package ru.clearing.platform.dictionary; import java.io.Serializable; -/** - * Словарь. - */ public interface Dictionary extends Serializable { Long getId(); diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DocumentTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DocumentTypeDictionary.java index fdc706d1d..77b68a51a 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DocumentTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/DocumentTypeDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: DOCUMENT_TYPE_DICTIONARY - */ public class DocumentTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ErrorCodeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ErrorCodeDictionary.java index 7ebe051e7..bcb3db1d4 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ErrorCodeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ErrorCodeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Коды ошибок - * - * Dictionary DB table: ERROR_CODE_DICTIONARY - **/ public class ErrorCodeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/EventTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/EventTypeDictionary.java index 8a7dd4138..ed6d15d6d 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/EventTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/EventTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов изменений записей - * - * Dictionary DB table: EVENT_TYPE_DICTIONARY - **/ public class EventTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/GatewayResultStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/GatewayResultStatusDictionary.java index 0a5dd890b..b7efb065c 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/GatewayResultStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/GatewayResultStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов обработки - * - * Dictionary DB table: GATEWAY_RESULT_STATUS_DICTIONARY - **/ public class GatewayResultStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutDirectionDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutDirectionDictionary.java index 9950d0a5f..ce75f86e7 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutDirectionDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutDirectionDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник значений направления денежного потока - * - * Dictionary DB table: IN_OUT_DIRECTION_DICTIONARY - **/ public class InOutDirectionDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutSDfTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutSDfTypeDictionary.java index 4223a6a26..4949f1d7c 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutSDfTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InOutSDfTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов входящих и исходящих записей - *

- * Dictionary DB table: IN_OUT_S_DF_TYPE_DICTIONARY - **/ public class InOutSDfTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InstrumentTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InstrumentTypeDictionary.java index 2e3505b7f..146f10af4 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InstrumentTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/InstrumentTypeDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов инструмента - * - * Dictionary DB table: INSTRUMENT_TYPE_DICTIONARY - **/ public class InstrumentTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/LegalKindDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/LegalKindDictionary.java index 68d5dcc9b..b5fb30fcf 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/LegalKindDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/LegalKindDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: LEGAL_KIND_DICTIONARY - */ public class LegalKindDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MajorSignDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MajorSignDictionary.java index 0e74a22f8..6ea846c8a 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MajorSignDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MajorSignDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов конвертируемости валюты - * - * Dictionary DB table: MAJOR_SIGN_DICTIONARY - **/ public class MajorSignDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalPurposeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalPurposeDictionary.java index 2d151d1e4..f84040071 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalPurposeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalPurposeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник целей записей в журнале мониторинга и контроля - * - * Dictionary DB table: MANAGEMENT_JOURNAL_PURPOSE_DICTIONARY - **/ public class ManagementJournalPurposeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalStatusDictionary.java index 8f49847bc..8617dc05e 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalStatusDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов журнала мониторинга и контроля - * - * Dictionary DB table: MANAGEMENT_JOURNAL_STATUS_DICTIONARY - **/ public class ManagementJournalStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalTypeDictionary.java index 4377c7823..92e683453 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ManagementJournalTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов записей в журнале мониторинга и контроля - * - * Dictionary DB table: MANAGEMENT_JOURNAL_TYPE_DICTIONARY - **/ public class ManagementJournalTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketCodeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketCodeDictionary.java index 914007aab..cf13259cf 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketCodeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketCodeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник кодов рынков - * - * Dictionary DB table: MARKET_CODE_DICTIONARY - **/ public class MarketCodeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketTypeDictionary.java index 82b7b83f5..29162a18e 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MarketTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов торгов - *

- * Dictionary DB table: MARKET_TYPE_DICTIONARY - **/ public class MarketTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MoneyFlowSideDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MoneyFlowSideDictionary.java index 6c253d4d5..2fb573396 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MoneyFlowSideDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/MoneyFlowSideDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник направлений денежного рынка - * - * Dictionary DB table: MONEY_FLOW_SIDE_DICTIONARY - **/ public class MoneyFlowSideDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/NotificationStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/NotificationStatusDictionary.java index bd9bc2b04..abd7cfc95 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/NotificationStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/NotificationStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов сообщений - * - * Dictionary DB table: NOTIFICATION_STATUS_DICTIONARY - **/ public class NotificationStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ObjectTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ObjectTypeDictionary.java index 771901575..f659415e1 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ObjectTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ObjectTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов объектов - * - * Dictionary DB table: OBJECT_TYPE_DICTIONARY - **/ public class ObjectTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationStatusDictionary.java index 383d108e6..217f18440 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов операций - * - * Dictionary DB table: OPERATION_STATUS_DICTIONARY - **/ public class OperationStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationTypeDictionary.java index 6c902ff25..d76a1ad79 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OperationTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов операций - * - * Dictionary DB table: OPERATION_TYPE_DICTIONARY - **/ public class OperationTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OrganizationTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OrganizationTypeDictionary.java index def605aa6..010294803 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OrganizationTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/OrganizationTypeDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: ORGANIZATION_TYPE_DICTIONARY - */ public class OrganizationTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ParentDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ParentDictionary.java index c7301fcd5..9fb8769af 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ParentDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ParentDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник источников - * - * Dictionary DB table: PARENT_DICTIONARY - **/ public class ParentDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/PriorityDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/PriorityDictionary.java index 310a27da3..2ecce8b83 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/PriorityDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/PriorityDictionary.java @@ -1,9 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник приоритетов отображения - * - * Dictionary DB table: PRIORITY_DICTIONARY - **/ + public class PriorityDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCapacityDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCapacityDictionary.java index 5df412229..437c046de 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCapacityDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCapacityDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник символов регистров - источники средств - * - * Dictionary DB table: REGISTRY_CAPACITY_DICTIONARY - **/ public class RegistryCapacityDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCodeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCodeDictionary.java index 754f9bd77..27b607ad4 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCodeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryCodeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник кодов регистров - * - * Dictionary DB table: REGISTRY_CODE_DICTIONARY - **/ public class RegistryCodeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryDesignationDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryDesignationDictionary.java index 01e1b1f74..983ca309b 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryDesignationDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryDesignationDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник символов регистров - назначения - * - * Dictionary DB table: REGISTRY_DESIGNATION_DICTIONARY - **/ public class RegistryDesignationDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryInstrumentTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryInstrumentTypeDictionary.java index 8ddb13d88..e0326e930 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryInstrumentTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryInstrumentTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник символов регистров - инструменты - * - * Dictionary DB table: REGISTRY_INSTRUMENT_TYPE_DICTIONARY - **/ public class RegistryInstrumentTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryStatusDictionary.java index 7bab1d6b3..aa6052cce 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryStatusDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов регистров - * - * Dictionary DB table: REGISTRY_STATUS_DICTIONARY - **/ public class RegistryStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryUnitDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryUnitDictionary.java index 26affd2d0..323d3aabc 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryUnitDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/RegistryUnitDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник символов регистров - части регистров - * - * Dictionary DB table: REGISTRY_UNIT_DICTIONARY - **/ public class RegistryUnitDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ResultStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ResultStatusDictionary.java index 893bfef4b..32020910b 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ResultStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ResultStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Статус обработки - * - * Dictionary DB table: RESULT_STATUS_DICTIONARY - **/ public class ResultStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SectionDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SectionDictionary.java index 6b9004eb0..1416f45cb 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SectionDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SectionDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник секций - * - * Dictionary DB table: SECTION_DICTIONARY - **/ public class SectionDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceDictionary.java index 0c96c885d..89fe21b76 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник услуги - * - * Dictionary DB table: SERVICE_DICTIONARY - **/ public class ServiceDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceProductDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceProductDictionary.java index c1c9d2ab3..536511952 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceProductDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceProductDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник продукта для услуги - * - * Dictionary DB table: SERVICE_PRODUCT_DICTIONARY - **/ public class ServiceProductDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceStatusDictionary.java index fc219ea61..28238a163 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ServiceStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник услуги - * - * Dictionary DB table: SERVICE_STATUS_DICTIONARY - **/ public class ServiceStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionStatusDictionary.java index c09164d32..17e1e1417 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов клиринговых сессий - * - * Dictionary DB table: SESSION_STATUS_DICTIONARY - **/ public class SessionStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionTypeDictionary.java index 93624f60d..1f87d081d 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SessionTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов клиринговых сессий - * - * Dictionary DB table: SESSION_TYPE_DICTIONARY - **/ public class SessionTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ShareTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ShareTypeDictionary.java index 3e945bcbc..0320388eb 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ShareTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/ShareTypeDictionary.java @@ -1,9 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Dictionary DB table: SHARE_TYPE_DICTIONARY - **/ public class ShareTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; } \ No newline at end of file diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SideDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SideDictionary.java index 7dbf76d64..dbd13e50e 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SideDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/SideDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник направлений - * - * Dictionary DB table: SIDE_DICTIONARY - **/ public class SideDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/StatementTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/StatementTypeDictionary.java index fc78b37b8..0b6384664 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/StatementTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/StatementTypeDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов поступлений/списаний от ПРЦ - * - * Dictionary DB table: STATEMENT_TYPE_DICTIONARY - **/ public class StatementTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskDictionary.java index 791f61433..18ba7fed2 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskDictionary.java @@ -1,11 +1,6 @@ package ru.clearing.platform.dictionary; -/** - * Справочник задач - * - * Dictionary DB table: TASK_DICTIONARY - **/ public class TaskDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskStatusDictionary.java index cc3447d80..548077e94 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TaskStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов задач - *

- * Dictionary DB table: TASK_STATUS_DICTIONARY - **/ public class TaskStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TermTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TermTypeDictionary.java index e2880eea3..305538af6 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TermTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TermTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник видов инстурментов денежного рынка - * - * Dictionary DB table: TERM_TYPE_DICTIONARY - **/ public class TermTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryLevelDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryLevelDictionary.java index 6e3e3a96f..360b84059 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryLevelDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryLevelDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник уровней торгово-клиринговых регистров - * - * Dictionary DB table: TRADING_CLEARING_REGISTRY_LEVEL_DICTIONARY - **/ public class TradingClearingRegistryLevelDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryPurposeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryPurposeDictionary.java index fa81fe060..71a0045f3 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryPurposeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryPurposeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник областей применения - * - * Dictionary DB table: TRADING_CLEARING_REGISTRY_PURPOSE_DICTIONARY - **/ public class TradingClearingRegistryPurposeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryTypeDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryTypeDictionary.java index 8d14252bf..5c410e0b7 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryTypeDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TradingClearingRegistryTypeDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник типов торгово-клиринговых регистров - * - * Dictionary DB table: TRADING_CLEARING_REGISTRY_TYPE_DICTIONARY - **/ public class TradingClearingRegistryTypeDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; } \ No newline at end of file diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TransactionStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TransactionStatusDictionary.java index 6228f8057..7c7957220 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TransactionStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/TransactionStatusDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Справочник статусов транзакций - *

- * Dictionary DB table: TRANSACTION_STATUS_DICTIONARY - **/ public class TransactionStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/UserRoleDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/UserRoleDictionary.java index 107b4bc36..8e18af820 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/UserRoleDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/UserRoleDictionary.java @@ -1,10 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Роли пользователей - * - * Dictionary DB table: USER_ROLE_DICTIONARY - **/ public class UserRoleDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/WorkflowStatusDictionary.java b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/WorkflowStatusDictionary.java index 5864f07ee..96e5723a2 100644 --- a/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/WorkflowStatusDictionary.java +++ b/clearing-parent/dictionary/src/main/java/ru/clearing/platform/dictionary/WorkflowStatusDictionary.java @@ -1,8 +1,5 @@ package ru.clearing.platform.dictionary; -/** - * Database table: WORKFLOW_STATUS_DICTIONARY - */ public class WorkflowStatusDictionary extends AbstractDictionary { private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; diff --git a/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/error/ExtDBImporterError.java b/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/error/ExtDBImporterError.java index 84164aae5..adce7280b 100644 --- a/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/error/ExtDBImporterError.java +++ b/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/error/ExtDBImporterError.java @@ -3,7 +3,7 @@ package ru.spcex.clearing.extdb.importer.error; import ru.spcex.platform.utils.enumeration.IErrorEnumId; public enum ExtDBImporterError implements IErrorEnumId { - crossRateNotValid(10002L),//todo код для crossRateNotValid??? Используется? + crossRateNotValid(10002L), ; private final Long id; diff --git a/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterService.java b/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterService.java index 078fc6a81..58a10a93c 100644 --- a/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterService.java +++ b/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterService.java @@ -88,23 +88,20 @@ public class ExtDBImporterService { int created = 0; int updated = 0; for (SCrossRate crossRateDb : crossRatesFromDB) { - if (isValidCrossRate(crossRateDb)/* && fillNessessaryFields(crossRate)*/) { + if (isValidCrossRate(crossRateDb)) { SCrossRate sCrossRate = getSCrossRateFromImdg(crossRateDb, sCrossRateImdg); if (sCrossRate != null && byCommand) { - // Обновление всех полей объекта из БД crossRateDb.setId(sCrossRate.getId()); crossRateDb.setCreated(sCrossRate.getCreated()); crossRateDb.setUpdated(currentInstant); sCrossRateImdg.update(crossRateDb); updated++; } else if (sCrossRate == null) { - // Создание объекта из БД crossRateDb.setCreated(currentInstant); crossRateDb.setUpdated(currentInstant); sCrossRateImdg.insert(crossRateDb); created++; } - // В extDb нет таких полей, заполнить: crossRateDb.setGenerationTime(currentInstant); crossRateDb.setGenerationId(makeGenerationId(crossRateDb.getDate(), crossRateDb.getCurrCode())); @@ -119,8 +116,6 @@ public class ExtDBImporterService { } else { log.debug("Successfully import SCrossRate from DB by scheduled."); } -// CrossRatesImportedRequest importRequest = new CrossRatesImportedRequest(); -// kafka.get().sendRequestToQueue(Consts.S_CROSS_RATES_IMPORTED, importRequest); } else { log.debug("No SCrossRate were created or updated from DB. Kafka command will not be send"); } @@ -137,7 +132,7 @@ public class ExtDBImporterService { cc = -cc; l--; } - for (int i = 0; i < l; i++) d *= 10L; // d = d * (int) Math.pow(10, currCode.length()); + for (int i = 0; i < l; i++) d *= 10L; d += cc; } return d; diff --git a/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/LauncherCommandReceiver.java b/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/LauncherCommandReceiver.java index 5bf61a9f7..0cf4cbe15 100644 --- a/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/LauncherCommandReceiver.java +++ b/clearing-parent/extdb-importer/src/main/java/ru/spcex/clearing/extdb/importer/services/LauncherCommandReceiver.java @@ -25,8 +25,8 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi @Override public void afterPropertiesSet() { callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.process(true)) - .forDestination(Task.getCurrencyRates.topic(), callbacks::put); // CBRR + .setConsumer(action -> importer.process(true)) + .forDestination(Task.getCurrencyRates.topic(), callbacks::put); init(); } } diff --git a/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/config/DbTestConnectionConfig.java b/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/config/DbTestConnectionConfig.java index 6b100084d..4923bcc7e 100644 --- a/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/config/DbTestConnectionConfig.java +++ b/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/config/DbTestConnectionConfig.java @@ -36,7 +36,6 @@ public class DbTestConnectionConfig { String OPERATION_DATABASE_CONNECTION_CHECK = String.format("Database [%s] connection check", dbUrl); try { Connection conn = cpds.getConnection(); -// conn.close(); log.info("{}: success", OPERATION_DATABASE_CONNECTION_CHECK); return cpds; } catch (Throwable e) { diff --git a/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java b/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java index bdb4edc4c..97c4c0787 100644 --- a/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java +++ b/clearing-parent/extdb-importer/src/test/java/ru/spcex/clearing/extdb/importer/services/ExtDBImporterServiceTest.java @@ -54,23 +54,13 @@ class ExtDBImporterServiceTest extends AbstractServiceTest { clearAllInImdg(sCrossRateImdg); } - /** - * {@link ExtDBImporterService#process(boolean)}
- * Тест проверяет обновление сущности {@link SCrossRate}.
- * Входной запрос {@link LauncherCommandRequest}:
- */ - @Disabled //для работы теста нужна тестовая база Microsoft SQL с данными + @Disabled @Test void process_by_queue() throws InterruptedException { SCrossRate sCrossRate = getSCrossRate(); Long id = sCrossRateImdg.insert(sCrossRate); addRecordToKafka((MockConsumer) launcherCommandReceiver.getConsumer(), Task.getCurrencyRates.topic(), 0, 1, getJsonStringForNew(new LauncherCommandRequest(), 0)); - - //waiting for kafka producer send message -// ArgumentCaptor captor = getCaptor(kafkaTemplate); -// verify(kafkaTemplate, timeout(30_000L).times(1)) -// .send(captor.capture()); Thread.sleep(1000L); SCrossRate sCrossRates = extDBImporterService.getSCrossRateFromImdg(sCrossRate, sCrossRateImdg); @@ -78,29 +68,19 @@ class ExtDBImporterServiceTest extends AbstractServiceTest { assertEquals(sCrossRates.getId(), id); } - /** - * {@link ExtDBImporterService#process(boolean)}
- * Тест проверяет обновление сущности {@link SCrossRate}.
- * Входной запрос {@link LauncherCommandRequest}:
- */ - @Disabled //для работы теста нужна тестовая база Microsoft SQL с данными + @Disabled @Test void process_direct_call() throws InterruptedException { SCrossRate sCrossRate = getSCrossRate(); - sCrossRate.setDate(LocalDate.of(2024,2,13)); + sCrossRate.setDate(LocalDate.of(2024, 2, 13)); Long id = sCrossRateImdg.insert(sCrossRate); assertEquals(1, sCrossRateImdg.size()); extDBImporterService.process(true); - assertEquals(6, sCrossRateImdg.size()); // резуьтат зависит от внешней тестовой базы + assertEquals(6, sCrossRateImdg.size()); } - /** - * {@link ExtDBImporterService#createSelectSQL()}
- * Тест проверяет построение SQL.
- * Входные данные {@link SCrossRate} в sCrossRateImdg
- */ @Test void createSelectSQL() { ((ImdgHazelcast) sCrossRateImdg).clear(); @@ -121,11 +101,6 @@ class ExtDBImporterServiceTest extends AbstractServiceTest { assertEquals("SELECT * FROM dbo.crossRate where date>='2024-02-13'", sql); } - /** - * {@link ExtDBImporterService#getSCrossRateFromImdg(SCrossRate, Imdg)}
- * Тест проверяет поиск сущности {@link SCrossRate}.
- * Входной запрос {@link LauncherCommandRequest}:
- */ @Test void getSCrossRateFromImdg() { SCrossRate sCrossRate = getSCrossRate(); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateErrorHandler.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateErrorHandler.java index 00f3bd5d0..daf608431 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateErrorHandler.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/config/RestTemplateErrorHandler.java @@ -101,7 +101,7 @@ public class RestTemplateErrorHandler implements ResponseErrorHandler { prefix = "Ошибка загрузки биржевых инструментов"; } else if (Section.CURR == section) { prefix = "Ошибка загрузки биржевых валютных инструментов"; - } else {//never + } else { prefix = "Ошибка загрузки " + section + " инструментов"; log.error("No text for section={}", section); } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java index b0a17024d..c4da7c43b 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/GatewayController.java @@ -91,7 +91,6 @@ public class GatewayController { ) @ResponseBody public CommonResponse listingsFond(@RequestBody FondListingsRequest request) { -// request.validate(validTypes, List.of(Section.FOND)); executor.submit(() -> listingFondProcessor.process(request)); return createResponse(request, true); } @@ -110,7 +109,6 @@ public class GatewayController { ) @ResponseBody public CommonResponse listingsMM(@RequestBody MMListingsRequest request) { -// request.validate(validTypes, List.of(Section.MKR)); executor.submit(() -> listingMMProcessor.process(request)); return createResponse(request, true); } @@ -129,7 +127,6 @@ public class GatewayController { ) @ResponseBody public CommonResponse listingsCurr(@RequestBody CurrListingsRequest request) { -// request.validate(validTypes, List.of(Section.CURR)); executor.submit(() -> listingCurrProcessor.process(request)); return createResponse(request, true); } @@ -148,7 +145,6 @@ public class GatewayController { ) @ResponseBody public CommonResponse companies(@RequestBody CompaniesRequest request) { -// request.validate(validTypes, Collections.emptyList()); executor.submit(() -> companiesProcessor.process(request)); return createResponse(request, true); } @@ -237,9 +233,7 @@ public class GatewayController { private CommonResponse createCommonResponse(UUID uuid) { CommonResponse commonResponse = new CommonResponse(); commonResponse.setId(uuid); -// commonResponse.setType(request.getType()); commonResponse.setDatetime(Instant.now()); -// commonResponse.setSection(request.getSection()); return commonResponse; } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/company/Company.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/company/Company.java index 87caa4036..cded91683 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/company/Company.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/inbound/request/company/Company.java @@ -6,56 +6,53 @@ import ru.spcex.clearing.gatewayapi.controller.inbound.request.WithMapId; import java.util.UUID; -/** - * Компания участник - */ public class Company extends WithMapId { @JsonProperty("id") @ApiModelProperty( - value = "Идентификатор участника", - example = "ef47f76c-bcea-11ed-afa1-0242ac120003" + value = "Идентификатор участника", + example = "ef47f76c-bcea-11ed-afa1-0242ac120003" ) private UUID id; @JsonProperty("short_name") @ApiModelProperty( - value = "Краткое наименование участника", - example = "Банк ВТБ (ПАО)" + value = "Краткое наименование участника", + example = "Банк ВТБ (ПАО)" ) private String shortName; @JsonProperty("full_name") @ApiModelProperty( - value = "Полное наименование участника", - example = "Банк ВТБ (публичное акционерное общество)" + value = "Полное наименование участника", + example = "Банк ВТБ (публичное акционерное общество)" ) private String fullName; @JsonProperty("trading_code") @ApiModelProperty( - value = "Биржевой код участника", - example = "49" + value = "Биржевой код участника", + example = "49" ) private String tradingCode; @JsonProperty("clearing_code") @ApiModelProperty( - value = "Краткий клиринговый код участника клиринга. Заполняется, если участник является участником клиринга.", - example = "49" + value = "Краткий клиринговый код участника клиринга. Заполняется, если участник является участником клиринга.", + example = "49" ) private String clearingCode; @JsonProperty("registration_code") @ApiModelProperty( - value = "Регистрационный код участника", - example = "E/I/7702070139///////1/044525187" + value = "Регистрационный код участника", + example = "E/I/7702070139///////1/044525187" ) private String registrationCode; @JsonProperty("initiator_code") @ApiModelProperty( - value = "Код инициатора. Заполняется, если участник является инициатором.", - example = "AB" + value = "Код инициатора. Заполняется, если участник является инициатором.", + example = "AB" ) private String initiatorCode; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/outbound/request/OutboundRequest.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/outbound/request/OutboundRequest.java index f32281507..ae16b5693 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/outbound/request/OutboundRequest.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/controller/outbound/request/OutboundRequest.java @@ -48,10 +48,9 @@ public class OutboundRequest { ) private String section = ""; - // todo Пока так, чтобы отсылал null, в дальнейшем тип надо заменить на используемый в запросе. Возможно с помощью параметризации @JsonProperty("content") @ApiModelProperty( - value = "Контент", example = "null" + value = "Контент", example = "null" ) private Map content = null; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparator.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparator.java index 87be61427..af07bc9a6 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparator.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparator.java @@ -23,26 +23,22 @@ public class CodeStatusComparator implements Comparator { @Override public int compare(T o1, T o2) { - if (codeExtractor == null || workflowStatusExtractor == null) throw new IllegalStateException("codeExtractor and workflowStatusExtractor must be set"); + if (codeExtractor == null || workflowStatusExtractor == null) + throw new IllegalStateException("codeExtractor and workflowStatusExtractor must be set"); String securitySymbol1 = codeExtractor.apply(o1); String securitySymbol2 = codeExtractor.apply(o2); String workflowStatus1 = workflowStatusExtractor.apply(o1); String workflowStatus2 = workflowStatusExtractor.apply(o2); - - //Если приходят несколько объектов с одним security.security_symbol и разными security.workflow_status, - // просьба сначала обрабатывать записи workflow_status="BLKD", а потом с workflow_status="ACTV". if (!Objects.equals(securitySymbol1, securitySymbol2)) { return Objects.compare(securitySymbol1, securitySymbol2, Comparator.naturalOrder()); } if (Objects.equals(workflowStatus1, workflowStatus2)) { return 0; } - //сначала достаем workflowStatus из объекта Function statusObtainer = ws -> { WorkflowStatus workflowStatus = IEnumKey.getEnumByKey(WorkflowStatus.class, ws); return Objects.requireNonNullElse(workflowStatus, WorkflowStatus.Active); }; - //потом устанавливаем очередносьб: сначала Blocked Function statusMapper = ws -> { if (WorkflowStatus.Blocked.equals(ws)) { return -1; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java index dedc8c53e..e60bc8f2e 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/IssueCompanyService.java @@ -42,22 +42,19 @@ public class IssueCompanyService { List issuerContactList = groupByCompanyId(request.getIssuerContactList(), companyId); List companySymbolNewRequests = issuerCompanySymbolsList.stream(). - map(issuerCompanyRequestAdapter::toCompanySymbolRequest).toList(); + map(issuerCompanyRequestAdapter::toCompanySymbolRequest).toList(); List contactNewRequests = issuerContactList.stream(). - map(issuerCompanyRequestAdapter::toContactRequest).toList(); + map(issuerCompanyRequestAdapter::toContactRequest).toList(); SecurityMkrGatewayRequest securityMkrGatewayRequest = new SecurityMkrGatewayRequest(); securityMkrGatewayRequest.setCompanyNewRequest(issuerCompanyRequestAdapter.toCompanyRequest(issuerCompany)); securityMkrGatewayRequest.setCompanySymbolNewRequests(companySymbolNewRequests); securityMkrGatewayRequest.setContactNewRequests(contactNewRequests); request.getIssuerCompanyInfoList() - .stream() - .filter(info -> info.getCompanyId().equals(companyId)).findFirst() - .map(issuerCompanyRequestAdapter::toCompanyInfoRequest) - .ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest); - - //todo реализовать на стороне security-service обработку и правильную группировку -// kafkaSender.sendRequestToQueue(Consts.DESTINATION_ISSUER_COMPANY_GATEWAY_REQUEST, securityMkrGatewayRequest); + .stream() + .filter(info -> info.getCompanyId().equals(companyId)).findFirst() + .map(issuerCompanyRequestAdapter::toCompanyInfoRequest) + .ifPresent(securityMkrGatewayRequest::setCompanyInfoUpdateRequest); } catch (Throwable e) { log.error("{}", ExceptionUtils.getStackTrace(e)); } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java index 3118fdbd4..897a9a913 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/SecurityService.java @@ -75,12 +75,6 @@ public class SecurityService { fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests); log.debug("Send request to DESTINATION_SECURITY_BOND_GATEWAY"); kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, securityGatewayRequest); -// } else if (InstrumentType.CRNC.equalsByKey(security.getInstrumentType())) { // todo будет отдельная задача -// CurrencyPairSecurityNewRequest currencyPairSecurityNewRequest = securityRequestAdapter.toCurrencyPairSecurityNewRequest(security); -// securityGatewayRequest = new CurrencyPairSecurityGatewayRequest(currencyPairSecurityNewRequest); -// fillRequest(securityGatewayRequest, security, listingRequests, couponPeriodRequests, cashFlowRequests); -// log.debug("Send request to DESTINATION_SECURITY_BOND_GATEWAY"); -// kafkaSender.sendRequestToQueue(Consts.DESTINATION_SECURITY_CURRENCY_GATEWAY, securityGatewayRequest); } else { log.error("Unknown instrumentType={}", security.getInstrumentType()); } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java index 2a2bf1707..f8b120f99 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CompanyRequestAdapter.java @@ -44,7 +44,7 @@ public class CompanyRequestAdapter { public CompanyInfoUpdateRequest toCompanyInfoRequest(CompanyInfo companyInfo) { CompanyInfoUpdateRequest companyInfoUpdateRequest = new CompanyInfoUpdateRequest(); - companyInfoUpdateRequest.setCountryCode("RUS"); // todo в текущей версии ТЗ присылается в цифровом обозначении + companyInfoUpdateRequest.setCountryCode("RUS"); companyInfoUpdateRequest.setProfessionalSign(companyInfo.getProfessionalSign()); companyInfoUpdateRequest.setLegalKind(companyInfo.getLegalKind()); companyInfoUpdateRequest.setOrganizationType(companyInfo.getOrganizationType()); @@ -80,8 +80,7 @@ public class CompanyRequestAdapter { public ClientCodeNewRequest toClientRequest(Client client) { if (client.getMoneyAccount() != null) try { Account mAccount = accountMap.getSingleObjectByFieldValues(Map.of( - // "accountType", AccountType.Clrn.getKey(), or "accountType", AccountType.Info.getKey(), - "account", client.getMoneyAccount() + "account", client.getMoneyAccount() )); if (mAccount == null) { log.warn("Money account \"{}\" not found", client.getMoneyAccount()); diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java index 1782a637b..3947fd6b3 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/CurrencyPairSecurityRequestAdapter.java @@ -21,19 +21,14 @@ public class CurrencyPairSecurityRequestAdapter { securityNewRequest.setSettlementType(currencyInstrument.getSettleCode()); securityNewRequest.setClearingOrganization(currencyInstrument.getClearingOrganization()); securityNewRequest.setWorkflowStatus(currencyInstrument.getWorkflowStatus()); - - // Для listing securityNewRequest.setMinStep(currencyInstrument.getMinStep()); securityNewRequest.setPrecision(currencyInstrument.getPrecision()); securityNewRequest.setLotSize(currencyInstrument.getLotSize()); req.setTradeMode(currencyInstrument.getTradingMode()); - - // для currencyPairId req.setLotCurrencyLetterCode(currencyInstrument.getLotCurrencyLetterCode()); req.setMatchedCurrencyLetterCode(currencyInstrument.getMatchedCurrencyLetterCode()); req.setCurrencySecurityNewRequest(securityNewRequest); -// req.setUuid(currencyInstrument.getInitiatorId() != null ? currencyInstrument.getInitiatorId().toString() : null); return req; } } diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java index f95128a26..fe07e3e7e 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/adapter/SecurityRequestAdapter.java @@ -48,21 +48,6 @@ public class SecurityRequestAdapter { } public CurrencyPairSecurityNewRequest toCurrencyPairSecurityNewRequest(FondSecurity fondSecurity) { -// CurrencyPairSecurityNewRequest currencyPairSecurityNewRequest = new CurrencyPairSecurityNewRequest(); -// currencyPairSecurityNewRequest.setInstrumentType(fondSecurity.getInstrumentType()); -// currencyPairSecurityNewRequest.setSecuritySymbol(fondSecurity.getSecuritySymbol()); -// currencyPairSecurityNewRequest.setShortName(fondSecurity.getShortName()); -// currencyPairSecurityNewRequest.setFullName(fondSecurity.getFullName()); -// currencyPairSecurityNewRequest.setMarket(fondSecurity.getMarket()); -// currencyPairSecurityNewRequest.setCurrencyPairId(fondSecurity.getCurrencyPairId()); -// currencyPairSecurityNewRequest.setLotSize(fondSecurity.getLotSize()); -// currencyPairSecurityNewRequest.setMinStep(fondSecurity.getMinStep()); -// currencyPairSecurityNewRequest.setBaseUnitSize(fondSecurity.getBaseUnitSize()); -// currencyPairSecurityNewRequest.setSettlementType(fondSecurity.getSettlementType()); -// currencyPairSecurityNewRequest.setWorkflowStatus(fondSecurity.getWorkflowStatus()); -// currencyPairSecurityNewRequest.setSettlementOrganization(fondSecurity.getSettlementOrganization()); -// currencyPairSecurityNewRequest.setClearingOrganization(fondSecurity.getClearingOrganization()); -// return currencyPairSecurityNewRequest; throw new IllegalStateException("TODO currency pair"); } @@ -70,13 +55,9 @@ public class SecurityRequestAdapter { ListingNewRequest listingNewRequest = new ListingNewRequest(); String code = incomeListing.getCode(); listingNewRequest.setMarket(code); -// if (!TextUtil.isEmpty(code)) { -// listingNewRequest.setSymbolCode(code.substring(0, Math.min(7, code.length()))); -// } listingNewRequest.setSymbolCode(incomeListing.getSymbolCode()); listingNewRequest.setSymbolName(incomeListing.getSymbolName()); listingNewRequest.setLotSize(incomeListing.getLotSize()); -// listingNewRequest.setMinStep(incomeListing.getMinStep()); listingNewRequest.setTradingCurrency(incomeListing.getTradingCurrency()); listingNewRequest.setWorkflowStatus(incomeListing.getWorkflowStatus()); return listingNewRequest; diff --git a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/ListingCurrProcessor.java b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/ListingCurrProcessor.java index d4d0b4b57..7453cf091 100644 --- a/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/ListingCurrProcessor.java +++ b/clearing-parent/gateway-api/src/main/java/ru/spcex/clearing/gatewayapi/service/processor/ListingCurrProcessor.java @@ -55,12 +55,8 @@ public class ListingCurrProcessor { try { currencyInstrumentId = currencyInstrument.getId(); log.debug("Process currencyInstrumentId : {}", currencyInstrumentId); -// if (StringUtils.isEmpty(currencyInstrument.getCode()) || currencyInstrument.getCode().length() < 6) { -// log.warn("Incorrect code : {}, skip record", currencyInstrument.getCode()); -// continue; -// } CurrencyPairSecurityNewGatewayRequest currencySecurityNewRequest = currencyPairSecurityRequestAdapter - .toCurrencySecurityNewRequest(currencyInstrument); + .toCurrencySecurityNewRequest(currencyInstrument); kafkaSender.sendRequestToQueue(Consts.DESTINATION_GATEWAY_CURRENCY_PAIR_SECURITY, currencySecurityNewRequest); } catch (Throwable e) { log.error("currencyInstrumentId={}: {}", currencyInstrumentId, ExceptionUtils.getStackTrace(e)); diff --git a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/config/TestConfig.java b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/config/TestConfig.java index af9e87d60..16e65d28c 100644 --- a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/config/TestConfig.java +++ b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/config/TestConfig.java @@ -8,11 +8,10 @@ import org.springframework.context.annotation.FilterType; @TestConfiguration @ComponentScan(basePackages = {"ru.spcex.clearing.gatewayapi.config", - "ru.spcex.clearing.gatewayapi.controller", - "ru.spcex.clearing.gatewayapi.service"}, - excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = KafkaConfig.class), - @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = GatewayApiImdgConfig.class)}) -//@EnableConfigurationProperties(value = GatewayApiSettings.class) нужна только если не @SpringBootTest + "ru.spcex.clearing.gatewayapi.controller", + "ru.spcex.clearing.gatewayapi.service"}, + excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = KafkaConfig.class), + @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = GatewayApiImdgConfig.class)}) public class TestConfig { @Bean diff --git a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/AbstractControllerTest.java b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/AbstractControllerTest.java index 7125ad989..4cf02e97f 100644 --- a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/AbstractControllerTest.java +++ b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/AbstractControllerTest.java @@ -33,17 +33,15 @@ import static ru.spcex.clearing.test.json.MatcherFactoryWithJson.usingIgnoringFi @ContextConfiguration(classes = { - BeanConfiguration.class, - RestTemplateErrorHandler.class, - TestConfig.class, - ImdgTestConfig.class, - KafkaTestConfig.class}) -//todo может быть указать пакедж а не список контроллеров + BeanConfiguration.class, + RestTemplateErrorHandler.class, + TestConfig.class, + ImdgTestConfig.class, + KafkaTestConfig.class}) @ExtendWith(SpringExtension.class) @WebMvcTest public abstract class AbstractControllerTest { protected static final MatcherFactoryWithJson.Matcher BASE_REQUEST_MATCHER = usingIgnoringFieldsComparatorForClass(BaseRequest.class,"userId"); -// protected static final MatcherFactoryWithJson.Matcher CUD_RESPONSE_MATCHER = usingIgnoringFieldsComparatorForClass(CudResponse.class); protected static final AtomicLong currentId = new AtomicLong(); private static final CharacterEncodingFilter CHARACTER_ENCODING_FILTER = new CharacterEncodingFilter(); @@ -68,10 +66,9 @@ public abstract class AbstractControllerTest { @PostConstruct private void postConstruct() { mockMvc = MockMvcBuilders - .webAppContextSetup(webApplicationContext) - .addFilter(CHARACTER_ENCODING_FILTER) -// .apply(springSecurity()) - .build(); + .webAppContextSetup(webApplicationContext) + .addFilter(CHARACTER_ENCODING_FILTER) + .build(); imdgProvider.waitAvailable(); } diff --git a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/GatewayControllerTest.java b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/GatewayControllerTest.java index c55c6d214..fa7376894 100644 --- a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/GatewayControllerTest.java +++ b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/controller/GatewayControllerTest.java @@ -59,19 +59,13 @@ class GatewayControllerTest extends AbstractControllerTest{ securities.add(fondSecurity); request.setSecurities(securities); String req1 = writeValue(request); - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.post(LISTING_FOND_URL) - .contentType(MediaType.APPLICATION_JSON) - .content(req)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - //.andExpect(content().json(writeValue(expected))) - .andReturn(); -// CudResponseTest cudResponseTest = readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); -// expected.setPayload(new QueueSuccessResponse(ActionType.NEW, cudResponseTest.getPayload().getId())); -// CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); + .contentType(MediaType.APPLICATION_JSON) + .content(req)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); } String req = "{\n" + "\t\"id\": \"bbf4ccc0-bd9d-466d-9b2b-837e2bc3d35c\",\n" + @@ -371,7 +365,6 @@ class GatewayControllerTest extends AbstractControllerTest{ CurrListingsRequest request = new CurrListingsRequest(); List instruments = new ArrayList<>(); CurrencyInstrument cInst = new CurrencyInstrument(); -// cInst.setInstrumentType("CURR"); cInst.setId(UUID.fromString("28406b73-7eab-4e21-9295-2ae8ee5c4eb5")); cInst.setTicker("CNYRUB_TOD_N"); cInst.setName("Спот-инструмент китайский юань с расчетами сегодня с клирингом в АО СПВБ"); @@ -389,15 +382,15 @@ class GatewayControllerTest extends AbstractControllerTest{ cInst.setSettlementOrganization("НКО АО ПРЦ"); cInst.setMatchedSettlementOrganization("НКО АО ПРЦ"); cInst.setNumberOfLotCurrency(BigDecimal.valueOf(0)); - cInst.setStartTradingDate(LocalDate.of(2024,2,21)); - cInst.setSpecificationApprovalDate(LocalDate.of(2024,2,21)); + cInst.setStartTradingDate(LocalDate.of(2024, 2, 21)); + cInst.setSpecificationApprovalDate(LocalDate.of(2024, 2, 21)); cInst.setSpecificationApprovalNumber("125"); cInst.setWorkflowStatus("ACTV"); instruments.add(cInst); request.setCurrencyInstrumentList(instruments); String req1 = writeValue(request); Assertions.assertEquals("{\"id\":null,\"type\":null,\"datetime\":null,\"section\":null,\"currency_specification\":[{\"id\":\"28406b73-7eab-4e21-9295-2ae8ee5c4eb5\",\"ticker\":\"CNYRUB_TOD_N\",\"name\":\"Спот-инструмент китайский юань с расчетами сегодня с клирингом в АО СПВБ\",\"exchange_offexchange\":\"EXCHANGE\",\"min_step\":1,\"precision\":2,\"settle_code\":\"T0\",\"value_date\":\"TOD\",\"symbol_trading_mode\":\"N\",\"lot_currency_letter_code\":\"CNY\",\"matched_currency_letter_code\":\"RUB\",\"trading_mode\":\"NVAD\",\"lot_size\":1,\"clearing_organization\":\"АО СПВБ\",\"settlement_organization\":\"НКО АО ПРЦ\",\"matched_settlement_organization\":\"НКО АО ПРЦ\",\"number_of_lot_currency\":0,\"start_trading_date\":\"2024-02-21\",\"specification_approval_date\":\"2024-02-21\",\"specification_approval_number\":\"125\",\"workflow_status\":\"ACTV\"}]}", - req1); + req1); final String CURR_REQ = """ { "id": "1126de52-59ba-4118-a055-a6ac9b214ccd", @@ -435,25 +428,18 @@ class GatewayControllerTest extends AbstractControllerTest{ CurrListingsRequest cudReqObj = JsonUtil.readValue(CURR_REQ, CurrListingsRequest.class); Assertions.assertEquals("CNY", cudReqObj.getCurrencyInstrumentList().get(0).getLotCurrencyLetterCode()); Assertions.assertEquals("RUB", cudReqObj.getCurrencyInstrumentList().get(0).getMatchedCurrencyLetterCode()); - - //ACT MvcResult mvcResult = perform(MockMvcRequestBuilders.post(LISTING_CURR_URL) - .contentType(MediaType.APPLICATION_JSON) - .content(CURR_REQ)) - .andDo(print())//output to the log request and response - //ASSERT - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - //.andExpect(content().json(writeValue(expected))) - .andReturn(); + .contentType(MediaType.APPLICATION_JSON) + .content(CURR_REQ)) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); String resp = mvcResult.getResponse().getContentAsString(); String expResp = "{\"id\":\"1126de52-59ba-4118-a055-a6ac9b214ccd\",\"type\":\"DAY_START\",\"datetime\":\"29.02.2024 15:57:44:506\",\"section\":\"CURR\",\"code\":0,\"message\":\"success\"}"; resp = resp.replaceAll("\"datetime\":\"[0-9\\\\.: ]+\",", "__DATE_TIME_"); expResp = expResp.replaceAll("\"datetime\":\"[0-9\\\\.: ]+\",", "__DATE_TIME_"); Assertions.assertEquals(expResp, resp); -// CudResponseTest cudResponseTest = JsonUtil.readValue(mvcResult.getResponse().getContentAsString(), CudResponseTest.class); -// expected.setPayload(new QueueSuccessResponse(ActionType.NEW, cudResponseTest.getPayload().getId())); -// CUD_RESPONSE_MATCHER.assertMatch(cudResponseTest, expected); } } \ No newline at end of file diff --git a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparatorTest.java b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparatorTest.java index 7662ceaa5..1b7b09418 100644 --- a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparatorTest.java +++ b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/CodeStatusComparatorTest.java @@ -25,18 +25,15 @@ class CodeStatusComparatorTest { @Test void compare() { List fondSecurities = Arrays.asList( - security("2", "a", WorkflowStatus.Active.getKey()), - security("1", "a", WorkflowStatus.Blocked.getKey()), - security("3", "b", WorkflowStatus.Blocked.getKey()), - security("4", "b", WorkflowStatus.Active.getKey()), - security("6", "c", WorkflowStatus.Active.getKey()), - security("7", "d", WorkflowStatus.Blocked.getKey()), - security("8", "d", WorkflowStatus.Blocked.getKey()), - security("5", "c", WorkflowStatus.Blocked.getKey()) + security("2", "a", WorkflowStatus.Active.getKey()), + security("1", "a", WorkflowStatus.Blocked.getKey()), + security("3", "b", WorkflowStatus.Blocked.getKey()), + security("4", "b", WorkflowStatus.Active.getKey()), + security("6", "c", WorkflowStatus.Active.getKey()), + security("7", "d", WorkflowStatus.Blocked.getKey()), + security("8", "d", WorkflowStatus.Blocked.getKey()), + security("5", "c", WorkflowStatus.Blocked.getKey()) ); - //signum(compare(x, y)) == -signum(compare(y, x)) for all x and y - //((compare(x, y)>0) && (compare(y, z)>0)) implies compare(x, z)>0. - //Finally, the implementor must ensure that compare(x, y)==0 implies that signum(compare(x, z))==signum(compare(y, z)) for all z fondSecurities.sort(comp); for (int i = 0; i < fondSecurities.size(); i++) { assertEquals(Integer.parseInt(fondSecurities.get(i).getShortName()), i + 1); diff --git a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/GatewayServiceTest.java b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/GatewayServiceTest.java index 70390545d..fcd97479d 100644 --- a/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/GatewayServiceTest.java +++ b/clearing-parent/gateway-api/src/test/java/ru/spcex/clearing/gatewayapi/service/GatewayServiceTest.java @@ -59,8 +59,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = {TestConfig.class, - ImdgTestConfig.class, - KafkaTestConfig.class}) + ImdgTestConfig.class, + KafkaTestConfig.class}) @SpringBootTest @AutoConfigureWebClient(registerRestTemplate = true) public class GatewayServiceTest { @@ -105,10 +105,9 @@ public class GatewayServiceTest { private void postConstruct() { mockServer = MockRestServiceServer.bindTo(restTemplate).build(); mockMvc = MockMvcBuilders - .webAppContextSetup(webApplicationContext) - .addFilter(CHARACTER_ENCODING_FILTER) -// .apply(springSecurity()) - .build(); + .webAppContextSetup(webApplicationContext) + .addFilter(CHARACTER_ENCODING_FILTER) + .build(); imdgProvider.waitAvailable(); } @@ -116,7 +115,7 @@ public class GatewayServiceTest { return mockMvc.perform(builder); } - @Disabled//Для отладки + @Disabled @Test void requestOnLimit() throws Exception { String message = "test response"; @@ -132,18 +131,18 @@ public class GatewayServiceTest { request.setResult(true); request.setDescription(message); MvcResult mvcResult = perform(MockMvcRequestBuilders.post(LIMITS_URL) - .contentType(MediaType.APPLICATION_JSON) - .content(mapper.writeValueAsString(request))) - .andDo(print())//output to the log request and response - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andReturn(); + .contentType(MediaType.APPLICATION_JSON) + .content(mapper.writeValueAsString(request))) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); uuid = prepareMockServerResponse(HttpStatus.BAD_REQUEST, message); service.requestOnLimit(req); } - @Disabled//Для отладки + @Disabled @Test void requestOnAsset() throws Exception { String message = "test response"; @@ -162,12 +161,12 @@ public class GatewayServiceTest { request.setResult(true); request.setDescription(message); MvcResult mvcResult = perform(MockMvcRequestBuilders.post(OPERATIONS_URL) - .contentType(MediaType.APPLICATION_JSON) - .content(mapper.writeValueAsString(request))) - .andDo(print())//output to the log request and response - .andExpect(status().isOk()) - .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andReturn(); + .contentType(MediaType.APPLICATION_JSON) + .content(mapper.writeValueAsString(request))) + .andDo(print()) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andReturn(); uuid = prepareMockServerResponse(HttpStatus.BAD_REQUEST, message); service.requestOnAsset(req); @@ -199,15 +198,4 @@ public class GatewayServiceTest { mockServer.expect(requestTo(service.formingInboundUrl(settings.getInboundServer().getPathLOCM()))).andRespond(responseCreator); return uuid; } - -// @Test -// public void makeContentByReportRequestTest() { -// GatewayService gatewayService = new GatewayService(null, null, null, -// null, null, null, null); -// ReportPart reportPart = new ReportPart(); -// reportPart.setFileName("KS_BR_PFX64_INFTYPE_1_111111111111111.csv"); -// Map content = gatewayService.makeContentByReportRequest(content, reportPart); -// Assertions.assertTrue(content.containsKey("inftype_1")); -// Assertions.assertEquals("KS_BR_PFX64_INFTYPE_1_111111111111111.csv", content.get("inftype_1")); -// } } diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/HistoryPoolMapConfigs.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/HistoryPoolMapConfigs.java index eb670d92b..7cd21792a 100644 --- a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/HistoryPoolMapConfigs.java +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/HistoryPoolMapConfigs.java @@ -67,7 +67,7 @@ public class HistoryPoolMapConfigs { if (existMapStores.contains(mapStore.getMapName())) { throw new IllegalArgumentException("MapStore " + mapStore + " has wrong mapName=\"" + mapStore.getMapName() + "\" is duplicated"); } - existMapStores.add(mapStore.getMapName()); // IMDGDistributedNames + existMapStores.add(mapStore.getMapName()); MapConfig mapCfg = makeDefaultMapConfig(mapStore.getMapName(), mapStore); if (mapStore.getIndexingField() != null && mapStore.getIndexingField().length > 0) { if (log.isTraceEnabled()) { @@ -90,11 +90,9 @@ public class HistoryPoolMapConfigs { return out; } - //fixme remove @Bean("historyMapNames") public Set historyMaps() { Set historyMaps = new HashSet<>(); -// historyMaps.add(IMDGDistributedNames.Map_MoneyBalanceRegister); return historyMaps; } diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/element/ControllerSettings.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/element/ControllerSettings.java index 7ffe3144b..6d67d3dc1 100644 --- a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/element/ControllerSettings.java +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/config/element/ControllerSettings.java @@ -1,8 +1,5 @@ package ru.spcex.clearing.historyimdg.config.element; -/** - * Debug config - */ public class ControllerSettings { private String port; private String contextPath; diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxySession.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxySession.java index 755783efe..9c841f4c5 100644 --- a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxySession.java +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/index/SearchProxySession.java @@ -5,9 +5,6 @@ import ru.spcex.clearing.historyimdg.index.field.SearchWithClearingDate; import java.time.LocalDate; public class SearchProxySession extends SearchProxy implements SearchWithClearingDate { - /** - * clearing_date или created_at - */ private LocalDate clearingDate; @Override diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/AbstractSliceMapLoader.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/AbstractSliceMapLoader.java index a0ec38625..02469bb32 100644 --- a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/AbstractSliceMapLoader.java +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/AbstractSliceMapLoader.java @@ -40,7 +40,7 @@ public abstract class AbstractSliceMapLoader implements Autoco List list = Collections.singletonList(id); try { rows = load(list); - } catch (Throwable e) { // one retry + } catch (Throwable e) { rows = load(list); } return DataAccessUtils.singleResult(rows); @@ -52,8 +52,6 @@ public abstract class AbstractSliceMapLoader implements Autoco log.debug("loadAll from " + getTableName() + " " + keys.size() + " keys"); Map result = new HashMap<>(); long start = System.currentTimeMillis(); - - // загрузить данные по ключам частями, чтобы не выйти за ограничения базы по кол-ву элементов в in clause List keysSubList = new ArrayList<>(MAX_IN_CLAUSE_SIZE); for (Iterator iterator = keys.iterator(); iterator.hasNext(); ) { Long key = iterator.next(); diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/HistoryMapConfig.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/HistoryMapConfig.java index 9164c2c68..793a922fe 100644 --- a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/HistoryMapConfig.java +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/HistoryMapConfig.java @@ -13,51 +13,4 @@ public class HistoryMapConfig { public HistoryMapConfig(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } - -// @Bean -// public AutoconfiguredMap registryHistMapStore() { -// return new RegistryMapStore(jdbcTemplate) { -// @Override -// protected boolean isLoadable(Long id) { -// return true; -// } -// -// @Override -// protected boolean isLoadable(Registry obj) { -// return true; -// } -// -// @Override -// public Iterable loadAllKeys() { -// log.debug("RegistryHistoryMapStore loadAllKeys is called"); -// return new ArrayList<>(); -// } -// }; -// } -// -// @Bean -// public AutoconfiguredMap registrySomeMapStore(Class> cl) { -// try { -// AutoconfiguredMap map = cl.getDeclaredConstructor().newInstance(jdbcTemplate); -// } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { -// throw new RuntimeException(e); -// } -// return new RegistryMapStore(jdbcTemplate) { -// @Override -// protected boolean isLoadable(Long id) { -// return true; -// } -// -// @Override -// protected boolean isLoadable(Registry obj) { -// return true; -// } -// -// @Override -// public Iterable loadAllKeys() { -// log.debug("RegistryHistoryMapStore loadAllKeys is called"); -// return new ArrayList<>(); -// } -// }; -// } } diff --git a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchSessionMapStore.java b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchSessionMapStore.java index ffc8051cf..61a09fef3 100644 --- a/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchSessionMapStore.java +++ b/clearing-parent/imdg-hist/src/main/java/ru/spcex/clearing/historyimdg/mapstores/SearchSessionMapStore.java @@ -23,7 +23,7 @@ public class SearchSessionMapStore extends AbstractSliceMapLoader historyMapNames; - // - // @Autowired - // public HazelcastLifecycleSupport(HazelcastInstance hazelcastServerInstance, - // @Qualifier("historyMapNames") Collection historyMapNames) { - // this.hazelcastServerInstance = hazelcastServerInstance; - // this.historyMapNames = historyMapNames; - // } - // - // @Override - // public void afterPropertiesSet() { - // long loadTime = System.currentTimeMillis(); - // log.debug("init maps started"); - // for (String mapName : hazelcastServerInstance.getConfig().getMapConfigs().keySet()) { - // if (historyMapNames.contains(mapName)) { - // continue; - // } - // log.debug("configured '{}' map for hazelcast search server. size: {}", mapName, hazelcastServerInstance.getMap(mapName).size()); - // } - // loadTime = System.currentTimeMillis() - loadTime; - // log.info("All map load time {} ms", loadTime); - // HazelcastCommon.otcSystem_setStorageState(true, hazelcastServerInstance); - // - // TextErrorService.setHazelcast(hazelcastServerInstance); - // - // } - // - // @Override - // public void destroy() { - // hazelcastServerInstance.shutdown(); - // } - // - // public HazelcastInstance getHazelcastServerInstance() { - // return hazelcastServerInstance; - // } - //} } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java index 66e4fb924..f63cec599 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/AutoconfiguredMap.java @@ -6,16 +6,8 @@ import com.hazelcast.core.MapLoader; public interface AutoconfiguredMap extends MapLoader { MapIndexConfig[] emptyIndexes = new MapIndexConfig[0]; - /** - * - * @return IMDGDistributedNames.* - */ String getMapName(); - /** - * Список индексируемых полей, для быстрого поиска - * @return - */ String[] getIndexingField(); default MapIndexConfig[] getIndexes() { diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java index 32b4b047a..bd49f5ee8 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/BusinessObjectMapStore.java @@ -6,22 +6,12 @@ import ru.clearing.classes.objects.BusinessObject; import java.sql.ResultSet; import java.sql.SQLException; -/** - * Шаблон для загрузки BusinessObject-ов. - */ public abstract class BusinessObjectMapStore extends ObjectBaseMapStore { public BusinessObjectMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); } - /** - * Заполняет стандартные поля для BusinessObject из ResultSet - * - * @param businessObject дозаполнить стандартные поля этому объекту - * @param rs из ResultSet - * @throws SQLException - error - */ protected void fillBusinessObjectFields(BusinessObject businessObject, ResultSet rs) throws SQLException { fillBusinessObjectFields(businessObject, rs, "id"); } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java index 1e8aff1d1..e12d1f08a 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryMapStore.java @@ -14,9 +14,6 @@ import java.util.*; import static ru.spcex.clearing.imdg.base.ObjectBaseMapStore.MAX_IN_CLAUSE_SIZE; -/** - * Store для словарей стандартных - из ID, CODE, NAME. - */ public abstract class DictionaryMapStore implements MapLoader { private static final Logger log = LoggerFactory.getLogger(DictionaryMapStore.class); protected final JdbcTemplate jdbcTemplate; @@ -62,8 +59,6 @@ public abstract class DictionaryMapStore implements MapLoa log.trace("loadAll from dictionary {} {} keys", getTableName(), keys.size()); Map result = new HashMap<>(); long start = System.currentTimeMillis(); - - // загрузить данные по ключам частями, чтобы не выйти за ограничения базы по кол-ву элементов в in clause List keysSubList = new ArrayList<>(MAX_IN_CLAUSE_SIZE); for (Iterator iterator = keys.iterator(); iterator.hasNext(); ) { Long key = iterator.next(); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryTMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryTMapStore.java index bf4491ab2..1aa06c344 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryTMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/DictionaryTMapStore.java @@ -3,9 +3,6 @@ package ru.spcex.clearing.imdg.base; import org.springframework.jdbc.core.JdbcTemplate; import ru.clearing.platform.dictionary.Dictionary; -/** - * Store для автонастраиваемых map словарей - */ public abstract class DictionaryTMapStore extends DictionaryMapStore implements AutoconfiguredMap { protected DictionaryTMapStore(JdbcTemplate jdbcTemplate) { super(jdbcTemplate); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java index 7c92626f9..5ccb20892 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/ObjectBaseMapStore.java @@ -29,7 +29,7 @@ public abstract class ObjectBaseMapStore extends Simp List list = Collections.singletonList(id); try { rows = load(list); - } catch (Throwable e) { // one retry + } catch (Throwable e) { rows = load(list); } T obj = DataAccessUtils.singleResult(rows); @@ -52,8 +52,6 @@ public abstract class ObjectBaseMapStore extends Simp log.debug("loadAll from " + getTableName() + " " + keys.size() + " keys"); Map result = new HashMap<>(); long start = System.currentTimeMillis(); - - // загрузить данные по ключам частями, чтобы не выйти за ограничения базы по кол-ву элементов в in clause List keysSubList = new ArrayList<>(MAX_IN_CLAUSE_SIZE); for (Iterator iterator = keys.iterator(); iterator.hasNext(); ) { Long key = iterator.next(); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java index 6a2bd0105..54e4bec1f 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/SimpleObjectMapStore.java @@ -20,11 +20,6 @@ import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; -/** - * MapStore для выгрузки обычных объектов - * - * @param - */ public abstract class SimpleObjectMapStore implements MapStore { private final static int BATCH_SIZE = 1000; protected final Logger log = LoggerFactory.getLogger(this.getClass()); @@ -92,7 +87,7 @@ public abstract class SimpleObjectMapStore implements jdbcTemplate.batchUpdate(sql, listOfID); } catch (Exception e) { log.error("SQL error at batch DELETE FROM {}\n{}", getTableName(), ExceptionUtils.getStackTrace(e)); - log.info("List of non deleted ID {}", collection); // показать список неудалённых UUID + log.info("List of non deleted ID {}", collection); throw e; } } @@ -122,21 +117,14 @@ public abstract class SimpleObjectMapStore implements return keys; } - /** - * Выгружает ID по таблице по условию dateField >= today - * - * @param dateField поле даты - * @param canBeGreat true - используется условие >= today, иначе строгое = - * @return ID's - */ public Iterable defaultLoadAllKeysOnTodayByField(String dateField, boolean canBeGreat) { LocalDate today = LocalDate.now(); log.debug("loadAllKeys from {} on {} {} today", getTableName(), dateField, canBeGreat ? ">=" : "="); List keys; try { keys = jdbcTemplate.query("select id from " + getTableName() + " where " + dateField + (canBeGreat ? " >= ?" : " = ?"), - (resultSet, i) -> resultSet.getLong("id"), - new Object[]{today}); + (resultSet, i) -> resultSet.getLong("id"), + new Object[]{today}); } catch (Throwable e) { log.error("At load keys from {} (by field {}): {}", getTableName(), dateField, ExceptionUtils.getStackTrace(e)); throw e; @@ -179,7 +167,7 @@ public abstract class SimpleObjectMapStore implements String columnsEnumeration = Arrays.stream(fields).map(f -> "" + f.toUpperCase() + "").collect(Collectors.joining(", ")); String valuesEnumeration = String.join(", ", Collections.nCopies(fields.length, "?")); String excludedColumns = Arrays.stream(fields).filter(f -> !matchingKey.equalsIgnoreCase(f)). - map(f -> "" + f.toUpperCase() + "=EXCLUDED." + f.toUpperCase() + "").collect(Collectors.joining(", ")); + map(f -> "" + f.toUpperCase() + "=EXCLUDED." + f.toUpperCase() + "").collect(Collectors.joining(", ")); Map params = new HashMap<>(); params.put("tableName", tableName); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateEventMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateEventMapStore.java index cac56099d..5ba0893ed 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateEventMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateEventMapStore.java @@ -7,8 +7,8 @@ import ru.spcex.platform.classes.base.SpcexObjectBase; import java.util.*; public abstract class TemplateEventMapStore> - extends ObjectBaseMapStore - implements AutoconfiguredMap { + extends ObjectBaseMapStore + implements AutoconfiguredMap { protected final int validateSize = getFields().length; protected final String insertStatement = makeInsertSql(getTableName(), getFields(), "id"); @@ -42,21 +42,6 @@ public abstract class TemplateEventMapStore> extends BusinessEventMapStore { protected final int validateSize = getFields().length; @@ -21,49 +19,14 @@ public abstract class TemplateHistoryMapStore lst=new ArrayList<>(); + ArrayList lst = new ArrayList<>(); lst.add(updateObject.getId()); lst.add(TimeUtil.toDateFromInstant(updateObject.getEventTime())); lst.add(updateObject.getUserId()); lst.addAll(Arrays.asList(objectToField(object))); - //todo order? -// new Object[]{ -// companyUpdate, -// , -// companyUpdate.getUserId(), -// new Object[]{ -// companyUpdate.getId(), -// TimeUtil.toDateFromInstant(companyUpdate.getEventTime()), -// companyUpdate.getUserId(), -// -// company.getId(), // company_id -// TimeUtil.toDateFromInstant(company.getCreated()), -// TimeUtil.toDateFromInstant(company.getUpdated()), -// company.getStatusId(), -// company.getClearingCode(), -// company.getExchangeCode() -// }; return lst.toArray(); } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateMapStore.java index de4d5204b..6a7cf601c 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/base/TemplateMapStore.java @@ -7,9 +7,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.*; -/** - * MapStore для шаблонных бизнес-объектов - */ public abstract class TemplateMapStore extends ObjectBaseMapStore implements AutoconfiguredMap { protected final int validateSize = getFields().length; @@ -20,41 +17,21 @@ public abstract class TemplateMapStore extends Object super(jdbcTemplate); } - /** - * @return IMDGDistributedNames.* - */ public abstract String getMapName(); - /** - * Список индексируемых полей, для быстрого поиска - * - * @return - */ public String[] getIndexingField() { return null; } - /** - * Десериализатор - * - * @param resultSet - * @return - */ protected abstract T objectReader(ResultSet resultSet) throws SQLException; @Override public Collection load(Collection keys) { Map> paramMap = Collections.singletonMap("ids", keys); return namedParameterJdbcTemplate.query("select * from " + getTableName() + " where id in (:ids)", paramMap, - (resultSet, i) -> objectReader(resultSet)); + (resultSet, i) -> objectReader(resultSet)); } - /** - * Сериализатор - * - * @param resultSet - * @return Object[] args - */ protected abstract Object[] objectToField(T resultSet); @Override diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java index 682ed3093..df9df2c36 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/ASecurityHistoryMapStore.java @@ -10,11 +10,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -/** - * Двойная запись в 2 таблицы: - * SECURITY_HISTORY - * *_SECURITY_HISTORY - */ public abstract class ASecurityHistoryMapStore> extends TemplateEventMapStore { protected final int validateSecuritySize; @@ -26,35 +21,35 @@ public abstract class ASecurityHistoryMapStore companyInfoToSQLArgs(@NonNull CompanyInfo companyInfo, CompanyHistory rootUpdate) { return new ArrayList<>(Arrays.asList( - rootUpdate.getId(), - TimeUtil.toDateFromInstant(rootUpdate.getEventTime()), - rootUpdate.getEventType(), - rootUpdate.getUserId(), + rootUpdate.getId(), + TimeUtil.toDateFromInstant(rootUpdate.getEventTime()), + rootUpdate.getEventType(), + rootUpdate.getUserId(), - companyInfo.getId(), // company_info_id - companyInfo.getCompanyId(), - companyInfo.getCorporationSoleType(), - companyInfo.getCountryCode(), - companyInfo.getDescription(), - companyInfo.getProfessionalSign(), - companyInfo.getLegalKind(), - companyInfo.getOrganizationType(), - companyInfo.getResidence(), - companyInfo.getShortNameEng(), - companyInfo.getFullNameEng() -// companyInfo.getShortName(), -// companyInfo.getFullName(), -// companyInfo.getTradingCode(), -// companyInfo.getClearingCode(), -// companyInfo.getRegistrationCode() + companyInfo.getId(), + companyInfo.getCompanyId(), + companyInfo.getCorporationSoleType(), + companyInfo.getCountryCode(), + companyInfo.getDescription(), + companyInfo.getProfessionalSign(), + companyInfo.getLegalKind(), + companyInfo.getOrganizationType(), + companyInfo.getResidence(), + companyInfo.getShortNameEng(), + companyInfo.getFullNameEng() )); } } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/RegistryHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/RegistryHistoryMapStore.java index a6dc886d3..1ac623677 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/RegistryHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/RegistryHistoryMapStore.java @@ -58,7 +58,7 @@ public class RegistryHistoryMapStore extends TemplateEventMapStore list = Collections.singletonList(id); try { rows = load(list); - } catch (Throwable e) { // one retry + } catch (Throwable e) { rows = load(list); } RegistryHistory obj = DataAccessUtils.singleResult(rows); @@ -73,8 +73,6 @@ public class RegistryHistoryMapStore extends TemplateEventMapStore result = new HashMap<>(); long start = System.currentTimeMillis(); - - // загрузить данные по ключам частями, чтобы не выйти за ограничения базы по кол-ву элементов в in clause List keysSubList = new ArrayList<>(MAX_IN_CLAUSE_SIZE); for (Iterator iterator = keys.iterator(); iterator.hasNext(); ) { Long key = iterator.next(); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java index 9f0c5dc60..5ca2d1e31 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessevent/SecurityHistoryMapStore.java @@ -8,7 +8,6 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.base.TemplateEventMapStore; import ru.spcex.platform.utils.time.TimeUtil; -// Abstract table: ASecurityHistoryMapStore @Component public class SecurityHistoryMapStore extends TemplateEventMapStore { @@ -29,7 +28,7 @@ public class SecurityHistoryMapStore extends TemplateEventMapStore extends TemplateMapStore { +public abstract class ASecurityMapStore extends TemplateMapStore { protected final int validateSecuritySize; @@ -33,28 +25,27 @@ public abstract class ASecurityMapStore extends TemplateMap } private final String insertToSecurityStatement = makeInsertSql("SECURITY", - getFieldsSecurity(), "id"); - + getFieldsSecurity(), "id"); protected void fillBySecurity(S object, Long securityId) { List resouts = jdbcTemplate.query( - "SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId}, - (rs, rowNum) -> { - object.setCreated(getInstantFromTimestamp(rs, "CREATED_AT")); - object.setUpdated(getInstantFromTimestamp(rs, "UPDATED_AT")); - object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class)); - object.setIssuerId(rs.getObject("issuer_id", Long.class)); - object.setShortName(rs.getObject("short_name", String.class)); - object.setFullName(rs.getObject("FULL_NAME", String.class)); - object.setShortNameEng(rs.getObject("short_name_eng", String.class)); - object.setFullNameEng(rs.getObject("full_name_eng", String.class)); - object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", String.class)); - object.setIsin(rs.getObject("ISIN", String.class)); - object.setWorkflowStatus(rs.getObject("workflow_status", String.class)); - object.setIsin(rs.getObject("UUID", String.class)); - return object; - } + "SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId}, + (rs, rowNum) -> { + object.setCreated(getInstantFromTimestamp(rs, "CREATED_AT")); + object.setUpdated(getInstantFromTimestamp(rs, "UPDATED_AT")); + object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class)); + object.setIssuerId(rs.getObject("issuer_id", Long.class)); + object.setShortName(rs.getObject("short_name", String.class)); + object.setFullName(rs.getObject("FULL_NAME", String.class)); + object.setShortNameEng(rs.getObject("short_name_eng", String.class)); + object.setFullNameEng(rs.getObject("full_name_eng", String.class)); + object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", String.class)); + object.setIsin(rs.getObject("ISIN", String.class)); + object.setWorkflowStatus(rs.getObject("workflow_status", String.class)); + object.setIsin(rs.getObject("UUID", String.class)); + return object; + } ); if (resouts.size() != 1) { log.warn("Result size={} not expected for table SECURITY, {} where id={}", getTableName(), resouts.size(), securityId); @@ -64,19 +55,19 @@ public abstract class ASecurityMapStore extends TemplateMap protected Object[] securityField(S object) { Object[] args = new Object[]{ - object.getId(), // SecurityId - TimeUtil.toDateFromInstant(object.getCreated()), - TimeUtil.toDateFromInstant(object.getUpdated()), - object.getInstrumentType(), - object.getIssuerId(), - object.getShortName(), - object.getFullName(), - object.getShortNameEng(), - object.getFullNameEng(), - object.getSecuritySymbol(), - object.getIsin(), - object.getWorkflowStatus(), - object.getUuid() + object.getId(), + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + object.getInstrumentType(), + object.getIssuerId(), + object.getShortName(), + object.getFullName(), + object.getShortNameEng(), + object.getFullNameEng(), + object.getSecuritySymbol(), + object.getIsin(), + object.getWorkflowStatus(), + object.getUuid() }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java index ee0891db9..9a0af9f22 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/CompanyMapStore.java @@ -35,10 +35,9 @@ public class CompanyMapStore extends BusinessObjectMapStore { public String[] getFieldsForCompanyInfo() { return new String[]{ - "id", "company_id", "corporation_sole_type", "country_code", "description", - "professional_sign", "legal_kind", "organization_type", "residence", - "short_name_eng", "full_name_eng" -// , "short_name", "full_name", "trading_code","clearing_code", "registration_code" + "id", "company_id", "corporation_sole_type", "country_code", "description", + "professional_sign", "legal_kind", "organization_type", "residence", + "short_name_eng", "full_name_eng" }; } @@ -83,7 +82,7 @@ public class CompanyMapStore extends BusinessObjectMapStore { }; batchArgs.add(args); if (company.getProfile() != null) { - company.getProfile().setId(company.getId());//todo для точного соответствия id = company.id + company.getProfile().setId(company.getId()); company.getProfile().setCompanyId(company.getId()); List companyInfoArgs = new ArrayList<>(); companyInfoArgs.addAll(companyInfoToSQLArgs(company.getProfile())); @@ -100,63 +99,46 @@ public class CompanyMapStore extends BusinessObjectMapStore { if (id == null) return null; List results = jdbcTemplate.query( - "SELECT * FROM COMPANY_INFO WHERE id = ?", new Object[]{id}, // id=comapny_id - (rs, rowNum) -> { - CompanyInfo companyInfo = new CompanyInfo(); - companyInfo.setId(rs.getObject("Id", Long.class)); - companyInfo.setCompanyId(rs.getObject("COMPANY_ID", Long.class)); - companyInfo.setCorporationSoleType(rs.getString("CORPORATION_SOLE_TYPE")); - companyInfo.setCountryCode(rs.getString("COUNTRY_CODE")); - companyInfo.setDescription(rs.getString("DESCRIPTION")); - companyInfo.setProfessionalSign(rs.getString("PROFESSIONAL_SIGN")); - companyInfo.setLegalKind(rs.getString("LEGAL_KIND")); - companyInfo.setOrganizationType(rs.getString("ORGANIZATION_TYPE")); - companyInfo.setResidence(rs.getString("RESIDENCE")); - companyInfo.setShortNameEng(rs.getString("SHORT_NAME_ENG")); - companyInfo.setFullNameEng(rs.getString("FULL_NAME_ENG")); -// companyInfo.setShortName(rs.getString("SHORT_NAME")); -// companyInfo.setFullName(rs.getString("FULL_NAME")); -// companyInfo.setTradingCode(rs.getString("TRADING_CODE")); -// companyInfo.setClearingCode(rs.getString("CLEARING_CODE")); -// companyInfo.setRegistrationCode(rs.getString("REGISTRATION_CODE")); - return companyInfo; - } + "SELECT * FROM COMPANY_INFO WHERE id = ?", new Object[]{id}, + (rs, rowNum) -> { + CompanyInfo companyInfo = new CompanyInfo(); + companyInfo.setId(rs.getObject("Id", Long.class)); + companyInfo.setCompanyId(rs.getObject("COMPANY_ID", Long.class)); + companyInfo.setCorporationSoleType(rs.getString("CORPORATION_SOLE_TYPE")); + companyInfo.setCountryCode(rs.getString("COUNTRY_CODE")); + companyInfo.setDescription(rs.getString("DESCRIPTION")); + companyInfo.setProfessionalSign(rs.getString("PROFESSIONAL_SIGN")); + companyInfo.setLegalKind(rs.getString("LEGAL_KIND")); + companyInfo.setOrganizationType(rs.getString("ORGANIZATION_TYPE")); + companyInfo.setResidence(rs.getString("RESIDENCE")); + companyInfo.setShortNameEng(rs.getString("SHORT_NAME_ENG")); + companyInfo.setFullNameEng(rs.getString("FULL_NAME_ENG")); + return companyInfo; + } ); CompanyInfo onceObject = DataAccessUtils.singleResult(results); if (onceObject == null) { log.warn("No row in table COMPANY_INFO where id={}. Create empty ", id); onceObject = new CompanyInfo(); - onceObject.setId(id); // чтобы не потерять id + onceObject.setId(id); onceObject.setCompanyId(id); } return onceObject; } - /** - * Перечисление значений полей CompanyInfo. - * См. insertCompanyInfoStatement - * - * @param companyInfo должен быть заполнен id, company_id = company.id - * @return - */ protected List companyInfoToSQLArgs(@NonNull CompanyInfo companyInfo) { List companyInfoArgs = new ArrayList<>(Arrays.asList( - companyInfo.getId(), - companyInfo.getCompanyId(), - companyInfo.getCorporationSoleType(), - companyInfo.getCountryCode(), - companyInfo.getDescription(), - companyInfo.getProfessionalSign(), - companyInfo.getLegalKind(), - companyInfo.getOrganizationType(), - companyInfo.getResidence(), - companyInfo.getShortNameEng(), - companyInfo.getFullNameEng() -// companyInfo.getShortName(), -// companyInfo.getFullName(), -// companyInfo.getTradingCode(), -// companyInfo.getClearingCode(), -// companyInfo.getRegistrationCode() + companyInfo.getId(), + companyInfo.getCompanyId(), + companyInfo.getCorporationSoleType(), + companyInfo.getCountryCode(), + companyInfo.getDescription(), + companyInfo.getProfessionalSign(), + companyInfo.getLegalKind(), + companyInfo.getOrganizationType(), + companyInfo.getResidence(), + companyInfo.getShortNameEng(), + companyInfo.getFullNameEng() )); return companyInfoArgs; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java index b03eca856..0a132514d 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/EquitySecurityMapStore.java @@ -33,7 +33,7 @@ public class EquitySecurityMapStore extends ASecurityMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "SECURITY_ID", "SHARE_TYPE"//, "LOT_SIZE" + "ID", "SECURITY_ID", "SHARE_TYPE" }; } @@ -45,7 +45,6 @@ public class EquitySecurityMapStore extends ASecurityMapStore { object.setId(resultSet.getObject("ID", Long.class)); object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); object.setShareType(resultSet.getObject("SHARE_TYPE", String.class)); -// object.setLotSize(resultSet.getObject("LOT_SIZE", BigDecimal.class)); fillBySecurity(object, object.getSecurityId()); return object; diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/MoneyMarketSecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/MoneyMarketSecurityMapStore.java index aaaf918cd..285e47846 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/MoneyMarketSecurityMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/MoneyMarketSecurityMapStore.java @@ -44,18 +44,6 @@ public class MoneyMarketSecurityMapStore extends ASecurityMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "CONSUMER_ID", "SUPPLIER_ID", "SERVICE_STATUS", "SERVICE", "SERVICE_PRODUCT", "COMMENT" + "ID", "CREATED_AT", "UPDATED_AT", "CONSUMER_ID", "SUPPLIER_ID", "SERVICE_STATUS", "SERVICE", "SERVICE_PRODUCT", "COMMENT" }; } @@ -52,18 +52,17 @@ public class RelationMapStore extends TemplateMapStore { @Override public Object[] objectToField(Relation object) { Object[] args = new Object[]{ - object.getId(), - TimeUtil.toDateFromInstant(object.getCreated()), - TimeUtil.toDateFromInstant(object.getUpdated()), - object.getConsumerId(), - object.getSupplierId(), - object.getServiceStatus(), - object.getService(), - object.getServiceProduct(), - object.getComment() + object.getId(), + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + object.getConsumerId(), + object.getSupplierId(), + object.getServiceStatus(), + object.getService(), + object.getServiceProduct(), + object.getComment() }; return args; } } -// todo Сделать BusinessEventMapStore RelationUpdateMapStore \ No newline at end of file diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java index 7b876cd81..b46b8147d 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/businessobject/SecurityMapStore.java @@ -10,7 +10,6 @@ import ru.spcex.platform.utils.time.TimeUtil; import java.sql.ResultSet; import java.sql.SQLException; -// Abstract table: ASecurityHistoryMapStore @Component public class SecurityMapStore extends TemplateMapStore { @@ -31,7 +30,7 @@ public class SecurityMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "CREATED_AT", "UPDATED_AT", "INSTRUMENT_TYPE", "ISSUER_ID", "SHORT_NAME", "FULL_NAME", "SHORT_NAME_ENG", "FULL_NAME_ENG", "SECURITY_SYMBOL", "ISIN", "WORKFLOW_STATUS" + "ID", "CREATED_AT", "UPDATED_AT", "INSTRUMENT_TYPE", "ISSUER_ID", "SHORT_NAME", "FULL_NAME", "SHORT_NAME_ENG", "FULL_NAME_ENG", "SECURITY_SYMBOL", "ISIN", "WORKFLOW_STATUS" }; } @@ -56,18 +55,18 @@ public class SecurityMapStore extends TemplateMapStore { @Override public Object[] objectToField(Security object) { Object[] args = new Object[]{ - object.getId(), - TimeUtil.toDateFromInstant(object.getCreated()), - TimeUtil.toDateFromInstant(object.getUpdated()), - object.getInstrumentType(), - object.getIssuerId(), - object.getShortName(), - object.getFullName(), - object.getShortNameEng(), - object.getFullNameEng(), - object.getSecuritySymbol(), - object.getIsin(), - object.getWorkflowStatus(), + object.getId(), + TimeUtil.toDateFromInstant(object.getCreated()), + TimeUtil.toDateFromInstant(object.getUpdated()), + object.getInstrumentType(), + object.getIssuerId(), + object.getShortName(), + object.getFullName(), + object.getShortNameEng(), + object.getFullNameEng(), + object.getSecuritySymbol(), + object.getIsin(), + object.getWorkflowStatus(), }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java index a9570df58..ea2ac8b92 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/HazelcastConfiguration.java @@ -34,27 +34,26 @@ public class HazelcastConfiguration { Config config = new Config(); config.setInstanceName(hzSettings.getInstanceName()); config.setGroupConfig(new GroupConfig() - .setName(hzSettings.getLogin()) - .setPassword(hzSettings.getPassword()) + .setName(hzSettings.getLogin()) + .setPassword(hzSettings.getPassword()) ); config.setManagementCenterConfig(new ManagementCenterConfig().setEnabled(false)); config.setProperty("hazelcast.shutdownhook.enabled", "true"); config.setProperty("hazelcast.logging.type", "slf4j"); config.setProperty("hazelcast.operation.call.timeout.millis", "600000"); config.setNetworkConfig(new NetworkConfig() - .setPort(hzSettings.getListenPort()) - .setJoin(new JoinConfig() - .setMulticastConfig(new MulticastConfig() - .setEnabled(false)) - .setTcpIpConfig(new TcpIpConfig() - .setEnabled(true).setMembers(hzSettings.getClusterMembers()) - ) + .setPort(hzSettings.getListenPort()) + .setJoin(new JoinConfig() + .setMulticastConfig(new MulticastConfig() + .setEnabled(false)) + .setTcpIpConfig(new TcpIpConfig() + .setEnabled(true).setMembers(hzSettings.getClusterMembers()) ) + ) ); - config.addMapConfig(poolMapConfigs.map_Company()); //todo убедиться, что CompanyMapStore extends BusinessObjectMapStore теперь будет TemplateMapStore. + config.addMapConfig(poolMapConfigs.map_Company()); config.addMapConfig(poolMapConfigs.map_CompanyHistory()); - // Автоподключение мап List autoMapCfg = poolMapConfigs.autoconfiguratorOfMapstorages(); for (MapConfig cfg : autoMapCfg) { config.addMapConfig(cfg); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java index 69e87faf5..3d02065f4 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/config/PoolMapConfigs.java @@ -33,7 +33,6 @@ public class PoolMapConfigs implements InitializingBean { @Autowired private CompanyHistoryMapStore companyHistoryMapStore; - // Автоконфигурируемые мапсторы: @Autowired private List> listOfAutopluginStores; @@ -97,7 +96,6 @@ public class PoolMapConfigs implements InitializingBean { return makeDefaultMapConfig(IMDGDistributedNames.Map_CompanyHistory, companyHistoryMapStore); } - // @Qualifier("AutoconfiguredMapStore") public List autoconfiguratorOfMapstorages() { List out = new ArrayList<>(); HashSet existMapStores = new HashSet<>(); @@ -110,7 +108,7 @@ public class PoolMapConfigs implements InitializingBean { if (existMapStores.contains(mapStore.getMapName())) { throw new IllegalArgumentException("MapStore " + mapStore + " has wrong mapName=\"" + mapStore.getMapName() + "\" is duplicated"); } - existMapStores.add(mapStore.getMapName()); // IMDGDistributedNames + existMapStores.add(mapStore.getMapName()); MapConfig mapCfg = makeDefaultMapConfig(mapStore.getMapName(), mapStore); if (mapStore.getIndexes().length > 0) { if (log.isTraceEnabled()) { diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CurrencyPairDictionaryMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CurrencyPairDictionaryMapStore.java index b8cc48d33..a692db115 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CurrencyPairDictionaryMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/dictionary/CurrencyPairDictionaryMapStore.java @@ -38,7 +38,6 @@ public class CurrencyPairDictionaryMapStore extends DictionaryTMapStore { @Override public String[] getIndexingField() { - return new String[]{"companyId"};// список индексируемых полей + return new String[]{"companyId"}; } @Override diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PlannerAllTodayMapStore.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PlannerAllTodayMapStore.java index 58bc12287..ffa057dd8 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PlannerAllTodayMapStore.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/object/PlannerAllTodayMapStore.java @@ -9,10 +9,6 @@ import ru.spcex.platform.utils.time.TimeUtil; import java.sql.ResultSet; import java.sql.SQLException; -/** - * Не требуется сторить в базу и поднимать из нее значения - */ -//@Component public class PlannerAllTodayMapStore extends TemplateMapStore { public PlannerAllTodayMapStore(JdbcTemplate jdbcTemplate) { @@ -32,7 +28,7 @@ public class PlannerAllTodayMapStore extends TemplateMapStore { @Override public String[] getFields() { return new String[]{ - "ID", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "SECTION", "SESSION_TYPE", "TASK_STATUS", "COMPANY_ID", "SECURITY_ID", "PARENT", "PARENT_ID" + "ID", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "SECTION", "SESSION_TYPE", "TASK_STATUS", "COMPANY_ID", "SECURITY_ID", "PARENT", "PARENT_ID" }; } @@ -40,7 +36,7 @@ public class PlannerAllTodayMapStore extends TemplateMapStore { public PlannerAllToday objectReader(ResultSet resultSet) throws SQLException { PlannerAllToday object = new PlannerAllToday(); object.setTask(resultSet.getObject("TASK", String.class)); - object.setTaskTime(getLocalTimeFromSqlTime(resultSet,"TASK_TIME")); + object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME")); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setMarket(resultSet.getObject("MARKET", String.class)); object.setSection(resultSet.getObject("SECTION", String.class)); @@ -57,18 +53,18 @@ public class PlannerAllTodayMapStore extends TemplateMapStore { @Override public Object[] objectToField(PlannerAllToday object) { Object[] args = new Object[]{ - object.getId(), - object.getTask(), - TimeUtil.toDateFromLocalTime(object.getTaskTime()), - TimeUtil.toDateFromLocalDate(object.getClearingDate()), - object.getMarket(), - object.getSection(), - object.getSessionType(), - object.getTaskStatus(), - object.getCompanyId(), - object.getSecurityId(), - object.getParent(), - object.getParentId() + object.getId(), + object.getTask(), + TimeUtil.toDateFromLocalTime(object.getTaskTime()), + TimeUtil.toDateFromLocalDate(object.getClearingDate()), + object.getMarket(), + object.getSection(), + object.getSessionType(), + object.getTaskStatus(), + object.getCompanyId(), + object.getSecurityId(), + object.getParent(), + object.getParentId() }; return args; } diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java index b715b032e..c000cf4c9 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractHazelcastLifecycleSupport.java @@ -19,7 +19,6 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.*; -//todo почистить класс public abstract class AbstractHazelcastLifecycleSupport implements InitializingBean, DisposableBean { private final Logger log = LoggerFactory.getLogger(this.getClass()); private final HazelcastInstance hazelcastServerInstance; @@ -32,22 +31,12 @@ public abstract class AbstractHazelcastLifecycleSupport implements InitializingB this.plannerAllTodayMaker = plannerAllTodayMaker; } - /** - * Рабочая версия БД. Треьуется вручную сверять с DDL.sql и накручивать эту переменную. - */ public abstract String getCheckDbVersion(); -// private final HazelcastClientListener clientListener; -// private final ITaskAdministrator startupTasksAdministrator; - /** - * Обязательная сверка у этих классов SerialVersionUID во время подключения к Storage. - */ public abstract Class[] getSerialVersionUIDClasses(); @Override public void afterPropertiesSet() { -// HazelcastCommon.loadClassesVersionsByStorage(hazelcastServerInstance, getSerialVersionUIDClasses()); -// databaseVersionCheck(); long loadTime = System.currentTimeMillis(); @@ -71,9 +60,6 @@ public abstract class AbstractHazelcastLifecycleSupport implements InitializingB String tableName = ((SimpleObjectMapStore) mapStore).getTableName(); maxKey = jdbcTemplate.queryForObject("select max(id) from " + tableName, Long.class); } else if (mapStore instanceof DictionaryMapStore) { - // для Dictionary не используется общий id генератор -// } else if (mapStore instanceof FrontendUserSessionMapStore) { -// // не используется общий id генератор } else { throw new RuntimeException("unknown map store implementation " + mapStore); } @@ -84,7 +70,7 @@ public abstract class AbstractHazelcastLifecycleSupport implements InitializingB }); } long maxKey = 0L; - int threadCount = Runtime.getRuntime().availableProcessors();// todo config * Config.get().getRoot().getSettings().getInitHazelcastThreadMultiplier(); + int threadCount = Runtime.getRuntime().availableProcessors(); log.info("Initializing threads count = {}", threadCount); ExecutorService executor = Executors.newWorkStealingPool(threadCount); try { diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java index e447f052c..016296d9e 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/AbstractUpdateMapService.java @@ -15,9 +15,6 @@ import java.time.Instant; public abstract class AbstractUpdateMapService implements InitializingBean, EntryAddedListener, EntryUpdatedListener, EntryRemovedListener { - /** - * EVENT_TYPE_DICTIONARY - */ protected final String EVENT_CREATE = "CRET"; protected final String EVENT_UPDATE = "UPDT"; protected final String EVENT_DELETE = "DELT"; @@ -56,7 +53,7 @@ public abstract class AbstractUpdateMapService implements InitializingBean, protected void createBusinessEvent(BusinessEvent businessEvent, String eventType) { businessEvent.setId(hazelcastServerInstance.getIdGenerator(IMDGDistributedNames.MAP_SEQUENCE_NAME).newId()); businessEvent.setEventTime(Instant.now()); - if (eventType != null && eventType.length() > 4) { // never + if (eventType != null && eventType.length() > 4) { eventType = eventType.substring(0, 4); } businessEvent.setEventType(eventType); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/HazelcastLifecycleSupport.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/HazelcastLifecycleSupport.java index 9066391c7..ba2e91dc8 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/HazelcastLifecycleSupport.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/HazelcastLifecycleSupport.java @@ -11,9 +11,6 @@ import ru.clearing.platform.dictionary.ConstDictionarySerializable; @Service public class HazelcastLifecycleSupport extends AbstractHazelcastLifecycleSupport { - /** - * Рабочая версия БД. Требуется вручную сверять с DDL.sql и накручивать эту переменную. - */ public static final String CHECK_DB_VERSION = "3.11"; private final Logger log = LoggerFactory.getLogger(this.getClass()); diff --git a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java index 2566cf8f9..42b91a11f 100644 --- a/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java +++ b/clearing-parent/imdg/src/main/java/ru/spcex/clearing/imdg/services/UpdateMapService.java @@ -44,7 +44,7 @@ public class UpdateMapService extends AbstractUpdateMapService { hazelcastServerInstance.getMap(IMDGDistributedNames.Map_ClearingMemberCategory).addLocalEntryListener(this, Predicates.alwaysTrue(), true); hazelcastServerInstance.getMap(IMDGDistributedNames.Map_InformationAccount).addLocalEntryListener(this, Predicates.alwaysTrue(), true); hazelcastServerInstance.getMap(IMDGDistributedNames.Map_Relation).addLocalEntryListener(this, Predicates.alwaysTrue(), true); - hazelcastServerInstance.getMap(IMDGDistributedNames.Map_Security).addLocalEntryListener(this, Predicates.alwaysTrue(), true); // // Существуют наследники этой таблицы + hazelcastServerInstance.getMap(IMDGDistributedNames.Map_Security).addLocalEntryListener(this, Predicates.alwaysTrue(), true); hazelcastServerInstance.getMap(IMDGDistributedNames.Map_UserConnect).addLocalEntryListener(this, Predicates.alwaysTrue(), true); hazelcastServerInstance.getMap(IMDGDistributedNames.Map_User).addLocalEntryListener(this, Predicates.alwaysTrue(), true); hazelcastServerInstance.getMap(IMDGDistributedNames.Map_Currency).addLocalEntryListener(this, Predicates.alwaysTrue(), true); @@ -237,7 +237,7 @@ public class UpdateMapService extends AbstractUpdateMapService { hazelcastServerInstance.getMap(IMDGDistributedNames.Map_TradingClearingRegistryListHistory).put(tradingClearingRegistryListHistory.getId(), tradingClearingRegistryListHistory); - } else if (value instanceof Security) { // Существуют наследники этой таблицы, по этому в последнюю очередь делать эту проверку. + } else if (value instanceof Security) { SecurityHistory securityHistory = new SecurityHistory(); createBusinessEvent(securityHistory, eventType); securityHistory.setObject((Security) value); diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java index 697a6c687..fd7d26124 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/AllMapStoreTest.java @@ -49,10 +49,9 @@ import static ru.spcex.clearing.imdg.structure.RunnableMapNamesForTesting.checke import static ru.spcex.clearing.imdg.utils.DbDataUtils.generatingRandomString; @ContextConfiguration(classes = { - TestConfiguration.class, - DbTestConnectionConfig.class}) + TestConfiguration.class, + DbTestConnectionConfig.class}) @ExtendWith(SpringExtension.class) -//@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/imdg/src/main/resources") @TestPropertySource(locations = "/AllMapStoreTest.properties") public class AllMapStoreTest { private static final Long ID = 1000000L; private final Logger log = LoggerFactory.getLogger(this.getClass()); @@ -126,17 +125,14 @@ public class AllMapStoreTest { } } - // @Test public void checkAllMapStoreCreatedTest() throws SQLException { Assumptions.assumeTrue(false, "todo удалить если будет не нужна, пока не работает из-за не все mapStore готовы"); - //Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль List nameTables = new ArrayList<>(); Connection jdbcConnection = DriverManager.getConnection("jdbc:postgresql://10.200.200.133:5432/postgres", "clearing", "Aa111111"); DatabaseMetaData md = jdbcConnection.getMetaData(); ResultSet rs = md.getTables(null, "clearing_tester", "%", new String[]{"TABLE"}); while (rs.next()) { String tableName = rs.getString("TABLE_NAME"); - //сущности для company_info и company_info_history включены соответственно в company и company_history, security используется с money_market_security для хранения MoneyMarketSecurity if (tableName.equalsIgnoreCase("company_info") || tableName.equalsIgnoreCase("company_info_history") || tableName.equalsIgnoreCase("security")) { continue; } @@ -201,7 +197,6 @@ public class AllMapStoreTest { } if (actual == null) { log.error("No actual object for check {}", objectForCheck.getMapName()); -// continue; or throw new IllegalArgumentException("Empty actual of "+objectForCheck.getMapName()); } objectForCheck.getMATCHER().assertMatch(actual, objectForCheck.getPredictableObj()); } @@ -214,8 +209,6 @@ public class AllMapStoreTest { } } - //todo удалить если будет не нужна, пока не работает из-за "deleteIsSupported() return false" в SimpleObjectMapStore. -// @Test public void checkDeletingForAllMapStoreTest() { Assumptions.assumeTrue(false, "todo удалить если будет не нужна, пока не работает из-за \"deleteIsSupported() return false\" в SimpleObjectMapStore."); saveBusinessObjectAndBusinessEventToMaps(); diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/DbTestConnectionConfig.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/DbTestConnectionConfig.java index 0aa13adc3..76f4a8e74 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/DbTestConnectionConfig.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/config/DbTestConnectionConfig.java @@ -52,7 +52,6 @@ public class DbTestConnectionConfig { cpds.setNumHelperThreads(numHelperThreads); cpds.setCheckoutTimeout(timeoutSec * 1000); logTimeoutPart = String.format(" (timeout=%ds)", timeoutSec); -// DatabasePopulatorUtils.execute(createDatabasePopulator(), cpds); // пересоздание таблиц по DDL result = cpds; String OPERATION_DATABASE_CONNECTION_CHECK = String.format("Database [%s] connection check", dbPath); @@ -63,7 +62,7 @@ public class DbTestConnectionConfig { return result; } catch (Throwable e) { String msg = String.format("%s%s: failed: %s -> %s", - OPERATION_DATABASE_CONNECTION_CHECK, logTimeoutPart, e.getClass().getSimpleName(), e.getMessage()); + OPERATION_DATABASE_CONNECTION_CHECK, logTimeoutPart, e.getClass().getSimpleName(), e.getMessage()); log.error(msg); throw new ModuleInitializeException(msg, e); } diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/CheckerBusinessMapStore.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/CheckerBusinessMapStore.java index 2de5f5fbe..e5fa6a098 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/CheckerBusinessMapStore.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/CheckerBusinessMapStore.java @@ -69,7 +69,7 @@ public class CheckerBusinessMapStore { try { theClass = theClass.getSuperclass(); method = theClass.getDeclaredMethod(settingOperation.getMethodName(), settingOperation.getParameterTypes()); - } catch (NoSuchMethodException exception2) { // Имеется некоторое наследование для удобства обработки данных. + } catch (NoSuchMethodException exception2) { theClass = theClass.getSuperclass(); log.debug("settingOperations for Superclass 2 " + theClass.getName()); method = theClass.getDeclaredMethod(settingOperation.getMethodName(), settingOperation.getParameterTypes()); @@ -86,7 +86,6 @@ public class CheckerBusinessMapStore { private final Class[] parameterTypes; private final Object[] params; - //сеттер для полей значения которых обрезаются при вставке в БД public SettingOperation(String methodName, Class[] parameterTypes, Object[] params) { this.methodName = methodName; this.parameterTypes = parameterTypes; diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java index ee3aaf98b..1d6663bdd 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/structure/RunnableMapNamesForTesting.java @@ -52,161 +52,138 @@ public class RunnableMapNamesForTesting { private static void init() { checkerBusinessMapStores = new LinkedList<>(); checkerDictionaryMapStores = new LinkedList<>(); - - //business event -// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountBalanceHistory, AccountBalanceHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_AccountHistory, AccountHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_BankAccountHistory, BankAccountHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CompanyHistory, CompanyHistory.class, - usingIgnoringFieldsComparator("object.profile.clearingCode", "object.profile.fullName", "object.profile.registrationCode", "object.profile.shortName", "object.profile.tradingCode"))); + usingIgnoringFieldsComparator("object.profile.clearingCode", "object.profile.fullName", "object.profile.registrationCode", "object.profile.shortName", "object.profile.tradingCode"))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExecutionDepositHistory, ExecutionDepositHistory.class, - usingIgnoringFieldsComparator( - "object.firstLegAmount", - "object.interestAmount", - "object.lots", - "object.quantity", - "object.secondLegAmount") - /*new SettingOperation("object.firstLegAmount", new Object[]{new BigDecimal("850.640000000000000000")}), - new SettingOperation("object.interestAmount", new Object[]{new BigDecimal("851.640000000000000000")}), - new SettingOperation("object.lots", new Object[]{new BigDecimal("852.640000000000000000")}), - new SettingOperation("object.quantity", new Object[]{new BigDecimal("853.640000000000000000")}), - new SettingOperation("object.secondLegAmount", new Object[]{new BigDecimal("854.640000000000000000")})*/ + usingIgnoringFieldsComparator( + "object.firstLegAmount", + "object.interestAmount", + "object.lots", + "object.quantity", + "object.secondLegAmount") )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExecutionFondHistory, ExecutionFondHistory.class, - usingIgnoringFieldsComparator( - "object.interestAmount", - "object.lots", - "object.quantity", - "object.settlementAmount") - /*new SettingOperation("object.interestAmount", new Object[]{new BigDecimal("850.640000000000000000")}), - new SettingOperation("object.lots", new Object[]{new BigDecimal("851.640000000000000000")}), - new SettingOperation("object.quantity", new Object[]{new BigDecimal("852.640000000000000000")}), - new SettingOperation("object.settlementAmount", new Object[]{new BigDecimal("853.640000000000000000")})*/)); + usingIgnoringFieldsComparator( + "object.interestAmount", + "object.lots", + "object.quantity", + "object.settlementAmount"))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_InformationAccountHistory, InformationAccountHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_RelationHistory, RelationHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SessionHistory, SessionHistory.class)); -// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SecurityHistory, SecurityHistory.class)); // parent table checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_UserConnectHistory, UserConnectHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_UserHistory, UserHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CurrencyHistory, CurrencyHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ListingHistory, ListingHistory.class, - usingIgnoringFieldsComparator( - "object.lotSize", - "object.minStep","object.precision") - /*new SettingOperation("object.lotSize", new Object[]{new BigDecimal("850.640000000000000000")}),*/)); + usingIgnoringFieldsComparator( + "object.lotSize", + "object.minStep", "object.precision"))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_MarketHistory, MarketHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_NotificationHistory, NotificationHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CompanySymbolsHistory, CompanySymbolsHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ProfileDocumentHistory, ProfileDocumentHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ClearingMemberCategoryHistory, ClearingMemberCategoryHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurityHistory, MoneyMarketSecurityHistory.class, - usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore - "object.created", "object.updated", - "object.fullName", "object.fullNameEng", - "object.instrumentType", - "object.isin", "object.issuerId", - "object.lotSize", - "object.securitySymbol", - "object.shortName", "object.shortNameEng", - "object.uuid", "object.workflowStatus" - ))); + usingIgnoringFieldsComparator( + "object.created", "object.updated", + "object.fullName", "object.fullNameEng", + "object.instrumentType", + "object.isin", "object.issuerId", + "object.lotSize", + "object.securitySymbol", + "object.shortName", "object.shortNameEng", + "object.uuid", "object.workflowStatus" + ))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_EquitySecurityHistory, EquitySecurityHistory.class, - usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore - "object.created", "object.updated", - "object.fullName", "object.fullNameEng", - "object.instrumentType", - "object.isin", "object.issuerId", - "object.lotSize", - "object.securitySymbol", - "object.shortName", "object.shortNameEng", - "object.uuid", "object.workflowStatus" - ))); + usingIgnoringFieldsComparator( + "object.created", "object.updated", + "object.fullName", "object.fullNameEng", + "object.instrumentType", + "object.isin", "object.issuerId", + "object.lotSize", + "object.securitySymbol", + "object.shortName", "object.shortNameEng", + "object.uuid", "object.workflowStatus" + ))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_FixedIncomeSecurityHistory, FixedIncomeSecurityHistory.class, - usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore - "object.created", "object.updated", - "object.fullName", "object.fullNameEng", - "object.instrumentType", - "object.isin", "object.issuerId", - "object.lotSize", - "object.securitySymbol", - "object.shortName", "object.shortNameEng", - "object.uuid", "object.workflowStatus" - ))); + usingIgnoringFieldsComparator( + "object.created", "object.updated", + "object.fullName", "object.fullNameEng", + "object.instrumentType", + "object.isin", "object.issuerId", + "object.lotSize", + "object.securitySymbol", + "object.shortName", "object.shortNameEng", + "object.uuid", "object.workflowStatus" + ))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_FixedIncomeCashFlowHistory, FixedIncomeCashFlowHistory.class, - usingIgnoringFieldsComparator("object.accruedCoupon") - /* new SettingOperation("getObject.setAccruedCoupon", new Object[]{new BigDecimal("870.680000000000000000")})*/)); + usingIgnoringFieldsComparator("object.accruedCoupon"))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CouponPeriodHistory, CouponPeriodHistory.class, - usingIgnoringFieldsComparator("object.couponRate") - /* new SettingOperation("getObject.setCouponRate", new Object[]{new BigDecimal("870.680000000000000000")})*/)); + usingIgnoringFieldsComparator("object.couponRate"))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CurrencyPairSecurityHistory, CurrencyPairSecurityHistory.class -// ,new SettingOperation("object.baseUnitSize", new Object[]{new BigDecimal("53.820000000000000000")}) - ,usingIgnoringFieldsComparator( - "object.baseUnitSize", - "object.fullName", "object.fullNameEng", - "object.instrumentType", - "object.isin", "object.issuerId", - "object.securitySymbol", - "object.shortName", "object.shortNameEng", - "object.uuid", "object.workflowStatus" - ) + , usingIgnoringFieldsComparator( + "object.baseUnitSize", + "object.fullName", "object.fullNameEng", + "object.instrumentType", + "object.isin", "object.issuerId", + "object.securitySymbol", + "object.shortName", "object.shortNameEng", + "object.uuid", "object.workflowStatus" + ) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExecutionCurrencyHistory, ExecutionCurrencyHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SettlementHousePropertiesHistory, SettlementHousePropertiesHistory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_TradingClearingRegistryListHistory, TradingClearingRegistryListHistory.class)); - - //business object -// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_AccountBalance, AccountBalance.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Account, Account.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Company, Company.class, - usingIgnoringFieldsComparator("profile.clearingCode", "profile.fullName", "profile.registrationCode", "profile.shortName", "profile.tradingCode"))); + usingIgnoringFieldsComparator("profile.clearingCode", "profile.fullName", "profile.registrationCode", "profile.shortName", "profile.tradingCode"))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ErrorText, ErrorText.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class, - new SettingOperation("setInterestAmount", new Object[]{new BigDecimal("850.64")}), - new SettingOperation("setLots", new Object[]{new BigDecimal("851.64")}), - new SettingOperation("setQuantity", new Object[]{new BigDecimal("852.64")}), - new SettingOperation("setSettlementAmount", new Object[]{new BigDecimal("853.64")}))); + new SettingOperation("setInterestAmount", new Object[]{new BigDecimal("850.64")}), + new SettingOperation("setLots", new Object[]{new BigDecimal("851.64")}), + new SettingOperation("setQuantity", new Object[]{new BigDecimal("852.64")}), + new SettingOperation("setSettlementAmount", new Object[]{new BigDecimal("853.64")}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Launcher, Launcher.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Listing, Listing.class, - new SettingOperation("setLotSize", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("21.11")}), - new SettingOperation("setMinStep", new Object[]{new BigDecimal("13.32")}), - new SettingOperation("setPrecision", new Object[]{new BigDecimal("53.12")}) + new SettingOperation("setLotSize", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("21.11")}), + new SettingOperation("setMinStep", new Object[]{new BigDecimal("13.32")}), + new SettingOperation("setPrecision", new Object[]{new BigDecimal("53.12")}) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ManagementJournal, ManagementJournal.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Market, Market.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Planner, Planner.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class)); -// businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Security, Security.class)); // класс наследуется checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Statement, Statement.class, - new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); + new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("23.22")}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_User, User.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_EquitySecurity, EquitySecurity.class - , usingIgnoringFieldsComparator( // todo поправить тест для ASecurityMapStore - проблема в заполнении securityId - "created", "updated", - "fullName", "fullNameEng", - "instrumentType", - "isin", "issuerId", - "lotSize", - "securitySymbol", - "shortName", "shortNameEng", - "uuid", "workflowStatus" - ) + , usingIgnoringFieldsComparator( + "created", "updated", + "fullName", "fullNameEng", + "instrumentType", + "isin", "issuerId", + "lotSize", + "securitySymbol", + "shortName", "shortNameEng", + "uuid", "workflowStatus" + ) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_FixedIncomeSecurity, FixedIncomeSecurity.class, - usingIgnoringFieldsComparator( // todo поправить тест для ASecurityMapStore - "created", "updated", - "fullName", "fullNameEng", - "instrumentType", - "isin", "issuerId", - "lotSize", - "securitySymbol", - "shortName", "shortNameEng", - "uuid", "workflowStatus" - ))); - - //dictionary + usingIgnoringFieldsComparator( + "created", "updated", + "fullName", "fullNameEng", + "instrumentType", + "isin", "issuerId", + "lotSize", + "securitySymbol", + "shortName", "shortNameEng", + "uuid", "workflowStatus" + ))); checkerDictionaryMapStores.add(new CheckerDictionaryMapStore<>(IMDGDistributedNames.Map_AccountTypeDictionary, AccountTypeDictionary.class)); checkerDictionaryMapStores.add(new CheckerDictionaryMapStore<>(IMDGDistributedNames.Map_AllowedDictionary, AllowedDictionary.class)); checkerDictionaryMapStores.add(new CheckerDictionaryMapStore<>(IMDGDistributedNames.Map_ClearingCategoryDictionary, ClearingCategoryDictionary.class)); @@ -272,101 +249,98 @@ public class RunnableMapNamesForTesting { checkerDictionaryMapStores.add(new CheckerDictionaryMapStore<>(IMDGDistributedNames.Map_BalanceDimensionDictionary, BalanceDimensionDictionary.class)); checkerDictionaryMapStores.add(new CheckerDictionaryMapStore<>(IMDGDistributedNames.Map_DepoAccountTypeDictionary, DepoAccountTypeDictionary.class)); checkerDictionaryMapStores.add(new CheckerDictionaryMapStore<>(IMDGDistributedNames.Map_ClearingAccountTypeDictionary, ClearingAccountTypeDictionary.class)); - - //object checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_BankAccount, BankAccount.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Contact, Contact.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class, - usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore - "created", "updated", - "fullName", "fullNameEng", - "instrumentType", - "isin", "issuerId", - "lotSize", - "securitySymbol", - "shortName", "shortNameEng", - "uuid", "workflowStatus", + usingIgnoringFieldsComparator( + "created", "updated", + "fullName", "fullNameEng", + "instrumentType", + "isin", "issuerId", + "lotSize", + "securitySymbol", + "shortName", "shortNameEng", + "uuid", "workflowStatus", - "baseUnitSize" // только по точности не совпадает поле, но читается 23.52 - ))); + "baseUnitSize" + ))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ContractRegister, ContractRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_AdmittedLiabilitiesRegister, AdmittedLiabilitiesRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CoveredLiabilitiesRegister, CoveredLiabilitiesRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_DepoBalanceRegister, DepoBalanceRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setQuantity", new Object[]{BigDecimal.valueOf(73.32)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setQuantity", new Object[]{BigDecimal.valueOf(73.32)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_DepoPaymentInstructionRegister, DepoPaymentInstructionRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setQuantity", new Object[]{BigDecimal.valueOf(73.32)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setQuantity", new Object[]{BigDecimal.valueOf(73.32)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExcludeLiabilitiesRegister, ExcludeLiabilitiesRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExecutionRegister, ExecutionRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setQuantity", new Object[]{BigDecimal.valueOf(73.32)}), - new SettingOperation("setAmount", new Object[]{BigDecimal.valueOf(45.32)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setQuantity", new Object[]{BigDecimal.valueOf(73.32)}), + new SettingOperation("setAmount", new Object[]{BigDecimal.valueOf(45.32)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_LiabilitiesRegister, LiabilitiesRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_MoneyBalanceRegister, MoneyBalanceRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_MoneyPaymentInstructionRegister, MoneyPaymentInstructionRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_GatewayResult, GatewayResult.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Currency, Currency.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setFirstLegAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setSecondLegAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setInterestAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setLots", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setQuantity", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setFirstLegAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setSecondLegAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setInterestAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setLots", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setQuantity", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_InDocumentJournal, InDocumentJournal.class, - new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}))); + new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_InformationAccount, InformationAccount.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class, - usingIgnoringFieldsComparator( // todo поправить тест для ASecurityHistoryMapStore - "created", "updated", - "fullName", "fullNameEng", - "instrumentType", - "isin", "issuerId", - "lotSize", - "securitySymbol", - "shortName", "shortNameEng", - "uuid", "workflowStatus", + usingIgnoringFieldsComparator( + "created", "updated", + "fullName", "fullNameEng", + "instrumentType", + "isin", "issuerId", + "lotSize", + "securitySymbol", + "shortName", "shortNameEng", + "uuid", "workflowStatus", - "nominalValue" // только по точности не совпадает поле, но читается - )//, - //new SettingOperation("setNominalValue", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("25.25")}) + "nominalValue" + ) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_MarketDataLiquidation, MarketDataLiquidation.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Notification, Notification.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.class, - new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("28.28")}))); + new SettingOperation("setAmount", new Class[]{BigDecimal.class}, new Object[]{new BigDecimal("28.28")}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Operation, Operation.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_PairSdf, PairSdf.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_ReportRegister, ReportRegister.class, - new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), - new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); + new SettingOperation("setCreated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}), + new SettingOperation("setUpdated", new Class[]{Instant.class}, new Object[]{generatingRandomInstant(true)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf01, SDf01.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf02, SDf02.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf03, SDf03.class)); @@ -386,44 +360,44 @@ public class RunnableMapNamesForTesting { checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SettlementHouseProperties, SettlementHouseProperties.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_Session, Session.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_STrades, STrades.class, - new SettingOperation("setQty", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setValue", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setExchangeCommission", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}), - new SettingOperation("setQty", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}), - new SettingOperation("setValue", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}) + new SettingOperation("setQty", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setValue", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setExchangeCommission", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}), + new SettingOperation("setQty", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}), + new SettingOperation("setValue", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(18)}) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_TradingClearingRegistryList, TradingClearingRegistryList.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_UserSettings, UserSettings.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_VerificationResult, VerificationResult.class, - new SettingOperation("setDiffSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setInSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setOutExtSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), - new SettingOperation("setOutIntSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}))); + new SettingOperation("setDiffSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setInSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setOutExtSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}), + new SettingOperation("setOutIntSum", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}))); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class, - new SettingOperation("setAccruedCoupon", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}) + new SettingOperation("setAccruedCoupon", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_CouponPeriod, CouponPeriod.class, - new SettingOperation("setCouponRate", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}) + new SettingOperation("setCouponRate", new Class[]{BigDecimal.class}, new Object[]{generatingRandomBigDecimal(2)}) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf51, SDf51.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf52, SDf52.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf53, SDf53.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf54, SDf54.class, - new SettingOperation("setSeg_type", new Object[]{"S"}), - new SettingOperation("setDoc_result", new Object[]{"DR"}), - new SettingOperation("setOp_type", new Object[]{"OT"}), - new SettingOperation("setOp_order", new Object[]{"A"}) + new SettingOperation("setSeg_type", new Object[]{"S"}), + new SettingOperation("setDoc_result", new Object[]{"DR"}), + new SettingOperation("setOp_type", new Object[]{"OT"}), + new SettingOperation("setOp_order", new Object[]{"A"}) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf55, SDf55.class, - new SettingOperation("setSeg_type", new Object[]{"S"}), - new SettingOperation("setDoc_result", new Object[]{"DR"}), - new SettingOperation("setOp_type", new Object[]{"OT"}), - new SettingOperation("setOp_order", new Object[]{"A"}) + new SettingOperation("setSeg_type", new Object[]{"S"}), + new SettingOperation("setDoc_result", new Object[]{"DR"}), + new SettingOperation("setOp_type", new Object[]{"OT"}), + new SettingOperation("setOp_order", new Object[]{"A"}) )); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf56, SDf56.class)); checkerBusinessMapStores.add(new CheckerBusinessMapStore<>(IMDGDistributedNames.Map_SDf57, SDf57.class, - new SettingOperation("setOp_type", new Object[]{"OT"}) + new SettingOperation("setOp_type", new Object[]{"OT"}) )); } diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/AbstractHistoryRowMapper.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/AbstractHistoryRowMapper.java index 00f746706..29b01cc25 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/AbstractHistoryRowMapper.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/AbstractHistoryRowMapper.java @@ -58,15 +58,13 @@ public abstract class AbstractHistoryRowMapper implem protected String snakeCaseToCamelCase(String str) { StringBuilder builder = new StringBuilder(str); for (int i = 0; i < builder.length(); i++) { - - // Check char is underscore if (builder.charAt(i) == '_') { builder.deleteCharAt(i); builder.replace( - i, i + 1, - String.valueOf( - Character.toUpperCase( - builder.charAt(i)))); + i, i + 1, + String.valueOf( + Character.toUpperCase( + builder.charAt(i)))); } } return builder.toString(); diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/BusinessEventRowMapper.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/BusinessEventRowMapper.java index 0b04f8be5..25b41f218 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/BusinessEventRowMapper.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/BusinessEventRowMapper.java @@ -54,7 +54,6 @@ public class BusinessEventRowMapper extends AbstractHis setValueFildForObjectIfFildExists(historyObject, historyObject.getClass(), fildName, value); setValueFildForObjectIfFildExists(objectFild, objectFild.getClass(), fildName, value); } catch (TypeMismatchException | NotWritablePropertyException e) { - // Ignore } catch (ClassNotFoundException e) { throw new RuntimeException(e); } diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/DbDataUtils.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/DbDataUtils.java index f02c5a3c9..0ea26dca8 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/DbDataUtils.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/DbDataUtils.java @@ -18,36 +18,23 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -/** - * Утилитарный класс для работы с embedded базой. - * Так же используется для заполнения значений классов для подготовки вставки в базу - */ public final class DbDataUtils { private static final Logger log = LoggerFactory.getLogger(DbDataUtils.class); - /** - * Паттерн который проверяет что исполняемый скрипт пересоздает таблицу (recreate table * (*)) - */ private final static Pattern PATTERN_CREATE_TABLE = Pattern.compile( - "(?m)(?i)^\\s*?(?:re)*(create\\s*?table\\s*?[^\\s$]+?\\s*?\\([\\S\\s]+?(?:\\);|^\\)\\s*?$))"); + "(?m)(?i)^\\s*?(?:re)*(create\\s*?table\\s*?[^\\s$]+?\\s*?\\([\\S\\s]+?(?:\\);|^\\)\\s*?$))"); private final static Pattern PATTERN_ALTER_TABLE = Pattern.compile( - "(?m)(?i)^\\s*?(alter\\s*?table\\s*?[^\\s$]+?\\s*?add\\s*?constraint\\s*?[^\\s$]+?\\s*?primary\\s*?key\\s*?\\([\\S\\s]+?(?:\\);|^\\)\\s*?$))"); + "(?m)(?i)^\\s*?(alter\\s*?table\\s*?[^\\s$]+?\\s*?add\\s*?constraint\\s*?[^\\s$]+?\\s*?primary\\s*?key\\s*?\\([\\S\\s]+?(?:\\);|^\\)\\s*?$))"); private final static Pattern PATTERN_UPDATE_OR_INSERT_TABLE = Pattern.compile( - "(?i)update\\s+\\w+\\s+set\\s+\\w+|update\\s+or\\s+insert\\s+into\\s+\\w+.*?values|insert\\s+into\\s+\\w+.*?values"); + "(?i)update\\s+\\w+\\s+set\\s+\\w+|update\\s+or\\s+insert\\s+into\\s+\\w+.*?values|insert\\s+into\\s+\\w+.*?values"); private final static Pattern PATTERN_UPDATE_OR_INSERT_VERSIONDB = Pattern.compile( - "(?m)(?i)^\\s*?(update or insert into VERSIONEDID\\s*?[\\w\\s\\(\\,)]+\\s*values\\s*?[\\w\\s\\.'\\(\\,)]+matching\\s*?[\\w\\s,\\(\\)]+\\s*;)"); + "(?m)(?i)^\\s*?(update or insert into VERSIONEDID\\s*?[\\w\\s\\(\\,)]+\\s*values\\s*?[\\w\\s\\.'\\(\\,)]+matching\\s*?[\\w\\s,\\(\\)]+\\s*;)"); private final static Pattern PATTERN_CHANGE_CREATE_TO_RECREATE = Pattern.compile( - "(?i)^\\s*?create"); + "(?i)^\\s*?create"); private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("ddMMyyyy"); - /** - * Создавать объект этого типа нельзя - */ private DbDataUtils() { } - /** - * Создает пустую базу по DDL скрипту (только таблицы), так же проверяет скрипты DDL на валидность. - */ public static void executeAllDDL(List DDLs, JdbcTemplate jdbcTemplate) { Logger log = LoggerFactory.getLogger(DbDataUtils.class); log.info("Создание всех таблиц по DDL.sql"); @@ -61,26 +48,16 @@ public final class DbDataUtils { public static int executeOneDDL(String ddl, JdbcTemplate jdbcTemplate) { Logger log = LoggerFactory.getLogger(DbDataUtils.class); Matcher m = PATTERN_CREATE_TABLE.matcher(ddl); -// Matcher alterMatcher = PATTERN_ALTER_TABLE.matcher(ddl); List sqls = new ArrayList<>(); -// List alterSqls = new ArrayList<>(); while (m.find()) { String oneDDL = m.group(1); Matcher mr = PATTERN_CHANGE_CREATE_TO_RECREATE.matcher(oneDDL); oneDDL = mr.replaceAll("RECREATE"); sqls.add(oneDDL); } - -// while (alterMatcher.find()) { -// String oneDDL = alterMatcher.group(1); -// alterSqls.add(oneDDL); -// } log.info("Exec batch"); int[] result = jdbcTemplate.batchUpdate(sqls.toArray(new String[0])); -// int alterResult[] = jdbcTemplate.batchUpdate(alterSqls.toArray(new String[0])); log.info("Batch sql done"); - - // Для проставления версии БД int insertCount = 0; Matcher versionM = PATTERN_UPDATE_OR_INSERT_VERSIONDB.matcher(ddl); while (versionM.find()) { @@ -163,20 +140,14 @@ public final class DbDataUtils { field.setAccessible(true); Object value = field.get(object); values.put(field, value); - if (deepScan && isBusinessObject(value)) { // пройти внутрь наших классов - getObjectsFieldValues(value, values, deepScan); // go to deeper + if (deepScan && isBusinessObject(value)) { + getObjectsFieldValues(value, values, deepScan); } } } } } - /** - * Это наш класс и не примитив - * - * @param value объект, возможно clearing-объект. - * @return нужно ли применять deepScan - */ private static boolean isBusinessObject(Object value) { String classesClassPathPrefix = "ru.clearing.classes.objects"; return value != null && value.getClass().getName().startsWith(classesClassPathPrefix); @@ -206,14 +177,6 @@ public final class DbDataUtils { field.set(object, UUID.randomUUID()); } else if (typeField.getName().equals(Instant.class.getName())) { field.set(object, generatingRandomInstant(false)); -// } else if (typeField.getSimpleName().equals(CompanyInfo.class.getSimpleName())) { -// CompanyInfo companyInfo = new CompanyInfo(); -// fillObjectDefaultValues(companyInfo, CompanyInfo.class); -// field.set(object, companyInfo); -// } else if (typeField.getSuperclass().getName().equals(SpcexObjectBase.class.getName())) { -// Object objectField = typeField.getDeclaredConstructor().newInstance(); -// DbDataUtils.fillObjectDefaultValues(objectField, objectField.getClass()); -// field.set(object, objectField); } else { Object objectField = typeField.getDeclaredConstructor().newInstance(); fillObjectDefaultValues(objectField, objectField.getClass()); @@ -227,14 +190,14 @@ public final class DbDataUtils { } public static String generatingRandomString(int targetStringLength) { - int leftLimit = 97; // letter 'a' - int rightLimit = 122; // letter 'z' + int leftLimit = 97; + int rightLimit = 122; Random random = new Random(); return random.ints(leftLimit, rightLimit + 1) - .limit(targetStringLength) - .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) - .toString(); + .limit(targetStringLength) + .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) + .toString(); } public static Long generatingRandomLong() { diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/MatcherFactory.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/MatcherFactory.java index e4f858eb6..e8b43a00f 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/MatcherFactory.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/MatcherFactory.java @@ -4,11 +4,6 @@ import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; -/** - * Factory for creating test matchers. - *

- * Comparing actual and expected objects via AssertJ - */ public class MatcherFactory { public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { diff --git a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/SpcexObjectBaseRowMapper.java b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/SpcexObjectBaseRowMapper.java index ce1d441d2..a1e3a7ab9 100644 --- a/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/SpcexObjectBaseRowMapper.java +++ b/clearing-parent/imdg/src/test/java/ru/spcex/clearing/imdg/utils/SpcexObjectBaseRowMapper.java @@ -37,7 +37,6 @@ public class SpcexObjectBaseRowMapper extends Abstrac } setValueFildForObjectIfFildExists(object, object.getClass(), fildName, value); } catch (TypeMismatchException | NotWritablePropertyException e) { - // Ignore } catch (ClassNotFoundException e) { throw new RuntimeException(e); } diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/KafkaConfig.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/KafkaConfig.java index 79c009425..414e3b7c5 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/KafkaConfig.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/KafkaConfig.java @@ -38,7 +38,7 @@ public class KafkaConfig { @Bean public ProducerFactory pf(ExportLimServiceSettings settings) { KafkaProducerSettings kafkaSettings = settings.getKafkaProducer(); - return KafkaProducerFactory.producerFactory(kafkaSettings); // Использует специальный сериализатор в JSON + return KafkaProducerFactory.producerFactory(kafkaSettings); } @Bean("kafkaTemplate") diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/LimFormat.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/LimFormat.java index d49aa149b..96570e556 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/LimFormat.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/config/LimFormat.java @@ -9,8 +9,6 @@ public class LimFormat { private static final DecimalFormat D_FORMAT_2; static { D_FORMAT_2 = new DecimalFormat("#0.00"); -// D_FORMAT_2.setMaximumFractionDigits(2); -// D_FORMAT_2.setMinimumFractionDigits(2); D_FORMAT_2.setGroupingUsed(false); D_FORMAT_2.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ENGLISH)); } diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java index 3547187f0..5fe83166c 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterService.java @@ -64,7 +64,6 @@ public abstract class AbstractExporterService { Path limFilePath = limFile.toPath(); try { - // todo возможная оптимизация: посмотреть размеры файлов, возможно обойтись без временного файла Files.write(limFilePath, getLimFileRows()); gateway.sendToSftp(limFile); } catch (IOException e) { diff --git a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/LauncherCommandReceiver.java b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/LauncherCommandReceiver.java index aaee769fc..a1d0d4c12 100644 --- a/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/LauncherCommandReceiver.java +++ b/clearing-parent/lim-exporter/src/main/java/ru/spcex/clearing/lim/exporter/services/LauncherCommandReceiver.java @@ -31,14 +31,14 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi @Override public void afterPropertiesSet() { callback(LauncherCommandRequest.class) - .setFunction(action -> moneyExporterService.process()) - .forDestination(Task.unloadingSession_LIMM.topic(), callbacks::put); // LIMM + .setFunction(action -> moneyExporterService.process()) + .forDestination(Task.unloadingSession_LIMM.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setFunction(action -> securityExporterService.process()) - .forDestination(Task.unloadingSession_LIMS.topic(), callbacks::put); // LIMS + .setFunction(action -> securityExporterService.process()) + .forDestination(Task.unloadingSession_LIMS.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setFunction(action -> currencyExporterService.process()) - .forDestination(Task.unloadingSession_LIMC.topic(), callbacks::put); // LIMC + .setFunction(action -> currencyExporterService.process()) + .forDestination(Task.unloadingSession_LIMC.topic(), callbacks::put); init(); } } diff --git a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java index 2552a3dbe..ce19dbd10 100644 --- a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java +++ b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/AbstractServiceTest.java @@ -99,7 +99,6 @@ public abstract class AbstractServiceTest { return registry; } - // see clearing-service RegistryUtil: public static String clearingCode(Registry ofRegistry) { return clearingCode(ofRegistry.getRegistryDesignation(), ofRegistry.getRegistryInstrumentType(), ofRegistry.getRegistryCapacity(), ofRegistry.getRegistryUnit()); } diff --git a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterServiceTest.java b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterServiceTest.java index bc857354d..01afb1559 100644 --- a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterServiceTest.java +++ b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/AbstractExporterServiceTest.java @@ -26,12 +26,5 @@ class AbstractExporterServiceTest extends AbstractServiceTest { String fileName = "limits_money_202305241832.lim"; moneyExporterService.sendLimExportedNotification(fileName); - //TestUtils.waitingSendAndCheckRecord(null, mockProducer); - - /* - Для интеграционного теста см. - KafkaProducerSettings kafkaSettings = settings.getKafkaProducer(); - return KafkaProducerFactory.producerFactory(kafkaSettings); // Использует специальный сериализатор в JSON - */ } } \ No newline at end of file diff --git a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java index 85986c05f..b7eff5c7a 100644 --- a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java +++ b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/MoneyExporterServiceTest.java @@ -22,10 +22,6 @@ class MoneyExporterServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link MoneyExporterService#getLimFileRows()}
- * Тест проверяет создание строк документа lim.
- */ @Test void getLimFileRows() { clearAllInImdg(tradingClearingRegistryImdg); diff --git a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java index c5248bd53..b4b85f194 100644 --- a/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java +++ b/clearing-parent/lim-exporter/src/test/java/ru/spcex/clearing/lim/exporter/services/SecurityExporterServiceTest.java @@ -20,10 +20,6 @@ class SecurityExporterServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link SecurityExporterService#getLimFileRows()}
- * Тест проверяет создание строк документа lim.
- */ @Test void getLimFileRows() { clearAllInImdg(tradingClearingRegistryImdg); @@ -48,7 +44,5 @@ class SecurityExporterServiceTest extends AbstractServiceTest { tradingClearingRegistryImdg.insert(tradingClearingRegistry); limFileRows = securityExporterService.getLimFileRows(); -// assertEquals(2, limFileRows.size()); -// assertTrue(limFileRows.contains(securityExporterService.getRow(registryA, new BigDecimal("5.00")))); } } \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java index 4700ce559..b535521d6 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/RegistryServiceApplication.java @@ -13,11 +13,6 @@ import ru.spcex.clearing.registry.service.RegisterUtilityService; import java.util.Arrays; -/** - * Параметры запуска: - * --service запуск как сервис (по умолчанию); - * --report запустить один раз, выполнить все отчёты и завершиться. - */ @SpringBootApplication public class RegistryServiceApplication implements CommandLineRunner { final Logger log = LoggerFactory.getLogger(getClass()); diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/SFTPReportsConfig.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/SFTPReportsConfig.java index de4bdaa5f..2ad62a32b 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/SFTPReportsConfig.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/SFTPReportsConfig.java @@ -29,93 +29,7 @@ import java.util.List; import static org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.Command.LS; -//@Configuration public class SFTPReportsConfig { -// protected Logger log = LoggerFactory.getLogger(getClass()); -// private final AProperties settings; -// -// @Autowired(required = false) -// public SFTPReportsConfig(AProperties settings) { -// this.settings = settings; -// } -// -// @Bean("reportsSftpSessionFactory") -// public SessionFactory sftpSessionFactory() { -// if (settings.getReportsStore()==null) { -// log.info("SFTP reports-store not set in config. Disabled."); -// return null; -// } -// DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory(true); -// factory.setHost(settings.getReportsStore().getServerIp()); -// factory.setPort(settings.getReportsStore().getServerPort()); -// factory.setUser(settings.getReportsStore().getUser()); -// factory.setPassword(settings.getReportsStore().getPassword()); -// factory.setAllowUnknownKeys(true); -// return new CachingSessionFactory<>(factory); -// } -// -// @Bean("reportsSftpHandler") -// @Autowired(required = false) -// @ServiceActivator(inputChannel = "reportsToSftpChannel") -// public MessageHandler handler(@Qualifier("reportsSftpSessionFactory") SessionFactory sessionFactory) { -// if (sessionFactory == null || settings.getReportsStore()==null) { -// log.info("reportsToSftpChannel disabled."); -// return null; -// } -// SftpMessageHandler handler = new SftpMessageHandler(sessionFactory); -// handler.setRemoteDirectoryExpression(new LiteralExpression(settings.getReportsStore().getOutDir())); -// log.info("Configure sftp output directory \"{}\"", settings.getReportsStore().getOutDir()); -// handler.setAutoCreateDirectory(true); -// handler.setFileNameGenerator(message -> { -// if (message.getPayload() instanceof File) { -// return ((File) message.getPayload()).getName(); -// } else { -// throw new IllegalArgumentException("File must expected as payload."); -// } -// }); -// return handler; -// } -// -// @Autowired(required = false) -// @Bean("reportsListSftpChannel") -// public MessageChannel listSftpChannel(@Qualifier("reportsSftpHandlerList") MessageHandler handler) { -// if (handler==null) -// return null; -// DirectChannel dc = new DirectChannel(); -// dc.subscribe(handler); -// return dc; -// } -// -// @Autowired(required = false) -// @Bean("reportsToSftpChannel") -// public MessageChannel toSftpChannel(@Qualifier("reportsSftpHandler") MessageHandler handler) { -// if (handler==null) -// return null; -// DirectChannel dc = new DirectChannel(); -// dc.subscribe(handler); -// return dc; -// } -// -// @Autowired(required = false) -// @Bean("reportsSftpHandlerList") -// @ServiceActivator(inputChannel = "reportsListSftpChannel") -// public MessageHandler handlerList(@Qualifier("reportsSftpSessionFactory") SessionFactory sessionFactory) { -// if (sessionFactory==null) -// return null; -// String expression = "'/%s'".formatted(settings.getReportsStore().getOutDir()); -// return new SftpOutboundGateway(sessionFactory, LS.getCommand(), expression); -// } -// -// @Autowired(required = false) -// @Bean("reportsSftpOutboundListFlow") -// public IntegrationFlow sftpOutboundListFlow(@Qualifier("reportsSftpSessionFactory") SessionFactory sessionFactory) { -// if (sessionFactory==null) -// return null; -// return IntegrationFlows.from("reportsListSftpChannel") -// .handle(new SftpOutboundGateway(sessionFactory, "ls", "payload")) -// .get(); -// } -// @MessagingGateway(name = "reportsSftpGateway") public interface ReportsGateway { @Gateway(requestChannel = "reportsToSftpChannel") diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/AProperties.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/AProperties.java index 0b71a626d..c8745bddd 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/AProperties.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/AProperties.java @@ -15,7 +15,7 @@ import ru.spcex.clearing.registry.conf.CmdArgsParser; public class AProperties { private DBProperties dbClearing; private PeriodProperties period; - private ReportsStore reportsStore; // localTempDir + private ReportsStore reportsStore; private KafkaConsumerSettings kafkaConsumer; private KafkaProducerSettings kafkaProducer; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/ReportsStore.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/ReportsStore.java index 318dcd746..514a31f38 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/ReportsStore.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/conf/properties/ReportsStore.java @@ -2,7 +2,6 @@ package ru.spcex.clearing.registry.conf.properties; public class ReportsStore { private String outDir; -// private String localTempDir; private String user; private String password; private String serverIp; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/AllowedDictionary.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/AllowedDictionary.java index db97a00d7..7ea511c09 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/AllowedDictionary.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/AllowedDictionary.java @@ -1,7 +1,4 @@ package ru.spcex.clearing.registry.reports.bean; -/** - * Database table: ALLOWED_DICTIONARY - */ public class AllowedDictionary extends AbstractDictionary { } \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/BusinessObject.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/BusinessObject.java index 327b52b8c..cfe3ea5ce 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/BusinessObject.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/BusinessObject.java @@ -2,9 +2,6 @@ package ru.spcex.clearing.registry.reports.bean; import java.time.Instant; -/** - * UUID - Long based with field object - */ public abstract class BusinessObject extends SpcexDBBase { private Instant created; private Instant updated; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/CompanySymbols.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/CompanySymbols.java index 8d6cb4ce3..17a5a90f8 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/CompanySymbols.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/CompanySymbols.java @@ -1,8 +1,5 @@ package ru.spcex.clearing.registry.reports.bean; -/** - * DB: COMPANY_SYMBOLS - */ public class CompanySymbols extends SpcexDBBase { private Long companyId; private String companySymbol; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Dictionary.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Dictionary.java index 2b44f0134..6024b064a 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Dictionary.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Dictionary.java @@ -2,9 +2,6 @@ package ru.spcex.clearing.registry.reports.bean; import java.io.Serializable; -/** - * Словарь. - */ public interface Dictionary extends Serializable { Long getId(); diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/ExecutionCommon.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/ExecutionCommon.java index da3bbf3a1..5ed8a0366 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/ExecutionCommon.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/ExecutionCommon.java @@ -29,7 +29,6 @@ public abstract class ExecutionCommon extends BusinessObject { protected LocalDate clearingDate; protected Long counterPartyTradingClearingRegistryId; - // No DB fields private String sellerTkrCode; private String buyerTkrCode; private String counterPartyIdFromCompany; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/PaymentInstruction.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/PaymentInstruction.java index 1bb0eef6e..b31614000 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/PaymentInstruction.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/PaymentInstruction.java @@ -35,7 +35,6 @@ public class PaymentInstruction extends BusinessObject implements IDBObject { private LocalDate clearingDate; private Long sessionId; - // No DB fields (for depoInstruction) private String creditLegAccountStr; private String debitLegAccountStr; private String senderCompanyShortName; @@ -43,13 +42,11 @@ public class PaymentInstruction extends BusinessObject implements IDBObject { private String addresseeCompanyShortName; private String addresseeCompanyClearingCode; - // No DB fields (for moneyInstruction) private String sender; private String senderClearingCode; private String addressee; private String addresseeClearingCode; - // No DB fields (for depoInstruction) private String security; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryHistory.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryHistory.java index 84fe878cb..eb993cbd7 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryHistory.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryHistory.java @@ -5,7 +5,6 @@ import ru.spcex.clearing.registry.reports.loaders.IDBObject; public class RegistryHistory extends BusinessEvent implements IDBObject { private Registry object; - // No DB fields private String houseName; private String account; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryStatusDictionary.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryStatusDictionary.java index 6a7775506..0629656b6 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryStatusDictionary.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/RegistryStatusDictionary.java @@ -1,11 +1,6 @@ package ru.spcex.clearing.registry.reports.bean; -/** - * Справочник статусов регистров - * - * Dictionary DB table: REGISTRY_STATUS_DICTIONARY - **/ public class RegistryStatusDictionary extends AbstractDictionary { } \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Security.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Security.java index 7c596f3e8..cffe78979 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Security.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/Security.java @@ -1,9 +1,5 @@ package ru.spcex.clearing.registry.reports.bean; -/** - * Инструменты - * DB table: SECURITY - **/ public class Security extends BusinessObject { private String securitySymbol; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/SessionTypeDictionary.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/SessionTypeDictionary.java index 09c956df4..fc5104a32 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/SessionTypeDictionary.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/SessionTypeDictionary.java @@ -1,10 +1,5 @@ package ru.spcex.clearing.registry.reports.bean; -/** - * Справочник типов клиринговых сессий - * - * Dictionary DB table: SESSION_TYPE_DICTIONARY - **/ public class SessionTypeDictionary extends AbstractDictionary { } \ No newline at end of file diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/TradingClearingRegistry.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/TradingClearingRegistry.java index a3222691d..1dc0211da 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/TradingClearingRegistry.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/bean/TradingClearingRegistry.java @@ -1,10 +1,5 @@ package ru.spcex.clearing.registry.reports.bean; -/** - * Торгово-клиринговый регистр - *

- * DB table: TRADING_CLEARING_REGISTRY - **/ public class TradingClearingRegistry extends BusinessObject { private String code; diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/LiabilitiesRegistryReportBuilder.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/LiabilitiesRegistryReportBuilder.java index 96565c8cc..ec4dd78a3 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/LiabilitiesRegistryReportBuilder.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/builders/LiabilitiesRegistryReportBuilder.java @@ -31,7 +31,7 @@ public class LiabilitiesRegistryReportBuilder extends XLSXReportBuilder { protected final Logger log = LoggerFactory.getLogger(getClass()); protected static DateTimeFormatter dateTimeFormatter_YYMMDDHHmmssSSS = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); - /** - * Имя отчета (для имени файла) - */ protected abstract String reportName(); - /** - * Преобразовать объект в строку отчета - */ protected abstract R toRow(I input); - /** - * Сортировка строк перед формированием отчета - */ protected Collection sortInput(Collection input) { return input; } - /** - * Сортировка строк после формирования отчета - */ protected Collection sortOutput(Collection rows) { return rows; } - /** - * Название отчета, используется для формирования имени отчета (без указания формата) - */ protected String getReportFilename() { return "%s_%s".formatted(reportName(), dateTimeFormatter_YYMMDDHHmmssSSS.format(LocalDateTime.now())); } - /** - * Формирование отчета на основе объектов - */ public File buildReport(Collection inputObj, File outFolder) { assert outFolder != null && outFolder.isDirectory() && inputObj != null; List rows; @@ -150,10 +131,10 @@ public abstract class XLSXReportBuilder { Map tradingClearingRegistryById = new HashMap<>(); { Set tkrIds = executionCurrencys.stream() - .filter(eDep -> eDep.getPartyTradingClearingRegistry() == null) // оптимизация; - .map(ExecutionCurrency::getTradingClearingRegistryId) + .filter(eDep -> eDep.getPartyTradingClearingRegistry() == null) + .map(ExecutionCurrency::getTradingClearingRegistryId) .filter(Objects::nonNull) .collect(Collectors.toSet()); tkrIds.addAll(executionCurrencys.stream() - .filter(eDep -> eDep.getCounterPartyTradingClearingRegistry() == null) // оптимизация - .map(ExecutionCurrency::getCounterPartyTradingClearingRegistryId) + .filter(eDep -> eDep.getCounterPartyTradingClearingRegistry() == null) + .map(ExecutionCurrency::getCounterPartyTradingClearingRegistryId) .filter(Objects::nonNull) .collect(Collectors.toSet())); if (!tkrIds.isEmpty()) { @@ -154,14 +154,14 @@ public class ExecutionCurrencyLoader extends IDBLoader { } executionCurrency.setBuyerTkrCode(getTCRCodeFromValueOrById( - executionCurrency.getCounterPartyTradingClearingRegistry(), // В execution Currency они заполнены - executionCurrency.getCounterPartyTradingClearingRegistryId(), - tradingClearingRegistryById + executionCurrency.getCounterPartyTradingClearingRegistry(), + executionCurrency.getCounterPartyTradingClearingRegistryId(), + tradingClearingRegistryById )); executionCurrency.setSellerTkrCode(getTCRCodeFromValueOrById( - executionCurrency.getPartyTradingClearingRegistry(), // В execution Currency они заполнены - executionCurrency.getTradingClearingRegistryId(), - tradingClearingRegistryById + executionCurrency.getPartyTradingClearingRegistry(), + executionCurrency.getTradingClearingRegistryId(), + tradingClearingRegistryById )); } else if (MoneyFlowSide.BUY.equalsByKey(side) || Side.BUY.equalsByKey(side)) { if (companyByCompanyId != null) { @@ -185,14 +185,14 @@ public class ExecutionCurrencyLoader extends IDBLoader { } } executionCurrency.setBuyerTkrCode(getTCRCodeFromValueOrById( - executionCurrency.getPartyTradingClearingRegistry(), // В execution Currency они заполнены - executionCurrency.getTradingClearingRegistryId(), - tradingClearingRegistryById + executionCurrency.getPartyTradingClearingRegistry(), + executionCurrency.getTradingClearingRegistryId(), + tradingClearingRegistryById )); executionCurrency.setSellerTkrCode(getTCRCodeFromValueOrById( - executionCurrency.getCounterPartyTradingClearingRegistry(), // В execution Currency они заполнены - executionCurrency.getCounterPartyTradingClearingRegistryId(), - tradingClearingRegistryById + executionCurrency.getCounterPartyTradingClearingRegistry(), + executionCurrency.getCounterPartyTradingClearingRegistryId(), + tradingClearingRegistryById )); } else { log.warn("Unknown executionCurrency[{}].side={}", executionCurrency.getId(), executionCurrency.getSide()); @@ -251,8 +251,6 @@ public class ExecutionCurrencyLoader extends IDBLoader { object.setSettlementAmount(resultSet.getObject("SETTLEMENT_AMOUNT", BigDecimal.class)); object.setQuantity(resultSet.getObject("QUANTITY", BigDecimal.class)); object.setSide(resultSet.getObject("SIDE", String.class)); -// object.setCurrencyCode(resultSet.getObject("CURRENCY_CODE", String.class)); -// object.setSettlementOrganization(resultSet.getObject("SETTLEMENT_ORGANIZATION", String.class)); object.setCoverageStatus(resultSet.getObject("COVERAGE_STATUS", String.class)); object.setSessionId(resultSet.getObject("SESSION_ID", Long.class)); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionDepositLoader.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionDepositLoader.java index 87d770254..396b3d746 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionDepositLoader.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionDepositLoader.java @@ -47,13 +47,13 @@ public class ExecutionDepositLoader extends IDBLoader { Map tradingClearingRegistryById = new HashMap<>(); { Set tkrIds = executionDeposits.stream() - .filter(eDep -> eDep.getPartyTradingClearingRegistry() == null) // оптимизация; // В execution deposit они пустые - .map(ExecutionDeposit::getTradingClearingRegistryId) + .filter(eDep -> eDep.getPartyTradingClearingRegistry() == null) + .map(ExecutionDeposit::getTradingClearingRegistryId) .filter(Objects::nonNull) .collect(Collectors.toSet()); tkrIds.addAll(executionDeposits.stream() - .filter(eDep -> eDep.getCounterPartyTradingClearingRegistry() == null) // оптимизация // В execution deposit и fond они заполнены - .map(ExecutionDeposit::getCounterPartyTradingClearingRegistryId) + .filter(eDep -> eDep.getCounterPartyTradingClearingRegistry() == null) + .map(ExecutionDeposit::getCounterPartyTradingClearingRegistryId) .filter(Objects::nonNull) .collect(Collectors.toSet())); if (!tkrIds.isEmpty()) { @@ -151,9 +151,9 @@ public class ExecutionDepositLoader extends IDBLoader { } executionDeposit.setBuyerTkrCode(getTCRCodeFromValueOrById( - executionDeposit.getCounterPartyTradingClearingRegistry(), // В execution deposit они заполнены - executionDeposit.getCounterPartyTradingClearingRegistryId(), - tradingClearingRegistryById + executionDeposit.getCounterPartyTradingClearingRegistry(), + executionDeposit.getCounterPartyTradingClearingRegistryId(), + tradingClearingRegistryById )); executionDeposit.setSellerTkrCode(getTCRCodeFromValueOrById( executionDeposit.getPartyTradingClearingRegistry(), @@ -187,9 +187,9 @@ public class ExecutionDepositLoader extends IDBLoader { tradingClearingRegistryById )); executionDeposit.setSellerTkrCode(getTCRCodeFromValueOrById( - executionDeposit.getCounterPartyTradingClearingRegistry(), // В execution deposit они заполнены - executionDeposit.getCounterPartyTradingClearingRegistryId(), - tradingClearingRegistryById + executionDeposit.getCounterPartyTradingClearingRegistry(), + executionDeposit.getCounterPartyTradingClearingRegistryId(), + tradingClearingRegistryById )); } else { log.warn("Unknown executionDeposit[{}].side={}", executionDeposit.getId(), executionDeposit.getSide()); diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionFondLoader.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionFondLoader.java index 992716b52..31a854508 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionFondLoader.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/ExecutionFondLoader.java @@ -38,13 +38,13 @@ public class ExecutionFondLoader extends IDBLoader { Map tradingClearingRegistryById = new HashMap<>(); { Set tkrIds = executionFonds.stream() - .filter(eDep -> eDep.getPartyTradingClearingRegistry() == null) // оптимизация; - .map(ExecutionFond::getTradingClearingRegistryId) + .filter(eDep -> eDep.getPartyTradingClearingRegistry() == null) + .map(ExecutionFond::getTradingClearingRegistryId) .filter(Objects::nonNull) .collect(Collectors.toSet()); tkrIds.addAll(executionFonds.stream() - .filter(eDep -> eDep.getCounterPartyTradingClearingRegistry() == null) // оптимизация // В execution deposit и fond они заполнены - .map(ExecutionFond::getCounterPartyTradingClearingRegistryId) + .filter(eDep -> eDep.getCounterPartyTradingClearingRegistry() == null) + .map(ExecutionFond::getCounterPartyTradingClearingRegistryId) .filter(Objects::nonNull) .collect(Collectors.toSet())); if (!tkrIds.isEmpty()) { @@ -141,9 +141,9 @@ public class ExecutionFondLoader extends IDBLoader { } } executionFond.setBuyerTkrCode(getTCRCodeFromValueOrById( - executionFond.getCounterPartyTradingClearingRegistry(), // В execution fond они заполнены - executionFond.getCounterPartyTradingClearingRegistryId(), - tradingClearingRegistryById + executionFond.getCounterPartyTradingClearingRegistry(), + executionFond.getCounterPartyTradingClearingRegistryId(), + tradingClearingRegistryById )); executionFond.setSellerTkrCode(getTCRCodeFromValueOrById( executionFond.getPartyTradingClearingRegistry(), @@ -177,9 +177,9 @@ public class ExecutionFondLoader extends IDBLoader { tradingClearingRegistryById )); executionFond.setSellerTkrCode(getTCRCodeFromValueOrById( - executionFond.getCounterPartyTradingClearingRegistry(), // В execution fond они заполнены - executionFond.getCounterPartyTradingClearingRegistryId(), - tradingClearingRegistryById + executionFond.getCounterPartyTradingClearingRegistry(), + executionFond.getCounterPartyTradingClearingRegistryId(), + tradingClearingRegistryById )); } else { log.warn("Unknown executionFond[{}].side={}", executionFond.getId(), executionFond.getSide()); diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/IDBLoader.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/IDBLoader.java index b4c14f366..c8dd98f20 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/IDBLoader.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/IDBLoader.java @@ -30,7 +30,7 @@ public abstract class IDBLoader { MapSqlParameterSource parameterSource = new MapSqlParameterSource(); parameterSource.addValue("startDate", periodProperties.getStartDate()); LocalDate endDate = periodProperties.getEndDate(); - endDate = endDate.plusDays(1); // startDate <= x < endDate, в базе может быть как DATE, TIMESTAMP + endDate = endDate.plusDays(1); parameterSource.addValue("endDate", endDate); log.debug("Запрос SQL: \"{}\", с параметрами: startDate={}, endDate={}", sql, periodProperties.getStartDate(), endDate); @@ -44,15 +44,8 @@ public abstract class IDBLoader { } } - /** - * Метод должен возвращать либо объект, либо null если объект не подходит под условия - * (тогда он не будет включен в выборку) - */ protected abstract T fromRS(ResultSet rs) throws SQLException; - /** - * В созданном запросе обязательно должны быть параметры startDate и endDate - */ protected abstract String sqlQuery(); protected abstract Class getDBObjectClass(); diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/MoneyBalanceLoader.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/MoneyBalanceLoader.java index c9beeae3f..bca2a07b4 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/MoneyBalanceLoader.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/MoneyBalanceLoader.java @@ -57,8 +57,7 @@ public class MoneyBalanceLoader extends RegistryHistoryLoader { protected String sqlQuery() { RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.AM_T); return ("select * from REGISTRY_HISTORY where EVENT_TIME >= :startDate and EVENT_TIME < :endDate and (%s) " + - "and TRADING_CLEARING_REGISTRY is not null and (diff_balance=0 or account_type='INFO')") - // diff_balance=0 то же что и check_balance=balance - .formatted(registryCodeSqlBuilder.buildSql()); + "and TRADING_CLEARING_REGISTRY is not null and (diff_balance=0 or account_type='INFO')") + .formatted(registryCodeSqlBuilder.buildSql()); } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/RegistryLoader.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/RegistryLoader.java index 0f8426c83..7716dd0aa 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/RegistryLoader.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/RegistryLoader.java @@ -31,15 +31,13 @@ public class RegistryLoader extends IDBLoader { log.warn("Registries not found."); return new ArrayList<>(); } - - // Мэппинг словаря здесь, а не в LiabilitiesRegistryReportBuilder { Set registryStatuses = result.stream().map(Registry::getRegistryStatus).collect(Collectors.toSet()); MapSqlParameterSource parameterSource = new MapSqlParameterSource(); parameterSource.addValue("expectedStatuses", registryStatuses); List registryStatusDictionaries = clearingJdbc.query( - "select CODE, NAME from registry_status_dictionary where CODE in (:expectedStatuses)", - parameterSource, ADictionaryRowMapper.forRegistryStatusDictionary() + "select CODE, NAME from registry_status_dictionary where CODE in (:expectedStatuses)", + parameterSource, ADictionaryRowMapper.forRegistryStatusDictionary() ); mappingField(result, registryStatusDictionaries, Registry::getRegistryStatus, Registry::setRegistryStatus_dictionary); } @@ -48,8 +46,8 @@ public class RegistryLoader extends IDBLoader { MapSqlParameterSource parameterSource = new MapSqlParameterSource(); parameterSource.addValue("sessionTypes", sessionTypes); List sessionTypeDictionaries = clearingJdbc.query( - "select CODE, NAME from session_type_dictionary where CODE in (:sessionTypes)", - parameterSource, ADictionaryRowMapper.forSessionTypeDictionary() + "select CODE, NAME from session_type_dictionary where CODE in (:sessionTypes)", + parameterSource, ADictionaryRowMapper.forSessionTypeDictionary() ); mappingField(result, sessionTypeDictionaries, Registry::getSessionType, Registry::setSessionType_dictionary); } @@ -77,8 +75,8 @@ public class RegistryLoader extends IDBLoader { protected String sqlQuery() { RegistryCodeSqlBuilder registryCodeSqlBuilder = RegistryCodeSqlBuilder.getInstance(RegistryTradingParams.OM_T, RegistryTradingParams.OS_T); return ("select * from REGISTRY where SETTLEMENT_DATE >= :startDate and SETTLEMENT_DATE < :endDate " + - "and %s and REGISTRY_STATUS='%s'") // and TRADING_CLEARING_REGISTRY is not null - .formatted(registryCodeSqlBuilder.buildSql(), RegistryStatus.CLRD.getKey()); + "and %s and REGISTRY_STATUS='%s'") + .formatted(registryCodeSqlBuilder.buildSql(), RegistryStatus.CLRD.getKey()); } @Override diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/helpers/IEnumKey.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/helpers/IEnumKey.java index fdbb8ba4e..e1b37c166 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/helpers/IEnumKey.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/reports/loaders/helpers/IEnumKey.java @@ -10,10 +10,6 @@ public interface IEnumKey extends Serializable { return key != null && getKey().equalsIgnoreCase(key); } - /** - * Проверяет что среди данного набора Enum, присутствует элемент с данным id - * id может быть null - */ static & IEnumKey> boolean contains(String id, T... enumSet) { for (T e : enumSet) { if (Objects.equals(id, e.getKey())) @@ -30,10 +26,6 @@ public interface IEnumKey extends Serializable { return false; } - /** - * Проверяет что среди всех Enum данного класса, присутствует элемент с данным id - * id может быть null - */ static & IEnumKey> boolean contains(String key, Class enumClass) { for (T e : enumClass.getEnumConstants()) { if (Objects.equals(key, e.getKey())) @@ -42,12 +34,6 @@ public interface IEnumKey extends Serializable { return false; } - /** - * Возвращает Enum по id, если в заданном классе такой определен - * id может быть null - * - * @return Enum если нашел, иначе null - */ static & IEnumKey> T getEnumByKey(Class enumClass, String key) { for (T e : enumClass.getEnumConstants()) { if (Objects.equals(key, e.getKey())) diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityRunner.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityRunner.java index d329aebeb..d5cd4acdb 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityRunner.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityRunner.java @@ -96,7 +96,7 @@ public class RegisterUtilityRunner { if (!finished) { log.error("ExecutionService не успел завершиться корректно!"); } - for (Future task : catchExceptions) { // распечатать возникшие ошибки загрузки + for (Future task : catchExceptions) { if (task.isDone()) try { task.get(); } catch (ExecutionException ex) { @@ -119,7 +119,6 @@ public class RegisterUtilityRunner { executionCommons.addAll(executionCurrencys); executionRegisterReportBuilder.buildReport(executionCommons, outFolder); log.info("Все отчёты завершены."); - // todo возможно понадобится отсылать на SFTP ReportUtils.sendFilesToSftp } } diff --git a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityService.java b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityService.java index dd005815f..00c136e6d 100644 --- a/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityService.java +++ b/clearing-parent/registry-service/src/main/java/ru/spcex/clearing/registry/service/RegisterUtilityService.java @@ -62,7 +62,7 @@ public class RegisterUtilityService extends QueueConsumer implements Initializin RequestInfoUpdate requestInfoUpdate = new RequestInfoUpdate(); requestInfoUpdate.setId(request.getId()); requestInfoUpdate.setStatus(Status.Error); - requestInfoUpdate.setMessage("Ошибка: " + e.toString()); // (Error) Ошибка: Ошибка: ru.spcex.clearing.utilities.exceptions.CmdArgsParserException: Дата startDate=2024-05-16 должна быть до endDate=2024-05-02 + requestInfoUpdate.setMessage("Ошибка: " + e.toString()); if (e instanceof InterruptedException) { Thread.currentThread().interrupt(); } diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/config/TestConfig.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/config/TestConfig.java index 49995252f..ad57d2f20 100644 --- a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/config/TestConfig.java +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/config/TestConfig.java @@ -21,10 +21,8 @@ public class TestConfig { public AProperties testSettings() { AProperties registryServiceSettings = new AProperties(Mockito.mock(CmdArgsParser.class)); ReportsStore store = new ReportsStore(); - //store.setLocalTempDir("out"); registryServiceSettings.setOutFolder("out"); registryServiceSettings.setReportsStore(store); - //registryServiceSettings.setCsvMode(true); return registryServiceSettings; } @@ -42,7 +40,7 @@ public class TestConfig { @Bean public SFTPReportsConfig.ReportsGateway reportsSftpGatewayMock() { - return new TestMockSFTP(); //sendFilesToSftp + return new TestMockSFTP(); } public static class TestMockSFTP implements SFTPReportsConfig.ReportsGateway { diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/MatcherFactory.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/MatcherFactory.java index 28d93b4ad..8e424be73 100644 --- a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/MatcherFactory.java +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/MatcherFactory.java @@ -4,11 +4,6 @@ import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; -/** - * Factory for creating test matchers. - *

- * Comparing actual and expected objects via AssertJ - */ public class MatcherFactory { public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { diff --git a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/TestUtils.java b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/TestUtils.java index 83348dc99..3fb1a56de 100644 --- a/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/TestUtils.java +++ b/clearing-parent/registry-service/src/test/java/ru/spcex/clearing/registry/utils/TestUtils.java @@ -42,10 +42,8 @@ public class TestUtils { requestInfoUpdate.setId(id); requestInfoUpdate.setStatus(Success); predictableBaseRequest.setRequestPayload(requestInfoUpdate); - - //waiting for kafka producer send message (finale event) verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); BaseRequest baseRequestResult = (BaseRequest) producerRecord.getValue().value(); assertEquals(Consts.REQUEST_INFO_UPDATE, producerRecord.getValue().topic()); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java index 0492bb849..f11201d24 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/ReportsServiceApplication.java @@ -21,21 +21,4 @@ public class ReportsServiceApplication { System.exit(-1); } } - -/* для тестирования: - ReportsService reportsService = new ReportsService(); - reportsService.writeXML(); - test(context); - @Deprecated - public static void test(ConfigurableApplicationContext context) { - ImdgProvider imdg = context.getBean(ImdgProvider.class); - - ReportINACCNT_Collector collector = new ReportINACCNT_Collector(imdg); - ReportINACCNT report = collector.collectReportForClearingCode("test_clearing_code"); - XStream xStream = new XStream(new XppDriver(new NoNameCoder())); - xStream.processAnnotations(ReportINACCNT.class); - String out = xStream.toXML(report); - System.out.println(out); - } - */ } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java index 53a3b4243..98f8e6945 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/CSVReportBuilder.java @@ -29,67 +29,34 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; -/** - * Класс для построения отчетов в формате CSV - * - * @param

тип параметров, используемых при построении отчета - */ public abstract class CSVReportBuilder { protected final Logger log = LoggerFactory.getLogger(getClass()); protected DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy'T'HH:mm:ss"); protected DateTimeFormatter dateTimeFormatter_YYMMDDHHmmssSSS = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); protected DateTimeFormatter dateFormatter_yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd"); - /** - * Возвращает списком значения CSV отчета. Каждый элемент списка - строка, элемент массива внутри списка - столбец. - */ protected abstract List getRows(); - /** - * Временной пояс для отчета - */ protected ZoneId getReportZoneId() { return ZoneId.of("Europe/Moscow"); } - /** - * Название отчета, используется для формирования имени отчета (без указания формата) - * - * @param params Параметры формирования отчета - */ protected String getReportFilename(P params) { return "%s_%s".formatted(getReportKey().getKey(), dateTimeFormatter_YYMMDDHHmmssSSS.format(LocalDateTime.now())); } - /** - * Тип отчета по {@link ReportBuilderType} - */ public abstract ReportBuilderType getReportType(); public abstract ReportKeys getReportKey(); - /** - * Тип параметров для построения отчетов - */ public abstract Class

getParamsClass(); - /** - * Класс отчета - */ public abstract Class getReportClass(); - /** - * Секция отчета (для конкретного отчета может быть перегружена) - */ public String getSection() { return null; } - /** - * Формирование отчета на основе параметров - * - * @param params Параметры формирования отчета - */ protected abstract void collect(P params); public File createReport(P params, File outFolder) { @@ -107,14 +74,13 @@ public abstract class CSVReportBuilder { CustomStrategy customStrategy = new CustomStrategy<>(); customStrategy.setType(getReportClass()); StatefulBeanToCsv sbc = new StatefulBeanToCsvBuilder(icsvWriter) - .withMappingStrategy(customStrategy) - .withLineEnd("\n") - .withSeparator(',') - .withQuotechar('\"') - .build(); + .withMappingStrategy(customStrategy) + .withLineEnd("\n") + .withSeparator(',') + .withQuotechar('\"') + .build(); if (!rows.isEmpty()) sbc.write(rows); else { - // Для записи заголовков в пустой файл Constructor constructor = getReportClass().getDeclaredConstructor(); R obj = constructor.newInstance(); String[] headers = customStrategy.generateHeader(obj); @@ -137,9 +103,9 @@ public abstract class CSVReportBuilder { protected List getSessionIdsForCurrentDate(Imdg sessionImdg) { Collection sessionForCurrentDay = sessionImdg.getCollectionObjectsByFieldValues( - Map.of( - "clearingDate", LocalDate.now() - ) + Map.of( + "clearingDate", LocalDate.now() + ) ); Set sessionIds = sessionForCurrentDay.stream().map(Session::getId).collect(Collectors.toSet()); return sessionIds.stream().toList(); @@ -188,11 +154,11 @@ public abstract class CSVReportBuilder { String formatValue = csvNumberAnnotation.value(); String writeFormat = csvNumberAnnotation.writeFormat(); csvConverter = new ConverterNumber(BigDecimal.class, - Locale.getDefault().toString(), - Locale.getDefault().toString(), - Locale.getDefault(), - formatValue, - writeFormat); + Locale.getDefault().toString(), + Locale.getDefault().toString(), + Locale.getDefault(), + formatValue, + writeFormat); } return csvConverter; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/EmptyParams.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/EmptyParams.java index 6cb5490b4..d76eb8fe1 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/EmptyParams.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/EmptyParams.java @@ -1,7 +1,4 @@ package ru.spcex.clearing.reports.builders; -/** - * Класс для формирования отчета без параметров - */ public class EmptyParams { } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/SessionIdParam.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/SessionIdParam.java index 1e5657052..b030d5a09 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/SessionIdParam.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/SessionIdParam.java @@ -2,9 +2,6 @@ package ru.spcex.clearing.reports.builders; import java.util.List; -/** - * Параметры для формирования отчета по SessionId - */ public class SessionIdParam { private List sessionId; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepTradesReportBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepTradesReportBuilder.java index 36236c6f6..4e6b672b7 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepTradesReportBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/builders/ks/KSRepTradesReportBuilder.java @@ -140,7 +140,6 @@ public class KSRepTradesReportBuilder extends CSVReportBuilder reportRequestGREPValidator( - Map> imdgForValidation + Map> imdgForValidation ) { return launcherCommandRequest -> { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(launcherCommandRequest); return new ValidatorImpl<>(context, - FieldRequiredRule.instance( - "sessionId", - LauncherCommandRequest::getSessionId, - ReportError.RequiredFieldEmpty, - false) + FieldRequiredRule.instance( + "sessionId", + LauncherCommandRequest::getSessionId, + ReportError.RequiredFieldEmpty, + false) ); }; } - // todo оставил бин валидатора на будущее, если в дальнейшем придется проверять запрос. в текущей версии, по факту, - // запрос не проверяется: в случае если sessionId не указан отчеты не строятся @Bean("reportRequestGRETValidator") public Function reportRequestGRETValidator( - Map> imdgForValidation + Map> imdgForValidation ) { return launcherCommandRequest -> { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(launcherCommandRequest); return new ValidatorImpl<>(context, - FieldRequiredRule.instance( - "sessionId", - LauncherCommandRequest::getSessionId, - ReportError.RequiredFieldEmpty, - false) + FieldRequiredRule.instance( + "sessionId", + LauncherCommandRequest::getSessionId, + ReportError.RequiredFieldEmpty, + false) ); }; } - // todo оставил бин валидатора на будущее, если в дальнейшем придется проверять запрос. в текущей версии, по факту, - // запрос не проверяется: в случае если sessionId не указан отчеты не строятся @Bean("reportRequestGREFValidator") public Function reportRequestGREFValidator( - Map> imdgForValidation + Map> imdgForValidation ) { return launcherCommandRequest -> { ImdgValidationContext context = new ImdgValidationContext<>(); context.setValidatedObject(launcherCommandRequest); return new ValidatorImpl<>(context, - FieldRequiredRule.instance( - "sessionId", - LauncherCommandRequest::getSessionId, - ReportError.RequiredFieldEmpty, - false) + FieldRequiredRule.instance( + "sessionId", + LauncherCommandRequest::getSessionId, + ReportError.RequiredFieldEmpty, + false) ); }; } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java index fc2a0861c..752ff4650 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/DOCXService.java @@ -18,45 +18,16 @@ import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import java.util.stream.Collectors; -/** - * todo Пока неизвестно нужны ли будут ещё эти уведомления, поэтому весь связанный код переместил в один пакет - *

- * Сервис для работы с DOCX файлами - * Читает шаблон .docx и во всех текстовых элементах меняет переданные ключи на соответствующие им значения - * Пример ключа по умолчанию: ${ключ} - *

- * При использовании нового шаблона, необходимо отредактировать docx документ так, чтобы ключ содержался в одном - * элементе. Для этого нужно вырезать ключ и в это же место вставить его как текст, без форматирования. Если нужно, - * идентификатору потом можно установить стиль, который будет применён к вставляемой строке. - */ public class DOCXService { private final Logger log = LoggerFactory.getLogger(getClass()); - /** - * Паттерн поиска ключей в файле по умолчанию - */ private final Pattern DEFAULT_KEY_PATTERN = Pattern.compile("\\$\\{.*?}"); - /** - * При инициализации сохраняет все имеющиеся ключи (ищет по маске keyPattern), найденные в текстовых элементах документа - */ private List keyPositions = new LinkedList<>(); - /** - * Паттерн поиска ключей в файле - */ private Pattern keyPattern = DEFAULT_KEY_PATTERN; - /** - * Файл шаблона - */ private URL templateFile; - /** - * Флаг инициализации - */ private boolean initialized = false; - /** - * (ре)Инициализация сервиса - */ public boolean init(URL templateFile, String keyPattern) { initialized = false; if (templateFile == null) { @@ -80,16 +51,6 @@ public class DOCXService { return true; } - /** - * Вставка значений в шаблон. Шаблон может содержать любое количество ключей, при этом эти ключи должны содержаться в - * valuesMap. - * - * @param outputFile Выходной файл. Должен быть либо файлом (будет перезаписан), либо отсутствовать - * @param valuesMap Мапа значений. В файле шаблона будут искаться ключи этой мапы и заменяться на соответствующие значения. - * @param checkKeys True - строгий режим, где будет проверено наличие всех ключей из файла в valuesMap. - * False - мягкий режим, отсутствующие ключи будут пропущены - * @return true - если вставка прошла успешно - */ public boolean insertValues(File outputFile, Map valuesMap, boolean checkKeys) throws Exception { @@ -129,8 +90,8 @@ public class DOCXService { boolean checkOk = checkIntersection(valuesMap, notPresentInMap); if (!checkOk) { log.error("Can't insert values in file {}. Keys not in map: {}.", - templateFile.toExternalForm(), - String.join(", ", notPresentInMap)); + templateFile.toExternalForm(), + String.join(", ", notPresentInMap)); return false; } } @@ -143,17 +104,12 @@ public class DOCXService { return true; } - /** - * Проверка прочтённых ключей (keyPositions) и переданных (valuesMap.keySet()) на соответствие. - * Для успешной вставки мапа должна содержать все ключи, имеющиеся в файле. - * Метод вызывается для проверки только в строгом режиме - */ private boolean checkIntersection(Map valuesMap, List notPresentInMap) { Set keysFromMap = valuesMap.keySet(); Set keysFromFile = keyPositions.stream().map(keyPosition -> keyPosition.key).collect(Collectors.toSet()); List intersection = keysFromMap.stream() - .filter(keysFromFile::contains) - .collect(Collectors.toList()); + .filter(keysFromFile::contains) + .collect(Collectors.toList()); if (intersection.size() == keysFromFile.size()) return true; List notPresent = new LinkedList<>(keysFromFile); @@ -163,9 +119,6 @@ public class DOCXService { return false; } - /** - * Вставка значений в элементы XWPFRun - */ private void insertValues(Map valuesMap) { for (KeyPositionInDoc keyPosition : keyPositions) { String key = keyPosition.key; @@ -182,10 +135,6 @@ public class DOCXService { } } - /** - * Сбор ключей из таблицы. - * Ячейка таблицы может являться как параграфом, так и таблицей, поэтому метод работает рекурсивно - */ private void collectKeysFromTable(XWPFTable srcTable) { for (XWPFTableRow row : srcTable.getRows()) { for (XWPFTableCell cell : row.getTableCells()) { @@ -200,9 +149,6 @@ public class DOCXService { } } - /** - * Сбор ключей из параграфа - */ private void collectKeysFromParagraph(XWPFParagraph paragraph) { XWPFRun runForConcat = null; int first = 0; @@ -222,12 +168,6 @@ public class DOCXService { String key = matcher.group(); keyPositions.add(new KeyPositionInDoc(key, run, currPos)); } - /** - * если ключ не нашли регуляркой но есть начало ключа "${" соберем ключ из фрагментов и отделим от текста - * например из фрагментов XWPFRun(учитывается только текст): - * [test , someText${, some, Key}/${ano, ther, Key}someText, test] - * получим [test , someText, ${someKey}, /, ${anotherKey}, someText, test] - */ if (needConcat) { concatText = concatText + currText; if (currText.contains("}")) { @@ -267,7 +207,6 @@ public class DOCXService { } } } catch (IndexOutOfBoundsException ignored) { - // can't get all max text position for XWPFRun } } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java index e1ac4bb34..1da170fb6 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/notifications/NotificationBuilder.java @@ -82,7 +82,6 @@ public abstract class NotificationBuilder { if (companySymbolsCollection.size() >= 1) { companySymbols = companySymbolsCollection.iterator().next(); } else { -// log.warn("CompanySymbols with sql {} not found", companySymbolsSql); return ""; } return companySymbols.getCompanySymbolValue(); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java index af693ac74..ad1bd01c3 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/NotificationService.java @@ -114,7 +114,6 @@ public class NotificationService extends QueueConsumer implements InitializingBe private void sendFilesToSftp(Collection files) { for (File file : files) { -// notificationsSftpGateway.sendToSftp(file); if (deleteAfterSend) { boolean delete = file.delete(); if (!delete) { diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilderTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilderTest.java index f5624dc34..f59d67da6 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilderTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NCMPNotificationBuilderTest.java @@ -77,8 +77,6 @@ class NCMPNotificationBuilderTest { companySymbols.setCompanySymbol("RGRC"); companySymbols.setCompanySymbolValue("RGRC test"); companySymbolsImdg.insert(companySymbols); - -// clearAllInImdg(accountImdg); Account account = new Account(); account.setId(consumerId); account.setCompanyId(consumerId); @@ -87,7 +85,6 @@ class NCMPNotificationBuilderTest { accountImdg.insert(account); } - // @Test//тест заполнения шаблона void buildNotification() { NCMPNotificationBuilder builder = new NCMPNotificationBuilder(imdgProvider); File outputFile = builder.buildNotification(consumerId); diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java index 2788f0fc7..9b9668ae8 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/notifications/NTCRNotificationBuilderTest.java @@ -71,7 +71,6 @@ class NTCRNotificationBuilderTest { tradingClearingRegistryImdg.insert(tradingClearingRegistry); } -// @Test//тест заполнения шаблона void buildNotification() { NTCRNotificationBuilder builder = new NTCRNotificationBuilder(imdgProvider); File outputFile = builder.buildNotification(consumerId); diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java index bb13c0e57..0d3c18948 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/DOCXServiceTest.java @@ -32,7 +32,6 @@ class DOCXServiceTest { file.delete(); } -// @Test//для отладки алгоритма объединения ключей в методе DOCXService.collectKeysFromParagraph(XWPFParagraph paragraph) void normalize() { List data = Arrays.asList(new String[]{"test ", "someText${", "some", "Key}/${ano", "ther", "Key}someText", "test"}); @@ -57,16 +56,15 @@ class DOCXServiceTest { System.out.println(strAr); int last = data.indexOf(currText); - for (int i = first; i <= last; i++){ - if (i - first < 3){ + for (int i = first; i <= last; i++) { + if (i - first < 3) { data.set(i, strAr[i - first]); - } - else { + } else { data.set(i, ""); } } currText = strAr[2]; - if (currText.contains("${")){ + if (currText.contains("${")) { needConcat = true; concatText = currText; first = data.indexOf(currText); @@ -83,7 +81,6 @@ class DOCXServiceTest { } } catch (IndexOutOfBoundsException ignored) { - // can't get all max text position for XWPFRun } } System.out.println(data.toString()); diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java index 04b5531be..5e3ec5bc2 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_BP.java @@ -194,8 +194,6 @@ public class ReportServiceTest_BP { testExecutionFond.setSessionId(TEST_SESSION_ID_3); executionFondImdg.update(testExecutionFond); - - // TEST INFTYPE_1 testExecutionFond.setTradingDate(LocalDate.now().minus(10, ChronoUnit.DAYS)); testExecutionFond.setSettlementDate(LocalDate.now()); testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey()); @@ -205,10 +203,10 @@ public class ReportServiceTest_BP { String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(), - Consts.CREATE_REPORT_FOR_SESSION_ID, - reportRequestWithSessionIdCnt++, - 0, - jsonString); + Consts.CREATE_REPORT_FOR_SESSION_ID, + reportRequestWithSessionIdCnt++, + 0, + jsonString); TestUtils.waitingSendAndCheckRecord(0L, producer); @@ -247,8 +245,6 @@ public class ReportServiceTest_BP { testExecutionFond.setSessionId(TEST_SESSION_ID_3); executionFondImdg.update(testExecutionFond); - - // TEST INFTYPE_2 testExecutionFond.setTradingDate(LocalDate.now()); testExecutionFond.setSettlementDate(LocalDate.now()); testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey()); @@ -258,10 +254,10 @@ public class ReportServiceTest_BP { String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(), - Consts.CREATE_REPORT_FOR_SESSION_ID, - reportRequestWithSessionIdCnt++, - 0, - jsonString); + Consts.CREATE_REPORT_FOR_SESSION_ID, + reportRequestWithSessionIdCnt++, + 0, + jsonString); TestUtils.waitingSendAndCheckRecord(0L, producer); @@ -297,8 +293,6 @@ public class ReportServiceTest_BP { final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate(); final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate(); final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus(); - - // TEST INFTYPE_3 testExecutionFond.setSettlementDate(LocalDate.now().plus(10, ChronoUnit.DAYS)); testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS)); testExecutionFond.setCoverageStatus(Allowed.ALLOWED.getKey()); @@ -308,10 +302,10 @@ public class ReportServiceTest_BP { String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(), - Consts.CREATE_REPORT_FOR_SESSION_ID, - reportRequestWithSessionIdCnt++, - 0, - jsonString); + Consts.CREATE_REPORT_FOR_SESSION_ID, + reportRequestWithSessionIdCnt++, + 0, + jsonString); TestUtils.waitingSendAndCheckRecord(0L, producer); @@ -347,8 +341,6 @@ public class ReportServiceTest_BP { final LocalDate oldExecutionFondTradingDate = testExecutionFond.getTradingDate(); final LocalDate oldExecutionFondSettlementDate = testExecutionFond.getSettlementDate(); final String oldExecutionFondCoverageStatus = testExecutionFond.getCoverageStatus(); - - // TEST INFTYPE_4 testExecutionFond.setSessionId(TEST_SESSION_ID_1); testExecutionFond.setSettlementDate(LocalDate.now()); testExecutionFond.setTradingDate(LocalDate.now().plus(10, ChronoUnit.DAYS)); @@ -359,10 +351,10 @@ public class ReportServiceTest_BP { String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(), - Consts.CREATE_REPORT_FOR_SESSION_ID, - reportRequestWithSessionIdCnt++, - 0, - jsonString); + Consts.CREATE_REPORT_FOR_SESSION_ID, + reportRequestWithSessionIdCnt++, + 0, + jsonString); TestUtils.waitingSendAndCheckRecord(0L, producer); @@ -509,7 +501,6 @@ public class ReportServiceTest_BP { testExecutionFond.setCounterPartyId(TEST_COUNTER_PARTY_ID_1); testExecutionFond.setCoverageStatus(TEST_COVERAGE_STATUS_1); testExecutionFond.setSessionId(TEST_SESSION_ID_1); -// testExecutionFond.setClearingDate(TEST_CLEARING_DATE_1); testExecutionFond.setClearingDate(LocalDate.now()); Long TEST_EXCHANGE_ORDER_ID = 20007L; testExecutionFond.setExchangeOrderId(TEST_EXCHANGE_ORDER_ID); diff --git a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java index 5b0eafc3c..0f67e20d0 100644 --- a/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java +++ b/clearing-parent/reports-service/src/test/java/ru/spcex/clearing/reports/services/ReportServiceTest_KS.java @@ -473,17 +473,15 @@ public class ReportServiceTest_KS { String jsonString = TestUtils.getJsonStringForSystem(reportRequest, 0L); TestUtils.addRecordToKafka((MockConsumer) reportService.getConsumer(), - Consts.CREATE_REPORT, - reportRequestCnt++, - 0, - jsonString); + Consts.CREATE_REPORT, + reportRequestCnt++, + 0, + jsonString); TestUtils.waitingSendAndCheckRecord(0L, producer); File outFile = outFolder.listFiles()[0]; File expectedFile = new File(getClass().getClassLoader().getResource("expected_reports_csv/ks/KS_REP_CASH_REGISTER_SUMS_expected.csv").getFile()); - // account не проверяем, строки могут быть в разной последовательности - // главное что есть проверка на 3 строки, и что все остальные поля есть compareCSVFiles(expectedFile, outFile, Arrays.asList("FIRMID", "ADD_DATE", "ADD_TIME")); registryImdg.delete(registry_1); diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/validation/PlannerTemplateValidationConfig.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/validation/PlannerTemplateValidationConfig.java index 75f864dc1..5361114c7 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/validation/PlannerTemplateValidationConfig.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/validation/PlannerTemplateValidationConfig.java @@ -43,41 +43,37 @@ public class PlannerTemplateValidationConfig { addImdg.accept(IMDGDistributedNames.Map_Company); addImdg.accept(IMDGDistributedNames.Map_Security); return new ValidatorImpl<>(context, - DictionaryPresentRule.instance("task", - PlannerTemplateNewRequest::getTask, - IMDGDistributedNames.Map_TaskDictionary, - TaskDictionary.class), -// TimeNotBeforeRule.instance("taskTime", -// PlannerTemplateNewRequest::getTaskTime, -// true, -// false), - DictionaryPresentRule.instance("taskStatus", - PlannerTemplateNewRequest::getTaskStatus, - IMDGDistributedNames.Map_TaskStatusDictionary, - TaskStatusDictionary.class), - EnumPresentRule.instance("section", - PlannerTemplateNewRequest::getSection, - Section.values(), - false), - DictionaryPresentRule.instance("sessionType", - PlannerTemplateNewRequest::getSessionType, - IMDGDistributedNames.Map_SessionTypeDictionary, - SessionTypeDictionary.class, - false), - IdPresentRule.instance("companyId", - PlannerTemplateNewRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - ValidationError.CompanyNotFound, - false, - company -> WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive), - IdPresentRule.instance("securityId", - PlannerTemplateNewRequest::getSecurityId, - IMDGDistributedNames.Map_Security, - Security.class, - ValidationError.SecurityNotFound, - false, - security -> WorkflowStatus.Active.equalsByKey(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive) + DictionaryPresentRule.instance("task", + PlannerTemplateNewRequest::getTask, + IMDGDistributedNames.Map_TaskDictionary, + TaskDictionary.class), + DictionaryPresentRule.instance("taskStatus", + PlannerTemplateNewRequest::getTaskStatus, + IMDGDistributedNames.Map_TaskStatusDictionary, + TaskStatusDictionary.class), + EnumPresentRule.instance("section", + PlannerTemplateNewRequest::getSection, + Section.values(), + false), + DictionaryPresentRule.instance("sessionType", + PlannerTemplateNewRequest::getSessionType, + IMDGDistributedNames.Map_SessionTypeDictionary, + SessionTypeDictionary.class, + false), + IdPresentRule.instance("companyId", + PlannerTemplateNewRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + ValidationError.CompanyNotFound, + false, + company -> WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive), + IdPresentRule.instance("securityId", + PlannerTemplateNewRequest::getSecurityId, + IMDGDistributedNames.Map_Security, + Security.class, + ValidationError.SecurityNotFound, + false, + security -> WorkflowStatus.Active.equalsByKey(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive) ); }; } @@ -95,48 +91,44 @@ public class PlannerTemplateValidationConfig { addImdg.accept(IMDGDistributedNames.Map_Company); addImdg.accept(IMDGDistributedNames.Map_Security); return new ValidatorImpl<>(context, - IdPresentRule.instance("id", - PlannerTemplateUpdateRequest::getId, - IMDGDistributedNames.Map_PlannerTemplate, - PlannerTemplate.class, - ValidationError.RecordNotFound), - DictionaryPresentRule.instance("task", - PlannerTemplateUpdateRequest::getTask, - IMDGDistributedNames.Map_TaskDictionary, - TaskDictionary.class, - false), -// TimeNotBeforeRule.instance("taskTime", -// PlannerTemplateUpdateRequest::getTaskTime, -// false, -// false), - DictionaryPresentRule.instance("taskStatus", - PlannerTemplateUpdateRequest::getTaskStatus, - IMDGDistributedNames.Map_TaskStatusDictionary, - TaskStatusDictionary.class, - false), - EnumPresentRule.instance("section", - PlannerTemplateUpdateRequest::getSection, - Section.values(), - false), - DictionaryPresentRule.instance("sessionType", - PlannerTemplateUpdateRequest::getSessionType, - IMDGDistributedNames.Map_SessionTypeDictionary, - SessionTypeDictionary.class, - false), - IdPresentRule.instance("companyId", - PlannerTemplateUpdateRequest::getCompanyId, - IMDGDistributedNames.Map_Company, - Company.class, - ValidationError.CompanyNotFound, - false, - company -> WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive), - IdPresentRule.instance("securityId", - PlannerTemplateUpdateRequest::getSecurityId, - IMDGDistributedNames.Map_Security, - Security.class, - ValidationError.SecurityNotFound, - false, - security -> WorkflowStatus.Active.equalsByKey(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive) + IdPresentRule.instance("id", + PlannerTemplateUpdateRequest::getId, + IMDGDistributedNames.Map_PlannerTemplate, + PlannerTemplate.class, + ValidationError.RecordNotFound), + DictionaryPresentRule.instance("task", + PlannerTemplateUpdateRequest::getTask, + IMDGDistributedNames.Map_TaskDictionary, + TaskDictionary.class, + false), + DictionaryPresentRule.instance("taskStatus", + PlannerTemplateUpdateRequest::getTaskStatus, + IMDGDistributedNames.Map_TaskStatusDictionary, + TaskStatusDictionary.class, + false), + EnumPresentRule.instance("section", + PlannerTemplateUpdateRequest::getSection, + Section.values(), + false), + DictionaryPresentRule.instance("sessionType", + PlannerTemplateUpdateRequest::getSessionType, + IMDGDistributedNames.Map_SessionTypeDictionary, + SessionTypeDictionary.class, + false), + IdPresentRule.instance("companyId", + PlannerTemplateUpdateRequest::getCompanyId, + IMDGDistributedNames.Map_Company, + Company.class, + ValidationError.CompanyNotFound, + false, + company -> WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus()) ? null : ValidationError.CompanyNotActive), + IdPresentRule.instance("securityId", + PlannerTemplateUpdateRequest::getSecurityId, + IMDGDistributedNames.Map_Security, + Security.class, + ValidationError.SecurityNotFound, + false, + security -> WorkflowStatus.Active.equalsByKey(security.getWorkflowStatus()) ? null : ValidationError.SecurityNotActive) ); }; } diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/error/ValidationError.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/error/ValidationError.java index 68c1e5fb7..83c2025a5 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/error/ValidationError.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/error/ValidationError.java @@ -6,7 +6,7 @@ public enum ValidationError implements IErrorEnumId { UserVerifyDenial(18001L), EmptyRequiredValue(18002L), WrongDictionaryValue(18003L), - WrongEnumValue(777L), //todo set code + WrongEnumValue(777L), RecordNotFound(7006L), TaskForPastDate(7016L), TaskForPastTime(7011L), diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java index 31dc9c814..e3bf8204a 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/ClearingCalendarService.java @@ -102,7 +102,6 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi clearingCalendar.setDayStatus(req.getDayStatus()); clearingCalendarMap.insert(clearingCalendar); log.debug("successfully processed, new id {}", clearingCalendar.getId()); - //если clearingCalendar.getClearingDate() сегодняшний день необходимо проверить/добавить plannerTemplate createPlannerAllTodayFromPlannerTemplateIfIsValidWorkday(clearingCalendar); return null; } @@ -124,7 +123,6 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi clearingCalendar.setUpdated(updated); clearingCalendarMap.update(clearingCalendar); log.debug("successfully processed, new id {}", clearingCalendar.getId()); - //если clearingCalendar.getClearingDate() сегодняшний день необходимо проверить/добавить plannerTemplate createPlannerAllTodayFromPlannerTemplateIfIsValidWorkday(clearingCalendar); return null; } @@ -165,17 +163,13 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi public void deleteFromPlannerAllTodayMap() { LocalDate currentDate = LocalDate.now(); boolean isWeekend = Arrays.asList(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY).contains(currentDate.getDayOfWeek()); - //проверим есть ли другие записи clearingCalendar с таким же clearingDate, если они актуальные ничего не удаляем Collection clearingCalendars = clearingCalendarMap.getCollectionObjectsByFieldValues(Map.of("dayStatus", DayStatus.Workday.getKey(), - "clearingDate", currentDate)); + "clearingDate", currentDate)); if (clearingCalendars != null && !clearingCalendars.isEmpty()) { for (ClearingCalendar calendar : clearingCalendars) { - //если будет хоть один валидные ClearingCalendar на сегодня на основании которого(и plannerTemplate -ов) могли быть созданы PlannerAllToday - //ничего проверять\удалять дальше не будем if (isWorkDayByTradingCalendar(calendar, isWeekend)) return; } } - //удалим все PlannerAllToday созданные на основании plannerTemplate кроме созданных на основании planner Collection values = plannerAllTodayMap.getCollectionObjectsByFieldValues(Map.of("parent", Parent.Template.getKey())); values.forEach(plannerAllToday -> { diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherSender.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherSender.java index 9dc370d41..3219c479d 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherSender.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherSender.java @@ -35,7 +35,6 @@ public class LauncherSender { Object toRequest; LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest(); taskRunnerCommandRequest.setTaskName(byTask.getTask()); -// taskRunnerCommandRequest.setMarket(byTask.getMarket()); taskRunnerCommandRequest.setSection(byTask.getSection()); taskRunnerCommandRequest.setSessionType(byTask.getSessionType()); taskRunnerCommandRequest.setCompanyId(byTask.getCompanyId()); @@ -47,13 +46,13 @@ public class LauncherSender { request.setId(idGenerator.nextId()); request.setActionType(ActionType.NEW); request.setUserId(userId); - request.setRequestPayload(toRequest);// iAction.toRequest() + request.setRequestPayload(toRequest); return request; } public void sendCommandToQueue(Task toTaskQueue, PlannerAllToday task, Long userId) { BaseRequest request = makeCmdRequest(task, userId); - String destination = toTaskQueue.topic(); // "launcher-" + getKey() + String destination = toTaskQueue.topic(); log.debug("Send command {} to {}", toTaskQueue, destination); Future send = kafka.send(new ProducerRecord<>(destination, request)); try { diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java index 61dcf3a23..4dd0ed427 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/LauncherService.java @@ -102,7 +102,7 @@ public class LauncherService extends QueueConsumer implements InitializingBean { final String destination = Consts.PAYMENT_INSTRUCTION_CLEARING_OUTBOUND_ACTION; BaseRequest request = new BaseRequest<>(); - request.setId(userRequest.getId()); // для уведомлений фронтэнда + request.setId(userRequest.getId()); request.setActionType(userRequest.getActionType()); request.setRequestPayload(req); request.setUserId(userRequest.getUserId()); @@ -122,9 +122,6 @@ public class LauncherService extends QueueConsumer implements InitializingBean { } } - /** - * Требуется вернуть статус Processing, т.к. окончательный Success/Error будет потом - */ RequestInfoUpdate makeTempRoutingResponse(BaseRequest about) { RequestInfoUpdate successRouting = new RequestInfoUpdate(); successRouting.setId(about.getId()); diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java index 80aca5e96..b3b8aeff5 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerService.java @@ -97,7 +97,6 @@ public class PlannerService extends QueueConsumer implements InitializingBean { planner.setClearingDate(req.getClearingDate()); planner.setSection(req.getSection()); planner.setSessionType(req.getSessionType()); -// planner.setMarket(req.getSection()); planner.setTaskStatus(req.getTaskStatus()); planner.setCompanyId(req.getCompanyId()); planner.setSecurityId(req.getSecurityId()); @@ -122,14 +121,13 @@ public class PlannerService extends QueueConsumer implements InitializingBean { Planner planner = plannerMap.getSingleObjectByID(req.getId()); LocalDate currentDate = LocalDate.now(); if (planner.getClearingDate() != null && currentDate.equals(planner.getClearingDate()) - && !currentDate.equals(req.getClearingDate()) && planner.getTaskStatus() != null) { + && !currentDate.equals(req.getClearingDate()) && planner.getTaskStatus() != null) { deletePlannerAllToday(planner); } planner.setUpdated(Instant.now()); planner.setTask(req.getTask()); planner.setTaskTime(req.getTaskTime()); planner.setClearingDate(req.getClearingDate()); -// planner.setMarket(req.getSection()); planner.setSection(req.getSection()); planner.setSessionType(req.getSessionType()); planner.setTaskStatus(req.getTaskStatus()); diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java index 16a506fbe..78e0aad64 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/PlannerTemplateService.java @@ -98,7 +98,6 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin plannerTemplate.setUpdated(created); plannerTemplate.setTask(req.getTask()); plannerTemplate.setTaskTime(req.getTaskTime()); -// plannerTemplate.setMarket(Market.mkrs.getKey()); plannerTemplate.setSection(req.getSection()); plannerTemplate.setSessionType(req.getSessionType()); plannerTemplate.setTaskStatus(req.getTaskStatus()); @@ -179,7 +178,6 @@ public class PlannerTemplateService extends QueueConsumer implements Initializin private boolean todayWorkDay() { LocalDate currentDate = LocalDate.now(); boolean isWeekend = Arrays.asList(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY).contains(currentDate.getDayOfWeek()); - //проверим есть ли другие записи clearingCalendar с таким же clearingDate, если они актуальные ничего не удаляем Collection clearingCalendars = clearingCalendarMap.getCollectionObjectsByFieldValues(Map.of("clearingDate", currentDate)); if (clearingCalendars != null && !clearingCalendars.isEmpty()) { for (ClearingCalendar calendar : clearingCalendars) { diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java index 9b0cd4010..494cba7b5 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/TaskManager.java @@ -27,14 +27,10 @@ import static ru.spcex.clearing.imdg.IMDGDistributedNames.Map_PlannerAllToday; import static ru.spcex.platform.enumeration.Status.*; import static ru.spcex.platform.utils.enumeration.IEnumKey.getEnumByKey; -/** - * Планировщик задач, расписание берёт из Hazelcast map. - *

- */ @Service("userReportTask") public class TaskManager implements InitializingBean, AutoCloseable { private static final Logger log = LoggerFactory.getLogger(TaskManager.class); - public static final Long systemId = 0L;//для системных задач по договоренности, должен быть пользователь с правами админа и id=0L + public static final Long systemId = 0L; private final TaskScheduler taskScheduler; private final ImdgProvider imdgProvider; @@ -71,7 +67,6 @@ public class TaskManager implements InitializingBean, AutoCloseable { callbacks.put(Process.update, this::entryUpdated); callbacks.put(Process.delete, this::entryRemoved); scheduledJobs = new ConcurrentHashMap<>(); - //если сервис стартовал раньше imdg, дождемся создания всех PlannerAllToday. imdgProvider.waitAvailable(); updateScheduler(); process(); @@ -81,7 +76,6 @@ public class TaskManager implements InitializingBean, AutoCloseable { outputExecutor.submit(() -> { while (!closed.get()) { try { - //процесс ожидает пока появится новое сообщение в очереди Map.Entry entry = plannerQueue.take(); callbacks.get(entry.getKey()).accept(entry.getValue()); } catch (InterruptedException e) { @@ -94,23 +88,20 @@ public class TaskManager implements InitializingBean, AutoCloseable { }); } - // --- Обработчики PlannerAllToday --- public void entryAdded(PlannerAllToday task) { String taskStatus = task.getTaskStatus(); if (taskStatus == null) { log.warn("Task skipped, {} task status not recognized", task.getTask()); return; } - if (Active.equalsByKey(taskStatus)) { //&& ACTIVE.equalsById(task.getTaskStatusId()) + if (Active.equalsByKey(taskStatus)) { addOrUpdateActiveTask(task); } } public void entryUpdated(PlannerAllToday plannerAllToday) { - PlannerAllToday task = plannerAllTodayMap.getSingleObjectByID(plannerAllToday.getId());//event.getValue(); - PlannerAllToday oldTask = plannerAllToday;//event.getOldValue(); - - //если таск относится к другому обработчику, пропускаем + PlannerAllToday task = plannerAllTodayMap.getSingleObjectByID(plannerAllToday.getId()); + PlannerAllToday oldTask = plannerAllToday; if (!Objects.equals(task.getTask(), oldTask.getTask())) { log.debug("Trying to cancel task type {} and add task type {}", oldTask.getTask(), task.getTask()); @@ -120,9 +111,9 @@ public class TaskManager implements InitializingBean, AutoCloseable { log.warn("Task skipped, {} task status not recognized", task.getTask()); return; } - if (Active.equalsByKey(taskStatus)) { //&& ACTIVE.equalsById(task.getTaskStatusId()) + if (Active.equalsByKey(taskStatus)) { addOrUpdateActiveTask(task); - } else if (Cancel.equalsByKey(taskStatus)) { //&& TaskStatuses.CANCEL.equalsById(task.getTaskStatusId()) + } else if (Cancel.equalsByKey(taskStatus)) { if (removeTask(task.getTask(), task.getId())) log.debug("Task {} was successfully deleted after update to cancel", task.getTask()); else log.debug("No task {} for deleted after update to cancel", task.getTask()); @@ -156,18 +147,16 @@ public class TaskManager implements InitializingBean, AutoCloseable { } } - // --- Планирование задач --- protected void updateScheduler() { Collection schedulerAllTodays = plannerAllTodayMap.getAllValues(); Collection sortedSchedulers = - schedulerAllTodays.stream().sorted((o1, o2) -> (Active.equalsByKey(o1.getTaskStatus()) && Cancel.equalsByKey(o2.getTaskStatus())) ? -1 : 0) - .collect(Collectors.toCollection(ArrayList::new)); + schedulerAllTodays.stream().sorted((o1, o2) -> (Active.equalsByKey(o1.getTaskStatus()) && Cancel.equalsByKey(o2.getTaskStatus())) ? -1 : 0) + .collect(Collectors.toCollection(ArrayList::new)); for (PlannerAllToday schedulerAllToday : sortedSchedulers) { addOrUpdateActiveTask(schedulerAllToday); } } - // --- Работа с задачами --- private void addOrUpdateActiveTask(PlannerAllToday task) { LocalTime taskTime = task.getTaskTime(); Task taskType = getEnumByKey(Task.class, task.getTask()); @@ -188,16 +177,14 @@ public class TaskManager implements InitializingBean, AutoCloseable { log.debug("Task skipped - taskType {} time {} with status CANCEL", Objects.requireNonNull(taskType).getKey(), taskTime); return; } - //чтобы не получилось, что старый таск не успели отменить а новый уже создали. if (taskTime.isBefore(LocalTime.now().plusSeconds(1))) { log.debug("Task skipped - taskTime {} is before now, taskType {}", taskTime, task.getTask()); return; } - //пришел активный таск log.debug("Adding task type {}, time {}", Objects.requireNonNull(taskType).getKey(), taskTime); ScheduledFuture future = taskScheduler.schedule(() -> doJob(task), LocalDateTime.of(LocalDate.now(), taskTime).atZone(ZoneId.systemDefault()).toInstant()); ScheduledFuture oldFuture = scheduledJobs.put(task.getId(), future); - if (oldFuture != null && !oldFuture.isCancelled()) { //for synchronization, never + if (oldFuture != null && !oldFuture.isCancelled()) { log.warn("Tasks were added simultaneously, cancel former one"); boolean success = oldFuture.cancel(false); log.warn("Cancelling task " + (success ? "success" : "fail")); @@ -213,13 +200,10 @@ public class TaskManager implements InitializingBean, AutoCloseable { return future.cancel(false); } - // --- Реализация выполнения задач --- - protected void doJob(PlannerAllToday task) { Task taskE = getEnumByKey(Task.class, task.getTask()); if (taskE != null) { log.debug("LauncherCommandRequest received"); - // 1. cохранить команду Instant created = Instant.now(); Launcher launcher = new Launcher(); launcher.setTask(task.getTask()); @@ -227,7 +211,6 @@ public class TaskManager implements InitializingBean, AutoCloseable { launcher.setCreated(created); launcher.setUpdated(created); launcherMap.insert(launcher); - // 2. отправить сообщение launcherSender.sendCommandToQueue(taskE, task, systemId); log.debug("Successfully processed, new id {}", launcher.getId()); } diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateAfterTodayRule.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateAfterTodayRule.java index 804131d46..51af91a9d 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateAfterTodayRule.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateAfterTodayRule.java @@ -9,27 +9,13 @@ import java.time.LocalDate; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с LocalDate. Условие проверки: поверяемая дата > текущая дата - * @param Класс проверяемого объекта - */ -public record DateAfterTodayRule(String fieldName, Function getter, boolean required) implements IValidationRule> { +public record DateAfterTodayRule(String fieldName, Function getter, + boolean required) implements IValidationRule> { - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемой даты - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ public static DateAfterTodayRule instance(String fieldName, Function getter, boolean required) { return new DateAfterTodayRule<>(fieldName, getter, required); } - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемой даты - * @param Класс проверяемого объекта - */ public static DateAfterTodayRule instance(String fieldName, Function getter) { return new DateAfterTodayRule<>(fieldName, getter, true); } diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateNotBeforeRule.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateNotBeforeRule.java index b1df393c6..d25414dc1 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateNotBeforeRule.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DateNotBeforeRule.java @@ -9,27 +9,13 @@ import java.time.LocalDate; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с LocalDate. Условие проверки: поверяемая дата >= текущая дата - * @param Класс проверяемого объекта - */ -public record DateNotBeforeRule(String fieldName, Function getter, boolean required) implements IValidationRule> { +public record DateNotBeforeRule(String fieldName, Function getter, + boolean required) implements IValidationRule> { - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемой даты - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ public static DateNotBeforeRule instance(String fieldName, Function getter, boolean required) { return new DateNotBeforeRule<>(fieldName, getter, required); } - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемой даты - * @param Класс проверяемого объекта - */ public static DateNotBeforeRule instance(String fieldName, Function getter) { return new DateNotBeforeRule<>(fieldName, getter, true); } diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DictionaryPresentRule.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DictionaryPresentRule.java index 999f484bb..7ac07da51 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DictionaryPresentRule.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/DictionaryPresentRule.java @@ -13,26 +13,12 @@ import java.util.Collection; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с кодом из словаря (таблицы *_dictionary) - * @param Класс проверяемого объекта - * @param Класс словаря - */ public record DictionaryPresentRule(String fieldName, Function getter, String dictionaryName, Class dictionaryClass, boolean required) implements IValidationRule> { - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param dictionaryName Название словаря (см. IMDGDistributedNames) - * @param dictionaryClass Класс словаря (классы *Dictionary.class) - * @param required Флаг обязательности - * @param Класс проверяемого объекта - * @param Класс словаря - */ public static DictionaryPresentRule instance(String fieldName, Function getter, String dictionaryName, @@ -41,14 +27,6 @@ public record DictionaryPresentRule(String fiel return new DictionaryPresentRule<>(fieldName, getter, dictionaryName, dictionaryClass, required); } - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param dictionaryName Название словаря (см. IMDGDistributedNames) - * @param dictionaryClass Класс словаря (классы *Dictionary.class) - * @param Класс проверяемого объекта - * @param Класс словаря - */ public static DictionaryPresentRule instance(String fieldName, Function getter, String dictionaryName, @@ -62,8 +40,8 @@ public record DictionaryPresentRule(String fiel String enumCode = getter.apply(validatedObject); if (enumCode == null) return required ? of(ValidationError.EmptyRequiredValue, fieldName) : empty(); Imdg dictImdg = context.obtainMap( - dictionaryName, - dictionaryClass + dictionaryName, + dictionaryClass ); ImdgPredicateBuilder imdgPredicateBuilder = dictImdg.predicateBuilder(); ImdgPredicate imdgPredicate = imdgPredicateBuilder.equals("code", enumCode); diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/EnumPresentRule.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/EnumPresentRule.java index 39e53a19a..43ff328ef 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/EnumPresentRule.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/EnumPresentRule.java @@ -9,24 +9,11 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля со значением из множества (enum) - * @param Класс проверяемого объекта - * @param Enum - */ public record EnumPresentRule(String fieldName, Function getter, E[] enumValues, boolean required) implements IValidationRule> { - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param enumValues Значения из проверяемого множества (Enum.values()) - * @param required Флаг обязательности - * @param Класс проверяемого объекта - * @param Enum - */ public static EnumPresentRule instance(String fieldName, Function getter, E[] enumValues, @@ -34,13 +21,6 @@ public record EnumPresentRule(String fieldName, return new EnumPresentRule<>(fieldName, getter, enumValues, required); } - /** - * @param fieldName Название поля - * @param getter Метод получения проверяемого значения - * @param enumValues Значения из проверяемого множества (Enum.values()) - * @param Класс проверяемого объекта - * @param Enum - */ public static EnumPresentRule instance(String fieldName, Function getter, E[] enumValues) { diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/FieldRequiredRule.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/FieldRequiredRule.java index 4abc90b45..ee3349e01 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/FieldRequiredRule.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/FieldRequiredRule.java @@ -8,19 +8,9 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка обязательности поля (not null) - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ -public record FieldRequiredRule(String fieldName, Function getter) implements IValidationRule> { +public record FieldRequiredRule(String fieldName, + Function getter) implements IValidationRule> { - /** - * @param fieldName Название поля - * @param getter Метод получения значения - * @param Класс проверяемого объекта - * @param Класс проверяемого значения - */ public static FieldRequiredRule instance(String fieldName, Function getter) { return new FieldRequiredRule<>(fieldName, getter); } diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/IdPresentRule.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/IdPresentRule.java index e87377b56..b98e1afb7 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/IdPresentRule.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/IdPresentRule.java @@ -10,32 +10,16 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -/** - * Проверка наличия связанного по Id объекта в базе - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ public record IdPresentRule( - String fieldName, - Function idGetter, - Function[] additionalChecks, - String mapName, - Class mapClass, - ValidationError idNotPresentError, - boolean required + String fieldName, + Function idGetter, + Function[] additionalChecks, + String mapName, + Class mapClass, + ValidationError idNotPresentError, + boolean required ) implements IValidationRule> { - /** - * @param fieldName Название поля, содержащего Id - * @param idGetter Метод получения Id - * @param mapName Название мапы связанного объекта (см. IMDGDistributedNames) - * @param mapClass Класс связанного объекта - * @param idNotPresentError Ошибка, которая будет возвращена, если Id не найден - * @param required Флаг обязательности - * @param additionalChecks Дополнительные проверки, которые можно провести со связанным объектом - * @param Класс проверяемого объекта - * @param Класс связанного объекта - */ @SafeVarargs public static IdPresentRule instance(String fieldName, Function idGetter, @@ -43,7 +27,7 @@ public record IdPresentRule( Class mapClass, ValidationError idNotPresentError, boolean required, - Function ... additionalChecks) { + Function... additionalChecks) { return new IdPresentRule<>(fieldName, idGetter, additionalChecks, mapName, mapClass, idNotPresentError, required); } @@ -53,7 +37,7 @@ public record IdPresentRule( String mapName, Class mapClass, ValidationError idNotPresentError, - Function ... additionalChecks) { + Function... additionalChecks) { return new IdPresentRule<>(fieldName, idGetter, additionalChecks, mapName, mapClass, idNotPresentError, true); } diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/TimeNotBeforeRule.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/TimeNotBeforeRule.java index 59144522f..65bb0d81f 100644 --- a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/TimeNotBeforeRule.java +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/validation/rules/common/TimeNotBeforeRule.java @@ -10,57 +10,26 @@ import java.time.LocalTime; import java.util.Optional; import java.util.function.Function; -/** - * Проверка поля с LocalTime. Условие проверки: проверяемое время >= текущее время - * - * @param Класс проверяемого объекта - */ public record TimeNotBeforeRule(String fieldName, Function getter, boolean required, boolean isToday, Function getterForDate) implements IValidationRule> { - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемого времени - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - * @param isToday Флаг что дата сегодняшняя - */ public static TimeNotBeforeRule instance(String fieldName, Function getter, boolean required, boolean isToday) { return new TimeNotBeforeRule<>(fieldName, getter, required, isToday, null); } - /** - * - * @param fieldName - * @param getter - * @param required - * @param getterForDate аналог isToday - * @param - * @return - */ public static TimeNotBeforeRule instance(String fieldName, Function getter, boolean required, Function getterForDate) { return new TimeNotBeforeRule<>(fieldName, getter, required, true, getterForDate); } - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемого времени - * @param required Флаг обязательности поля - * @param Класс проверяемого объекта - */ + public static TimeNotBeforeRule instance(String fieldName, Function getter, boolean required) { return new TimeNotBeforeRule<>(fieldName, getter, required, true, null); } - /** - * @param fieldName Название поля класса, используется для передачи ошибки - * @param getter Метод получения проверяемого времени - * @param Класс проверяемого объекта - */ public static TimeNotBeforeRule instance(String fieldName, Function getter) { - return new TimeNotBeforeRule<>(fieldName, getter, true,true, null); + return new TimeNotBeforeRule<>(fieldName, getter, true, true, null); } @Override diff --git a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/AbstractServiceTest.java b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/AbstractServiceTest.java index b0d9ab911..0dbcc0bec 100644 --- a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/AbstractServiceTest.java +++ b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/AbstractServiceTest.java @@ -149,7 +149,6 @@ public abstract class AbstractServiceTest { planner.setClearingDate(LocalDate.now()); planner.setSection(Section.MKR.getKey()); planner.setSessionType(sessionType); -// planner.setMarket(mkrs.getKey()); planner.setTaskStatus(Status.Active.getKey()); planner.setCompanyId(companyId); planner.setSecurityId(testSecurityId); diff --git a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/ClearingCalendarServiceTest.java b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/ClearingCalendarServiceTest.java index a27ae47f3..216846977 100644 --- a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/ClearingCalendarServiceTest.java +++ b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/ClearingCalendarServiceTest.java @@ -50,14 +50,8 @@ class ClearingCalendarServiceTest extends AbstractServiceTest { clearAllInImdg(plannerAllTodayImdg); } - /** - * {@link ClearingCalendarService#newClearingCalendar(BaseRequest)}(BaseRequest)}
- * Тест проверяет создание сущности {@link ClearingCalendar} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link ClearingCalendarNewRequest}:
- */ @Test public void newClearingCalendar() { - //ARRANGE ClearingCalendar clearingCalendar = new ClearingCalendar(); clearingCalendar.setClearingDate(LocalDate.now()); clearingCalendar.setCompanyId(newCompanyId); @@ -69,12 +63,8 @@ class ClearingCalendarServiceTest extends AbstractServiceTest { clearingCalendarNewRequest.setClearingDate(clearingCalendar.getClearingDate()); clearingCalendarNewRequest.setCompanyId(clearingCalendar.getCompanyId()); clearingCalendarNewRequest.setDayStatus(clearingCalendar.getDayStatus()); - - //ACT String jsonString = getJsonStringForNew(clearingCalendarNewRequest, ID); addRecordToKafka((MockConsumer) clearingCalendarService.getConsumer(), TOPIC_CLEARING_CALENDAR_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ClearingCalendar clearingCalendarRes = clearingCalendarImdg.getFirstObjectBySQL(String.format("companyId = %s", clearingCalendar.getCompanyId())); @@ -83,14 +73,8 @@ class ClearingCalendarServiceTest extends AbstractServiceTest { checkPlannerAllTodayByPlannerTemplate(plannerTemplate); } - /** - * {@link ClearingCalendarService#updateClearingCalendar(BaseRequest)}(BaseRequest)}
- * Тест проверяет создание сущности {@link ClearingCalendar} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link ClearingCalendarUpdateRequest}:
- */ @Test public void updateClearingCalendar() { - //ARRANGE ClearingCalendar clearingCalendar = new ClearingCalendar(); clearingCalendar.setId(currentID.getAndIncrement()); clearingCalendar.setClearingDate(LocalDate.now()); @@ -107,12 +91,8 @@ class ClearingCalendarServiceTest extends AbstractServiceTest { clearingCalendarNewRequest.setClearingDate(clearingCalendar.getClearingDate()); clearingCalendarNewRequest.setCompanyId(clearingCalendar.getCompanyId()); clearingCalendarNewRequest.setDayStatus(clearingCalendar.getDayStatus()); - - //ACT String jsonString = getJsonStringForUpdate(clearingCalendarNewRequest, ID); addRecordToKafka((MockConsumer) clearingCalendarService.getConsumer(), TOPIC_CLEARING_CALENDAR_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); ClearingCalendar clearingCalendarRes = clearingCalendarImdg.getFirstObjectBySQL(String.format("companyId = %s", clearingCalendar.getCompanyId())); @@ -122,14 +102,8 @@ class ClearingCalendarServiceTest extends AbstractServiceTest { } - /** - * {@link ClearingCalendarService#deleteClearingCalendar(BaseRequest)}(BaseRequest)}
- * Тест проверяет удаление сущности {@link ru.clearing.classes.statics.data.scheduler.ClearingCalendar} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- */ @Test public void deleteClearingCalendar() { - //ARRANGE clearAllInImdg(clearingCalendarImdg); ClearingCalendar clearingCalendar = getClearingCalendar(); clearingCalendarImdg.insert(clearingCalendar); @@ -142,30 +116,19 @@ class ClearingCalendarServiceTest extends AbstractServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(id); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, id); addRecordToKafka((MockConsumer) clearingCalendarService.getConsumer(), TOPIC_CLEARING_CALENDAR_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(id, mockProducer); ClearingCalendar plannerTemplateRes = clearingCalendarImdg.getFirstObjectBySQL(String.format("companyId = %s", clearingCalendar.getCompanyId())); assertNull(plannerTemplateRes); PlannerAllToday plannerAllTodayRes = plannerAllTodayImdg.getFirstObjectBySQL(String.format("companyId = %s", plannerTemplate.getCompanyId())); assertNull(plannerAllTodayRes); - - //добавим в clearingCalendarImdg валидный clearingCalendar на случай если тесты plannerTemplate еще не отработали clearingCalendarImdg.insert(clearingCalendar); } - /** - * {@link ClearingCalendarService#deleteFromPlannerAllTodayMap()}}
- * Тест проверяет удаление сущности {@link ru.clearing.classes.statics.data.scheduler.PlannerAllToday} в Hazelcast.
- */ @Test public void deleteFromPlannerAllTodayMap() { - //проверка удаления PlannerAllToday Planner planner = getPlanner(newCompanyId); planner.setId(12L); planner.setTaskStatus(Status.Active.getKey()); @@ -177,21 +140,15 @@ class ClearingCalendarServiceTest extends AbstractServiceTest { plannerTemplate.setId(13L); plannerTemplate.setCompanyId(updateCompanyId); plannerAllTodayImdg.insert(PlannerAllTodayBuilder.builder().append(plannerTemplate).build()); - - //ни чего не должно быть удалено ест валидный clearingCalendar clearingCalendarService.deleteFromPlannerAllTodayMap(); assertEquals(2, plannerAllTodayImdg.getAllValues().size()); checkPlannerAllTodayByPlanner(planner); checkPlannerAllTodayByPlannerTemplate(plannerTemplate); - - //сейчас удалятся только созданные на основании plannerTemplate clearAllInImdg(clearingCalendarImdg); clearingCalendarService.deleteFromPlannerAllTodayMap(); checkPlannerAllTodayByPlanner(planner); assertEquals(1, plannerAllTodayImdg.getAllValues().size()); - - //добавим в clearingCalendarImdg валидный clearingCalendar на случай если тесты plannerTemplate еще не отработали clearingCalendarImdg.insert(getClearingCalendar()); } } \ No newline at end of file diff --git a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/LauncherServiceTest.java b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/LauncherServiceTest.java index 3fc4ed31d..880e1f6ad 100644 --- a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/LauncherServiceTest.java +++ b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/LauncherServiceTest.java @@ -54,14 +54,8 @@ class LauncherServiceTest extends AbstractServiceTest { clearAllInImdg(plannerAllTodayImdg); } - /** - * {@link LauncherService#newLauncher(BaseRequest)}(BaseRequest)}
- * Тест проверяет создание сущности {@link Planner} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link LauncherCommandRequest}:
- */ @Test public void newPlanner() { - //ARRANGE Launcher launcher = new Launcher(); launcher.setSenderId(defaultAdminId); launcher.setTask(accountBlock.getKey()); @@ -83,24 +77,20 @@ class LauncherServiceTest extends AbstractServiceTest { launcherCommandRequest.setAddresseeId(144L); launcherCommandRequest.setDebitLeg_accountId(145L); launcherCommandRequest.setSwiftCode("SWIFT"); - launcherCommandRequest.setFromTime(LocalTime.of(12,23)); - launcherCommandRequest.setFromDate(LocalDate.of(2024,12,21)); - launcherCommandRequest.setToDate(LocalDate.of(2024,12,21)); + launcherCommandRequest.setFromTime(LocalTime.of(12, 23)); + launcherCommandRequest.setFromDate(LocalDate.of(2024, 12, 21)); + launcherCommandRequest.setToDate(LocalDate.of(2024, 12, 21)); BaseRequest predictableBaseRequest = new BaseRequest<>(); predictableBaseRequest.setRequestPayload(launcherCommandRequest); predictableBaseRequest.setId(ID); predictableBaseRequest.setUserId(launcher.getSenderId()); predictableBaseRequest.setActionType(ActionType.NEW); - - //ACT String jsonString = getJsonStringForNew(launcherCommandRequest, ID); addRecordToKafka((MockConsumer) launcherService.getConsumer(), TOPIC_LAUNCHER_NEW, PARTITION, 0, jsonString); - - //ASSERT ArgumentCaptor captor = getCaptor(mockProducer); verify(mockProducer, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); assertEquals("launcher-" + launcher.getTask(), captor.getValue().topic()); diff --git a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerServiceTest.java b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerServiceTest.java index f0d8e2d1d..db16ea4f2 100644 --- a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerServiceTest.java +++ b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerServiceTest.java @@ -43,14 +43,8 @@ class PlannerServiceTest extends AbstractServiceTest { clearAllInImdg(plannerAllTodayImdg); } - /** - * {@link PlannerService#newPlanner(BaseRequest)}(BaseRequest)}
- * Тест проверяет создание сущности {@link ru.clearing.classes.statics.data.scheduler.Planner} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link PlannerNewRequest}:
- */ @Test public void newPlanner() { - //ARRANGE Long ID = currentID.getAndIncrement(); Planner planner = getPlanner(newCompanyId); @@ -63,12 +57,8 @@ class PlannerServiceTest extends AbstractServiceTest { plannerNewRequest.setClearingDate(planner.getClearingDate()); plannerNewRequest.setCompanyId(planner.getCompanyId()); plannerNewRequest.setSecurityId(planner.getSecurityId()); - - //ACT String jsonString = getJsonStringForUpdate(plannerNewRequest, ID); addRecordToKafka((MockConsumer) plannerService.getConsumer(), TOPIC_PLANNER_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Planner plannerReq = plannerImdg.getFirstObjectBySQL(String.format("companyId = %s", planner.getCompanyId())); @@ -77,14 +67,8 @@ class PlannerServiceTest extends AbstractServiceTest { checkPlannerAllTodayByPlanner(planner); } - /** - * {@link PlannerService#updatePlanner(BaseRequest)}(BaseRequest)}
- * Тест проверяет создание сущности {@link ru.clearing.classes.statics.data.scheduler.Planner} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link PlannerUpdateRequest}:
- */ @Test public void updateScheduler() { - //ARRANGE Planner planner = getPlanner(newCompanyId); plannerImdg.insert(planner); planner.setCompanyId(updateCompanyId); @@ -99,12 +83,8 @@ class PlannerServiceTest extends AbstractServiceTest { plannerUpdateRequest.setClearingDate(planner.getClearingDate()); plannerUpdateRequest.setCompanyId(planner.getCompanyId()); plannerUpdateRequest.setSecurityId(planner.getSecurityId()); - - //ACT String jsonString = getJsonStringForUpdate(plannerUpdateRequest, planner.getId()); addRecordToKafka((MockConsumer) plannerService.getConsumer(), TOPIC_PLANNER_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(planner.getId(), mockProducer); Planner plannerReq = plannerImdg.getFirstObjectBySQL(String.format("companyId = %s", planner.getCompanyId())); @@ -113,14 +93,8 @@ class PlannerServiceTest extends AbstractServiceTest { checkPlannerAllTodayByPlanner(planner); } - /** - * {@link PlannerService#deletePlanner(BaseRequest)}(BaseRequest)}
- * Тест проверяет удаление сущности {@link ru.clearing.classes.statics.data.scheduler.Planner} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- */ @Test public void deletePlanner() { - //ARRANGE clearAllInImdg(plannerImdg); Planner planner = getPlanner(deleteCompanyId); plannerImdg.insert(planner); @@ -131,12 +105,8 @@ class PlannerServiceTest extends AbstractServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(plannerId); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, plannerId); addRecordToKafka((MockConsumer) plannerService.getConsumer(), TOPIC_PLANNER_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(plannerId, mockProducer); Planner plannerReq = plannerImdg.getFirstObjectBySQL(String.format("companyId = %s", planner.getCompanyId())); @@ -145,24 +115,14 @@ class PlannerServiceTest extends AbstractServiceTest { assertNull(plannerAllTodayRes); } - /** - * {@link PlannerService#cudPlannerAllToday(Planner)}(BaseRequest)}
- * Тест проверяет добавление, обновление, удаление сущности {@link ru.clearing.classes.statics.data.scheduler.PlannerAllToday} в Hazelcast.
- * Входной запрос {@link Planner}:
- */ @Test public void cudPlannerAllToday() { - //проверка добавления Planner planner = getPlanner(newCompanyId); plannerService.cudPlannerAllToday(planner); checkPlannerAllTodayByPlanner(planner); - - //проверка обновления planner.setCompanyId(updateCompanyId); plannerService.cudPlannerAllToday(planner); checkPlannerAllTodayByPlanner(planner); - - //проверка удаления всех PlannerAllToday planner.setTaskStatus(Status.Cancel.getKey()); plannerAllTodayImdg.insert(PlannerAllTodayBuilder.builder().append(planner).build()); plannerService.cudPlannerAllToday(planner); diff --git a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerTemplateServiceTest.java b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerTemplateServiceTest.java index aa7e79ea4..9dadc4343 100644 --- a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerTemplateServiceTest.java +++ b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/PlannerTemplateServiceTest.java @@ -37,14 +37,8 @@ class PlannerTemplateServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link PlannerTemplateService#newPlannerTemplate(BaseRequest)}(BaseRequest)}
- * Тест проверяет создание сущности {@link ru.clearing.classes.statics.data.scheduler.PlannerTemplate} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link PlannerTemplateNewRequest}:
- */ @Test public void newPlannerTemplateInQueue() throws InterruptedException { - //ARRANGE PlannerTemplate plannerTemplate = getPlannerTemplate(newCompanyId); PlannerTemplateNewRequest templateNewRequest = new PlannerTemplateNewRequest(); @@ -55,12 +49,8 @@ class PlannerTemplateServiceTest extends AbstractServiceTest { templateNewRequest.setTaskStatus(plannerTemplate.getTaskStatus()); templateNewRequest.setCompanyId(plannerTemplate.getCompanyId()); templateNewRequest.setSecurityId(plannerTemplate.getSecurityId()); - - //ACT String jsonString = getJsonStringForNew(templateNewRequest, ID); addRecordToKafka((MockConsumer) plannerTemplateService.getConsumer(), TOPIC_PLANNER_TEMPLATE_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); PlannerTemplate plannerTemplateRes = plannerTemplateImdg.getFirstObjectBySQL(String.format("companyId = %s", plannerTemplate.getCompanyId())); @@ -69,14 +59,8 @@ class PlannerTemplateServiceTest extends AbstractServiceTest { checkPlannerAllTodayByPlannerTemplate(plannerTemplate); } - /** - * {@link PlannerTemplateService#updatePlannerTemplate(BaseRequest)}(BaseRequest)}
- * Тест проверяет обновление сущности {@link ru.clearing.classes.statics.data.scheduler.PlannerTemplate} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link PlannerTemplateUpdateRequest}:
- */ @Test public void updatePlannerTemplate() throws InterruptedException { - //ARRANGE PlannerTemplate plannerTemplate = getPlannerTemplate(newCompanyId); plannerTemplateImdg.insert(plannerTemplate); plannerTemplate.setCompanyId(updateCompanyId); @@ -90,12 +74,8 @@ class PlannerTemplateServiceTest extends AbstractServiceTest { plannerTemplateUpdateRequest.setTaskStatus(plannerTemplate.getTaskStatus()); plannerTemplateUpdateRequest.setCompanyId(plannerTemplate.getCompanyId()); plannerTemplateUpdateRequest.setSecurityId(plannerTemplate.getSecurityId()); - - //ACT String jsonString = getJsonStringForUpdate(plannerTemplateUpdateRequest, ID); addRecordToKafka((MockConsumer) plannerTemplateService.getConsumer(), TOPIC_PLANNER_TEMPLATE_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); PlannerTemplate plannerTemplateRes = plannerTemplateImdg.getFirstObjectBySQL(String.format("companyId = %s", plannerTemplate.getCompanyId())); @@ -104,14 +84,8 @@ class PlannerTemplateServiceTest extends AbstractServiceTest { checkPlannerAllTodayByPlannerTemplate(plannerTemplate); } - /** - * {@link PlannerTemplateService#deletePlannerTemplate(BaseRequest)}(BaseRequest)}
- * Тест проверяет удаление сущности {@link ru.clearing.classes.statics.data.scheduler.PlannerTemplate} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- */ @Test public void deletePlannerTemplate() throws InterruptedException { - //ARRANGE PlannerTemplate plannerTemplate = getPlannerTemplate(newCompanyId); long id = plannerTemplate.getId(); @@ -121,12 +95,8 @@ class PlannerTemplateServiceTest extends AbstractServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(id); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, id); addRecordToKafka((MockConsumer) plannerTemplateService.getConsumer(), TOPIC_PLANNER_TEMPLATE_DELETE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(id, mockProducer); PlannerTemplate plannerTemplateRes = plannerTemplateImdg.getFirstObjectBySQL(String.format("companyId = %s", plannerTemplate.getCompanyId())); diff --git a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/TaskManagerTest.java b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/TaskManagerTest.java index 05dce2934..4e9b7c225 100644 --- a/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/TaskManagerTest.java +++ b/clearing-parent/scheduler-service/src/test/java/ru/spcex/clearing/scheduler/service/TaskManagerTest.java @@ -36,56 +36,32 @@ class TaskManagerTest extends AbstractServiceTest { super.init(); } - /** - * {@link TaskManager#entryAdded(PlannerAllToday)}}
- * Тест проверяет создание и отправку LauncherCommandRequest в Apache Kafka.
- * Входной запрос {@link PlannerAllToday}:
- */ @Test void entryAdded() { - //ARRANGE PlannerAllToday plannerAllToday = getPlannerAllToday(Task.createOrder.getKey()); - //ACT addToPlannerQueue(TaskManager.Process.add, plannerAllToday); - //ASSERT waitingWhenAddedLauncherCommandRequestAndCheckIt(getEnumByKey(Task.class, plannerAllToday.getTask()), plannerAllToday, systemId); } - /** - * {@link TaskManager#entryUpdated(PlannerAllToday)}}
- * Тест проверяет создание и отправку LauncherCommandRequest в Apache Kafka.
- * Входной запрос {@link PlannerAllToday}:
- */ @Test void entryUpdated() { - //ARRANGE PlannerAllToday plannerAllToday = getPlannerAllToday(Task.createReport_GREP.getKey()); PlannerAllToday oldPlanner = getPlannerAllToday(Task.createReport_GREP.getKey()); plannerAllToday.setId(oldPlanner.getId()); plannerAllTodayImdg.insert(plannerAllToday); addToPlannerQueue(TaskManager.Process.add, oldPlanner); - //ACT addToPlannerQueue(TaskManager.Process.update, oldPlanner); - //ASSERT waitingWhenAddedLauncherCommandRequestAndCheckIt(getEnumByKey(Task.class, plannerAllToday.getTask()), plannerAllToday, systemId); } - /** - * {@link TaskManager#entryRemoved(PlannerAllToday)}}
- * Тест проверяет создание и отправку LauncherCommandRequest в Apache Kafka.
- * Входной запрос {@link PlannerAllToday}:
- */ @Test void entryRemoved() { - //ARRANGE PlannerAllToday plannerAllToday = getPlannerAllToday(Task.createOrder.getKey()); PlannerAllToday oldPlanner = getPlannerAllToday(Task.createReport_GREP.getKey()); addToPlannerQueue(TaskManager.Process.add, oldPlanner); addToPlannerQueue(TaskManager.Process.delete, oldPlanner); - //ACT addToPlannerQueue(TaskManager.Process.add, plannerAllToday); - //ASSERT waitingWhenAddedLauncherCommandRequestAndCheckIt(getEnumByKey(Task.class, plannerAllToday.getTask()), plannerAllToday, systemId); } @@ -102,9 +78,8 @@ class TaskManagerTest extends AbstractServiceTest { BaseRequest predictableBaseRequest = launcherSender.makeCmdRequest(plannerAllToday, userId); ArgumentCaptor producerRecord = getCaptor(mockProducer); - //waiting for kafka producer send message (finale event) verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); BaseRequest baseRequestResult = (BaseRequest) producerRecord.getValue().value(); assertEquals(toTaskQueue.topic(), producerRecord.getValue().topic()); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java index 1055707b8..f92548865 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/errors/SecuritiesError.java @@ -4,7 +4,7 @@ import ru.spcex.platform.utils.enumeration.IErrorEnumId; public enum SecuritiesError implements IErrorEnumId { GeneralError(1000L), - UserVerifyDenial(1001L), // 'Нет прав на проведение данной операции + UserVerifyDenial(1001L), RequiredFieldIsEmpty(1002L), DictionaryNotFound(1003L), WrongFieldValue(1004L), @@ -15,12 +15,12 @@ public enum SecuritiesError implements IErrorEnumId { CouponPeriodNotFound(1014L), CurrencyAlreadyExists(1015L), CurrencyNotFound(1016L), - ListingAlreadyExist(1017L), // Инструмент на режиме %s уже существует - ListingNotFound(1018L), // Инструмент на режиме %s не найден - MarketNotFound(1020L), // Режим %s не найден - ListingOnMMSCreatedBySystem(1021L), // Информиция об инструментах Денежного рынка на режимах добавляется автоматически. - ListingOnMMSUpdatedBySystem(1022L), // Информиция об инструментах Денежного рынка на режимах изменяется автоматически. - ListingOnMMSDeletedBySystem(1023L), // Информиция об инструментах Денежного рынка на режимах блокируется автоматически. + ListingAlreadyExist(1017L), + ListingNotFound(1018L), + MarketNotFound(1020L), + ListingOnMMSCreatedBySystem(1021L), + ListingOnMMSUpdatedBySystem(1022L), + ListingOnMMSDeletedBySystem(1023L), ; private final Long id; diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyPairSecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyPairSecurityService.java index 1492c5e89..c219c51f0 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyPairSecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyPairSecurityService.java @@ -108,17 +108,12 @@ public class CurrencyPairSecurityService extends QueueConsumer implements Initia currencyPairSecurity.setBaseUnitSize(req.getBaseUnitSize()); currencyPairSecurity.setCurrencyPairId(req.getCurrencyPairId()); - //todo currencyPairSecurity.setCode(req.getCode()); - //req.getPrecision() currencyPairSecurity.setSettlementType(req.getSettlementType()); currencyPairSecurity.setClearingOrganization(req.getClearingOrganization()); - //todo currencyPairSecurity.setSettlementOrganization(req.getSettlementOrganization()); currencyPairSecurity.setSecurityId(currencyPairSecurity.getId()); currencyPairSecurity.setSecuritySymbol(req.getSecuritySymbol()); currencyPairSecurity.setShortName(req.getShortName()); currencyPairSecurity.setFullName(req.getFullName()); -// currencyPairSecurity.setShortNameEng(req.getShortNameEng()); -// currencyPairSecurity.setFullNameEng(req.getFullNameEng()); if (req.getWorkflowStatus() == null) { currencyPairSecurity.setWorkflowStatus(WorkflowStatus.Active.getKey()); } else { @@ -129,8 +124,6 @@ public class CurrencyPairSecurityService extends QueueConsumer implements Initia currencyPairSecurity.setUpdated(currencyPairSecurity.getCreated()); currencyPairSecurityImdg.insert(currencyPairSecurity); - //todo listing update: listing (добавлены поля minStep и precision) см. ListingBuilder - return currencyPairSecurity; } @@ -152,22 +145,16 @@ public class CurrencyPairSecurityService extends QueueConsumer implements Initia CurrencyPairSecurity currencyPairSecurity = currencyPairSecurityImdg.getSingleObjectByID(req.getId()); Instant updateTime = Instant.now(); currencyPairSecurity.setUpdated(updateTime); - -// currencyPairSecurity.setInstrumentType(req.getInstrumentType()); currencyPairSecurity.setSecuritySymbol(StringUtils.hasText(req.getSecuritySymbol()) ? req.getSecuritySymbol().trim() : null); currencyPairSecurity.setBaseUnitSize(req.getBaseUnitSize()); currencyPairSecurity.setCurrencyPairId(req.getCurrencyPairId()); - //todo currencyPairSecurity.setCode(req.getCode()); currencyPairSecurity.setSettlementType(req.getSettlementType()); currencyPairSecurity.setClearingOrganization(req.getClearingOrganization()); -// todo currencyPairSecurity.setSettlementOrganization(req.getSettlementOrganization()); currencyPairSecurity.setSecurityId(currencyPairSecurity.getId()); currencyPairSecurity.setSecuritySymbol(req.getSecuritySymbol()); currencyPairSecurity.setShortName(req.getShortName()); currencyPairSecurity.setFullName(req.getFullName()); -// currencyPairSecurity.setShortNameEng(req.getShortNameEng()); -// currencyPairSecurity.setFullNameEng(req.getFullNameEng()); if (req.getWorkflowStatus() == null) { currencyPairSecurity.setWorkflowStatus(req.getWorkflowStatus()); } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyService.java index 9ad133b26..b9845d2dc 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/CurrencyService.java @@ -74,7 +74,7 @@ public class CurrencyService extends QueueConsumer implements InitializingBean { currency.setCurrencyCode(req.getCurrencyCode()); currencyImdg.insert(currency); log.debug("successfully processed, request id {}, new object id {}", userRequest.getId(), currency.getId()); - return null; // default success + return null; } private RequestInfoUpdate updateCurrency(BaseRequest userRequest) { diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java index e43786e2d..e346bad52 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/GatewaySecurityService.java @@ -125,17 +125,17 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin @Override public void afterPropertiesSet() { callback(FixedIncomeGatewayRequest.class) - .setFunction(this::newSecurities) - .forDestination(Consts.DESTINATION_SECURITY_BOND_GATEWAY, callbacks::put); + .setFunction(this::newSecurities) + .forDestination(Consts.DESTINATION_SECURITY_BOND_GATEWAY, callbacks::put); callback(EquitySecurityGatewayRequest.class) - .setFunction(this::newSecurities) - .forDestination(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, callbacks::put); + .setFunction(this::newSecurities) + .forDestination(Consts.DESTINATION_SECURITY_EQTY_GATEWAY, callbacks::put); callback(MoneyMarketSecurityNewGatewayRequest.class) - .setFunction(this::newMoneyMarketSecurity) - .forDestination(Consts.DESTINATION_GATEWAY_MONEY_MARKET_SECURITY, callbacks::put); + .setFunction(this::newMoneyMarketSecurity) + .forDestination(Consts.DESTINATION_GATEWAY_MONEY_MARKET_SECURITY, callbacks::put); callback(CurrencyPairSecurityNewGatewayRequest.class) - .setFunction(this::newSecuritiesCurrencyPair) - .forDestination(Consts.DESTINATION_GATEWAY_CURRENCY_PAIR_SECURITY, callbacks::put); + .setFunction(this::newSecuritiesCurrencyPair) + .forDestination(Consts.DESTINATION_GATEWAY_CURRENCY_PAIR_SECURITY, callbacks::put); imdgProvider.waitAvailable(); init(); @@ -147,10 +147,10 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin return null; } Collection companySymbols = companySymbolsImdg.getCollectionObjectsByFieldValues( - Map.of( - "companySymbol", CompanySymbol.UUID.getKey(), - "companySymbolValue", byUuid - ) + Map.of( + "companySymbol", CompanySymbol.UUID.getKey(), + "companySymbolValue", byUuid + ) ); if (companySymbols.isEmpty()) { log.warn("Company not found with uuid={}", byUuid); @@ -158,8 +158,6 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } else if (companySymbols.size() > 1) { log.warn("For {} = {} found {} company_symbol, use first", CompanySymbol.UUID.getKey(), byUuid, companySymbols.size()); } - - // Проверяем, что в базе помимо реквизита есть компания Long companyId = companySymbols.iterator().next().getCompanyId(); Company company = companyImdg.getSingleObjectByID(companyId); if (company == null || !WorkflowStatus.Active.equalsByKey(company.getWorkflowStatus())) { @@ -173,7 +171,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin return null; } Collection securities = imdg.getCollectionObjectsByFieldValues( - Map.of("securitySymbol", securitySymbol) + Map.of("securitySymbol", securitySymbol) ); if (securities.isEmpty()) { log.trace("{} not found by securitySymbol={}", imdg.getMapName(), securitySymbol); @@ -204,18 +202,18 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin log.debug("Processed request with securitySymbol: {}", currencyPairRequest.getSecuritySymbol()); if (req.getLotCurrencyLetterCode() == null || req.getMatchedCurrencyLetterCode() == null) { log.warn("Required field was empty: LotCurrencyLetterCode={}, MatchedCurrencyLetterCode={}", - req.getLotCurrencyLetterCode(), req.getMatchedCurrencyLetterCode()); + req.getLotCurrencyLetterCode(), req.getMatchedCurrencyLetterCode()); } else { CurrencyPairDictionary currencyPairD = currencyPairDictionaryImdg.getFirstObjectByFieldValues(Map.of( - "baseCurrency", req.getLotCurrencyLetterCode(), - "quoteCurrency", req.getMatchedCurrencyLetterCode() + "baseCurrency", req.getLotCurrencyLetterCode(), + "quoteCurrency", req.getMatchedCurrencyLetterCode() )); if (currencyPairD == null) { log.warn("CurrencyPairDictionary not found by {}/{}", - req.getLotCurrencyLetterCode(), req.getMatchedCurrencyLetterCode()); + req.getLotCurrencyLetterCode(), req.getMatchedCurrencyLetterCode()); } else { log.trace("CurrencyPairId={} by {}/{}", currencyPairD.getId(), - req.getLotCurrencyLetterCode(), req.getMatchedCurrencyLetterCode()); + req.getLotCurrencyLetterCode(), req.getMatchedCurrencyLetterCode()); currencyPairRequest.setCurrencyPairId(currencyPairD.getId()); } } @@ -263,7 +261,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg()); } else { log.warn("Error create or update issue: {}. But issue id={} found, try continue...", - messageResolver.resolve(expected.getEnumMsg()), security.getId()); + messageResolver.resolve(expected.getEnumMsg()), security.getId()); } } @@ -274,14 +272,14 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } log.debug("successfully processed, request id {}", - baseRequest.getId()); - return null; // default success + baseRequest.getId()); + return null; } private RequestInfoUpdate newSecurities(BaseRequest baseRequest) { log.debug("SecurityFondGatewayRequest id={} received", baseRequest.getId()); SecurityFondGatewayRequest req = (SecurityFondGatewayRequest) baseRequest.getRequestPayload(); - Long companyId = findCompany(req.getUuid());//issuerId findCompany + Long companyId = findCompany(req.getUuid()); if (companyId == null) { log.debug("CompanyId (issuer) not found."); } else { @@ -332,7 +330,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } } if (InstrumentType.CRNC.equalsByKey(req.getSecurityType())) { - throw new IllegalStateException("CRNC support in other function"); // см. другой метод. + throw new IllegalStateException("CRNC support in other function"); } } catch (ValidationException expected) { if (security == null) { @@ -340,7 +338,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg()); } else { log.warn("Error create or update issue: {}. But issue id={} found, try continue...", - messageResolver.resolve(expected.getEnumMsg()), security.getId()); + messageResolver.resolve(expected.getEnumMsg()), security.getId()); } } @@ -377,8 +375,7 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } } catch (ValidationException expected) { log.warn("At request {} for securityId={} has error when create or update listing: {}", - baseRequest.getId(), securityId, messageResolver.resolve(expected.getEnumMsg())); -// return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg()); + baseRequest.getId(), securityId, messageResolver.resolve(expected.getEnumMsg())); } } @@ -399,14 +396,13 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } } catch (ValidationException expected) { log.warn("At request {} for securityId={} has error when create or update couponPeriod: {}", - baseRequest.getId(), securityId, messageResolver.resolve(expected.getEnumMsg())); -// return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg()); + baseRequest.getId(), securityId, messageResolver.resolve(expected.getEnumMsg())); } } for (FixedIncomeCashFlowNewRequest partRequest : (List) req.getFixedIncomesCashFlow()) { try { - partRequest.setSecuritySymbol(String.valueOf(securityId)); // не getSecuritySymbol + partRequest.setSecuritySymbol(String.valueOf(securityId)); FixedIncomeCashFlow existFixedIncomeCashFlow = findFixedIncomeCashFlow(partRequest); if (existFixedIncomeCashFlow == null) { log.trace("For company[{}] do new FixedIncomeCashFlow", companyId); @@ -420,13 +416,12 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin } } catch (ValidationException expected) { log.warn("At request {} for securityId={} has error when create or update fixedIncomeCashFlow: {}", - baseRequest.getId(), securityId, messageResolver.resolve(expected.getEnumMsg())); -// return requestHelper.makeErrorResponse(baseRequest, expected.getEnumMsg()); + baseRequest.getId(), securityId, messageResolver.resolve(expected.getEnumMsg())); } } log.debug("successfully processed, request id {}", baseRequest.getId()); - return null; // default success + return null; } Listing findListing(ListingNewRequest byRequest) { @@ -447,8 +442,8 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin ImdgPredicateBuilder pb = couponPeriodImdg.predicateBuilder(); CouponPeriod existCouponPeriod = couponPeriodImdg.getFirstObjectByPredicate(pb.and( - pb.equals("securityId", byRequest.getSecurityId()), - pb.equals("number", byRequest.getNumber()) // предикатом на случай null, но такого не должно быть + pb.equals("securityId", byRequest.getSecurityId()), + pb.equals("number", byRequest.getNumber()) )); if (existCouponPeriod == null) @@ -563,8 +558,6 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin return updateRequest; } - // --- DESTINATION_GATEWAY_MONEY_MARKET_SECURITY --- - private RequestInfoUpdate newMoneyMarketSecurity(BaseRequest baseRequest) { log.debug("MoneyMarketSecurityNewRequest id={} received", baseRequest.getId()); MoneyMarketSecurityNewGatewayRequest gatewayReq = baseRequest.getRequestPayload(); @@ -625,7 +618,6 @@ public class GatewaySecurityService extends QueueConsumer implements Initializin updateRequest.setCurrencyPairId(newRequest.getCurrencyPairId()); updateRequest.setLotSize(newRequest.getLotSize()); updateRequest.setMinStep(newRequest.getMinStep()); -// updateRequest.setPrecision(newRequest.getPrecision()); updateRequest.setBaseUnitSize(newRequest.getBaseUnitSize()); updateRequest.setSettlementType(newRequest.getSettlementType()); updateRequest.setWorkflowStatus(newRequest.getWorkflowStatus()); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java index 3840fe586..bd8e5429c 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/service/cud/ListingService.java @@ -96,7 +96,7 @@ public class ListingService extends QueueConsumer implements InitializingBean { validationHelper.validateTillFirstErrorAndThrow(req, validation.listingNewValidator()); Security security = securitySelector.selectSecurityById(req.getSecurityId()); - if (security == null) { // never + if (security == null) { log.error("Security not found {}", req.getSecurityId()); } @@ -108,16 +108,16 @@ public class ListingService extends QueueConsumer implements InitializingBean { listing.setMarket(req.getMarket()); listing.setLotSize(req.getLotSize()); if (req.getSymbolCode() != null) { - listing.setSymbolCode(req.getSymbolCode()); // listing.setSymbolCode(req.getSymbolCode()); + listing.setSymbolCode(req.getSymbolCode()); } else { if (security != null) listing.setSymbolCode(security.getSecuritySymbol()); } if (req.getSymbolName() != null) { - listing.setSymbolName(req.getSymbolName()); // api-gateway + listing.setSymbolName(req.getSymbolName()); } else { if (security != null) - listing.setSymbolName(security.getFullName()); // req.getSymbolName + listing.setSymbolName(security.getFullName()); } listing.setTradingCurrency(req.getTradingCurrency()); if (StringUtils.isEmpty(req.getWorkflowStatus())) { @@ -150,10 +150,10 @@ public class ListingService extends QueueConsumer implements InitializingBean { Listing listing = listingImdg.getSingleObjectByID(req.getId()); Security security = securitySelector.selectSecurityById(req.getSecurityId()); - if (security == null) { // never + if (security == null) { log.error("Security not found {}", req.getSecurityId()); } - if (listing == null) { //never + if (listing == null) { log.error("listing not found {}", req.getId()); } 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 f548609ee..05ec1a72b 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 @@ -54,7 +54,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial private final ValidationHelper validationHelper; private final RequestHelper requestHelper; private final IMessageResolver messageResolver; - private final ListingService listingService; // для синхронизации + private final ListingService listingService; @Autowired public MoneyMarketSecurityService(Consumer kafkaQueue, @@ -156,10 +156,9 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial transaction.beginTransaction(); Imdg moneyMarketSecurityTxMap = transaction.getImdg(IMDGDistributedNames.Map_MoneyMarketSecurity, MoneyMarketSecurity.class); Imdg listingTxMap = transaction.getImdg(IMDGDistributedNames.Map_Listing, Listing.class); - //одним скопом выполняем реквест moneyMarketSecurityTxMap.insert(mms); Listing listing = ListingBuilder.builder() - .append(mms).append(req).build(); + .append(mms).append(req).build(); listingTxMap.insert(listing); transaction.commitTransaction(); } catch (Throwable e) { @@ -168,7 +167,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial throw e; } } - return mms; // default success + return mms; } private RequestInfoUpdate updateMoneyMarket(BaseRequest userRequest) { diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java index 60dd117cf..30f7797ae 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/ValidationProvider.java @@ -322,62 +322,41 @@ public class ValidationProvider { context.addImdg(IMDGDistributedNames.Map_CurrencyPairDictionary, currencyPairDictionaryImdg); return new ValidatorImpl<>(context, - DictionaryPresentRule.instance("instrumentType", - WithInstrumentType::getInstrumentType, IMDGDistributedNames.Map_InstrumentTypeDictionary, - InstrumentTypeDictionary.class, - SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, - true), - new IsValidInstrumentTypeFromRequest(SecuritiesError.RequiredFieldIsEmpty, InstrumentType.CRNC.getKey()), - FieldRequiredRule.instance("securitySymbol", - CurrencyPairSecurityNewRequest::getSecuritySymbol, - SecuritiesError.RequiredFieldIsEmpty, - true -// securitySymbol -> { -// Imdg currencyPairImdg = context.obtainMap( -// IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class -// ); -// Long securityId = Long.valueOf(securitySymbol); -// Collection currencyPairs = currencyPairImdg.getCollectionObjectsByFieldValues(query); -// if (!currencyPairs.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists; -// return null; -// } - ), - FieldNotBlankRequiredRule.instance("shortName", - CurrencyPairSecurityNewRequest::getShortName, - SecuritiesError.RequiredFieldIsEmpty, true), - FieldNotBlankRequiredRule.instance("fullName", - CurrencyPairSecurityNewRequest::getFullName, - SecuritiesError.RequiredFieldIsEmpty, true), - IdPresentRule.instance("currencyPairId", - CurrencyPairSecurityNewRequest::getCurrencyPairId, - IMDGDistributedNames.Map_CurrencyPairDictionary, - Market.class, - SecuritiesError.RequiredFieldIsEmpty, - SecuritiesError.MarketNotFound - ), -// FieldRequiredRule.instance("lotSize", -// CurrencyPairSecurityNewRequest::getLotSize, -// SecuritiesError.RequiredFieldIsEmpty, true), -// FieldRequiredRule.instance("minStep", -// CurrencyPairSecurityNewRequest::getMinStep, -// SecuritiesError.RequiredFieldIsEmpty, true), - FieldRequiredRule.instance("baseUnitSize", - CurrencyPairSecurityNewRequest::getBaseUnitSize, - SecuritiesError.RequiredFieldIsEmpty, true), - FieldRequiredRule.instance("settlementType", - CurrencyPairSecurityNewRequest::getSettlementType, - SecuritiesError.RequiredFieldIsEmpty, true), - DictionaryPresentRule.instance("workflowStatus", - CurrencyPairSecurityNewRequest::getWorkflowStatus, IMDGDistributedNames.Map_WorkflowStatusDictionary, - InstrumentTypeDictionary.class, - SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, - true) -// FieldRequiredRule.instance("settlementOrganization", -// CurrencyPairSecurityNewRequest::getSettlementOrganization, -// SecuritiesError.RequiredFieldIsEmpty, true), -// FieldRequiredRule.instance("clearingOrganization", -// CurrencyPairSecurityNewRequest::getClearingOrganization, -// SecuritiesError.RequiredFieldIsEmpty, true), + DictionaryPresentRule.instance("instrumentType", + WithInstrumentType::getInstrumentType, IMDGDistributedNames.Map_InstrumentTypeDictionary, + InstrumentTypeDictionary.class, + SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, + true), + new IsValidInstrumentTypeFromRequest(SecuritiesError.RequiredFieldIsEmpty, InstrumentType.CRNC.getKey()), + FieldRequiredRule.instance("securitySymbol", + CurrencyPairSecurityNewRequest::getSecuritySymbol, + SecuritiesError.RequiredFieldIsEmpty, + true + ), + FieldNotBlankRequiredRule.instance("shortName", + CurrencyPairSecurityNewRequest::getShortName, + SecuritiesError.RequiredFieldIsEmpty, true), + FieldNotBlankRequiredRule.instance("fullName", + CurrencyPairSecurityNewRequest::getFullName, + SecuritiesError.RequiredFieldIsEmpty, true), + IdPresentRule.instance("currencyPairId", + CurrencyPairSecurityNewRequest::getCurrencyPairId, + IMDGDistributedNames.Map_CurrencyPairDictionary, + Market.class, + SecuritiesError.RequiredFieldIsEmpty, + SecuritiesError.MarketNotFound + ), + FieldRequiredRule.instance("baseUnitSize", + CurrencyPairSecurityNewRequest::getBaseUnitSize, + SecuritiesError.RequiredFieldIsEmpty, true), + FieldRequiredRule.instance("settlementType", + CurrencyPairSecurityNewRequest::getSettlementType, + SecuritiesError.RequiredFieldIsEmpty, true), + DictionaryPresentRule.instance("workflowStatus", + CurrencyPairSecurityNewRequest::getWorkflowStatus, IMDGDistributedNames.Map_WorkflowStatusDictionary, + InstrumentTypeDictionary.class, + SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, + true) ); }; } @@ -394,61 +373,40 @@ public class ValidationProvider { context.addImdg(IMDGDistributedNames.Map_CurrencyCodeDictionary, currencyCodeDictionaryImdg); context.addImdg(IMDGDistributedNames.Map_CurrencyPairDictionary, currencyPairDictionaryImdg); return new ValidatorImpl<>(context, - DictionaryPresentRule.instance("instrumentType", - CurrencyPairSecurityUpdateRequest::getInstrumentType, IMDGDistributedNames.Map_InstrumentTypeDictionary, - InstrumentTypeDictionary.class, - SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, - true), - FieldRequiredRule.instance("securitySymbol", - CurrencyPairSecurityUpdateRequest::getSecuritySymbol, - SecuritiesError.RequiredFieldIsEmpty, - true -// securitySymbol -> { -// Imdg currencyPairImdg = context.obtainMap( -// IMDGDistributedNames.Map_CurrencyPairSecurity, CurrencyPairSecurity.class -// ); -// Long securityId = Long.valueOf(securitySymbol); -// Collection currencyPairs = currencyPairImdg.getCollectionObjectsByFieldValues(query); -// if (!currencyPairs.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists; -// return null; -// } - ), - FieldNotBlankRequiredRule.instance("shortName", - CurrencyPairSecurityUpdateRequest::getShortName, - SecuritiesError.RequiredFieldIsEmpty, true), - FieldNotBlankRequiredRule.instance("fullName", - CurrencyPairSecurityUpdateRequest::getFullName, - SecuritiesError.RequiredFieldIsEmpty, true), - IdPresentRule.instance("currencyPairId", - CurrencyPairSecurityUpdateRequest::getCurrencyPairId, - IMDGDistributedNames.Map_CurrencyPairDictionary, - Market.class, - SecuritiesError.RequiredFieldIsEmpty, - SecuritiesError.MarketNotFound - ), -// FieldRequiredRule.instance("lotSize", -// CurrencyPairSecurityUpdateRequest::getLotSize, -// SecuritiesError.RequiredFieldIsEmpty, true), -// FieldRequiredRule.instance("minStep", -// CurrencyPairSecurityUpdateRequest::getMinStep, -// SecuritiesError.RequiredFieldIsEmpty, true), - FieldRequiredRule.instance("baseUnitSize", - CurrencyPairSecurityUpdateRequest::getBaseUnitSize, - SecuritiesError.RequiredFieldIsEmpty, true), - FieldRequiredRule.instance("settlementType", - CurrencyPairSecurityUpdateRequest::getSettlementType, - SecuritiesError.RequiredFieldIsEmpty, true), - DictionaryPresentRule.instance("workflowStatus", - CurrencyPairSecurityUpdateRequest::getWorkflowStatus, IMDGDistributedNames.Map_WorkflowStatusDictionary, - InstrumentTypeDictionary.class, - SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, - true) -// FieldRequiredRule.instance("settlementOrganization", -// CurrencyPairSecurityNewRequest::getSettlementOrganization, -// SecuritiesError.RequiredFieldIsEmpty, true), -// FieldRequiredRule.instance("clearingOrganization", -// CurrencyPairSecurityNewRequest::getClearingOrganization, -// SecuritiesError.RequiredFieldIsEmpty, true), + DictionaryPresentRule.instance("instrumentType", + CurrencyPairSecurityUpdateRequest::getInstrumentType, IMDGDistributedNames.Map_InstrumentTypeDictionary, + InstrumentTypeDictionary.class, + SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, + true), + FieldRequiredRule.instance("securitySymbol", + CurrencyPairSecurityUpdateRequest::getSecuritySymbol, + SecuritiesError.RequiredFieldIsEmpty, + true + ), + FieldNotBlankRequiredRule.instance("shortName", + CurrencyPairSecurityUpdateRequest::getShortName, + SecuritiesError.RequiredFieldIsEmpty, true), + FieldNotBlankRequiredRule.instance("fullName", + CurrencyPairSecurityUpdateRequest::getFullName, + SecuritiesError.RequiredFieldIsEmpty, true), + IdPresentRule.instance("currencyPairId", + CurrencyPairSecurityUpdateRequest::getCurrencyPairId, + IMDGDistributedNames.Map_CurrencyPairDictionary, + Market.class, + SecuritiesError.RequiredFieldIsEmpty, + SecuritiesError.MarketNotFound + ), + FieldRequiredRule.instance("baseUnitSize", + CurrencyPairSecurityUpdateRequest::getBaseUnitSize, + SecuritiesError.RequiredFieldIsEmpty, true), + FieldRequiredRule.instance("settlementType", + CurrencyPairSecurityUpdateRequest::getSettlementType, + SecuritiesError.RequiredFieldIsEmpty, true), + DictionaryPresentRule.instance("workflowStatus", + CurrencyPairSecurityUpdateRequest::getWorkflowStatus, IMDGDistributedNames.Map_WorkflowStatusDictionary, + InstrumentTypeDictionary.class, + SecuritiesError.RequiredFieldIsEmpty, SecuritiesError.DictionaryNotFound, + true) ); }; } diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/CouponPeriodNewValidationRule.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/CouponPeriodNewValidationRule.java index 0858ee7d4..3c2a80612 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/CouponPeriodNewValidationRule.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/CouponPeriodNewValidationRule.java @@ -24,7 +24,7 @@ public enum CouponPeriodNewValidationRule implements IValidationRule imdgDictionary = context.obtainMap(IMDGDistributedNames.Map_CouponPeriod, SpcexObjectBase.class); HashMap fields = new HashMap<>(); fields.put("securityId", action.getSecurityId()); - fields.put("number", action.getNumber()); // may be null, but never + fields.put("number", action.getNumber()); SpcexObjectBase couponPeriod = imdgDictionary.getFirstObjectByFieldValues(fields); if (couponPeriod != null) { return of(SecuritiesError.CouponPeriodAlreadyExists, "securityId"); diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java index f6b606276..4b2808f15 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCodeByDictionary.java @@ -12,7 +12,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.Function; -@Deprecated // use common validator ru.spcex.clearing.validation.common.rules.DictionaryPresentRule +@Deprecated public class HaveValidCodeByDictionary implements IValidationRule> { String mapName; String errArg; diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCompanyId.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCompanyId.java index b4f45a65b..e3bc55353 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCompanyId.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/HaveValidCompanyId.java @@ -11,7 +11,7 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; import java.util.function.Function; -@Deprecated // use common validator +@Deprecated public class HaveValidCompanyId implements IValidationRule> { Function idGetter; String errArg; diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsDeleteValidationRule.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsDeleteValidationRule.java index 0da4c011b..0b79b5acf 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsDeleteValidationRule.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsDeleteValidationRule.java @@ -16,7 +16,6 @@ public enum MmsDeleteValidationRule implements IValidationRule validate(ImdgValidationContext context) { MoneyMarketSecurity mms = context.getStoredObject(Stored.PresentById); - //проверка только если PresentById найдет объект и сохранит его if (mms != null && !Status.Active.getKey().equals(mms.getWorkflowStatus())) { return of(SecuritiesError.InstrumentNotActive, mms.getSecuritySymbol()); } else { diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java index 5906e76c9..5153aece6 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/MmsUpdateValidationRule.java @@ -16,7 +16,6 @@ public enum MmsUpdateValidationRule implements IValidationRule validate(ImdgValidationContext context) { MoneyMarketSecurity mms = context.getStoredObject(Stored.PresentById); - //проверка только если PresentById найдет объект и сохранит его if (mms != null && !Status.Active.getKey().equals(mms.getWorkflowStatus())) { return of(SecuritiesError.InstrumentNotActive, mms.getSecuritySymbol()); } else { diff --git a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/WorkflowStatusActv.java b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/WorkflowStatusActv.java index 9fe998a70..e1f9974eb 100644 --- a/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/WorkflowStatusActv.java +++ b/clearing-parent/securities-service/src/main/java/ru/spcex/clearing/securities/validation/rule/WorkflowStatusActv.java @@ -16,7 +16,6 @@ public class WorkflowStatusActv implements IValidationRule validate(ImdgValidationContext context) { WithWorkflowStatus object = context.getStoredObject(Stored.PresentById); - //проверка только если PresentById найдет объект и сохранит его if (object != null && object.getWorkflowStatus() == null) { return of(SecuritiesError.RequiredFieldIsEmpty, "workflowStatus"); } else if (object != null && !Status.Active.getKey().equals(object.getWorkflowStatus())) { diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CouponPeriodServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CouponPeriodServiceTest.java index 0f1105c37..f48fd1cdc 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CouponPeriodServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CouponPeriodServiceTest.java @@ -34,11 +34,6 @@ public class CouponPeriodServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link CouponPeriodService#newCouponPeriod(BaseRequest)}
- * Тест проверяет генерацию сущности {@link CouponPeriod} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CouponPeriodNewRequest}:
- */ @Test public void testNewCurrency() { clearAllInImdg(couponPeriodImdg); @@ -56,14 +51,9 @@ public class CouponPeriodServiceTest extends AbstractServiceTest { request.setPeriodStartDate(LocalDate.ofEpochDay(0)); request.setCouponRate(BigDecimal.TEN); request.setNumber(Long.MAX_VALUE); - - - //ACT String jsonString = getJsonStringForNew(request, ID); addRecordToKafka((MockConsumer) couponPeriodService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); CouponPeriod result = couponPeriodImdg.getFirstObjectBySQL(String.format("securityId = %s", currencyPrediction.getSecurityId())); @@ -71,11 +61,6 @@ public class CouponPeriodServiceTest extends AbstractServiceTest { COUPON_PERIOD_MATCHER.assertMatch(result, currencyPrediction); } - /** - * {@link CouponPeriodService#updateCouponPeriod(BaseRequest)} - * Тест проверяет обновление сущности {@link CouponPeriod} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CouponPeriodUpdateRequest}:
- */ @Test public void testUpdateCurrency() { clearAllInImdg(couponPeriodImdg); @@ -106,13 +91,9 @@ public class CouponPeriodServiceTest extends AbstractServiceTest { request.setSecurityId(securityId); request.setPeriodEndDate(testStartDate); request.setPeriodStartDate(testEndDate); - - //ACT String jsonString = getJsonStringForUpdate(request, id); addRecordToKafka((MockConsumer) couponPeriodService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(id, mockProducer); CouponPeriod result = couponPeriodImdg.getFirstObjectBySQL(String.format("securityId = %s", predictableCoupon.getSecurityId())); diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CurrencyServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CurrencyServiceTest.java index 0ed07c7ef..a4e3f0dd2 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CurrencyServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/CurrencyServiceTest.java @@ -31,11 +31,6 @@ public class CurrencyServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link CurrencyService#newCurrency(BaseRequest)}
- * Тест проверяет генерацию сущности {@link Currency} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CurrencyNewRequest}:
- */ @Test public void testNewCurrency() { clearAllInImdg(currencyImdg); @@ -47,13 +42,9 @@ public class CurrencyServiceTest extends AbstractServiceTest { final CurrencyNewRequest request = new CurrencyNewRequest(); request.setCountryCode(countryCode); request.setCurrencyCode(currencyCode); - - //ACT String jsonString = getJsonStringForNew(request, ID); addRecordToKafka((MockConsumer) currencyService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Currency result = currencyImdg.getFirstObjectBySQL(String.format("countryCode = %s", currencyPrediction.getCountryCode())); @@ -61,11 +52,6 @@ public class CurrencyServiceTest extends AbstractServiceTest { CURRENCY_MATCHER.assertMatch(result, currencyPrediction); } - /** - * {@link CurrencyService#updateCurrency(BaseRequest)} - * Тест проверяет обновление сущности {@link Currency} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CurrencyUpdateRequest}:
- */ @Test public void testUpdateCurrency() { clearAllInImdg(currencyImdg); @@ -80,13 +66,9 @@ public class CurrencyServiceTest extends AbstractServiceTest { request.setId(ID); request.setCountryCode(countryCode); request.setCurrencyCode(currencyCode); - - //ACT String jsonString = getJsonStringForUpdate(request, ID); addRecordToKafka((MockConsumer) currencyService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); Currency result = currencyImdg.getFirstObjectBySQL(String.format("countryCode = %s", currencyPrediction.getCountryCode())); diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java index 236029adf..487cac349 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/EquitySecurityServiceTest.java @@ -22,6 +22,7 @@ import java.util.Map; import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator; import static ru.spcex.clearing.test.TestUtils.*; +import ru.spcex.platform.enumeration.Status; public class EquitySecurityServiceTest extends AbstractServiceTest { private static final MatcherFactory.Matcher EQUITY_SECURITY_MATCHER = usingIgnoringFieldsComparator("created", "updated"); @@ -35,11 +36,6 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link EquitySecurityService#newEquity(BaseRequest)}
- * Тест проверяет генерацию сущности {@link EquitySecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link EquitySecurityNewRequest}:
- */ @Test public void testNewEquity() { clearAllInImdg(equitySecurityImdg); @@ -48,14 +44,10 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { final EquitySecurity equityPrediction = getEquitySecurity(); final EquitySecurityNewRequest request = getEquitySecurityNewRequest(equityPrediction); Listing listingPrediction = ListingBuilder.builder() - .append(equityPrediction).append(request).build(); - - //ACT + .append(equityPrediction).append(request).build(); String jsonString = getJsonStringForNew(request, ID); addRecordToKafka((MockConsumer) equitySecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); EquitySecurity equityResult = equitySecurityImdg.getFirstObjectBySQL(String.format("fullName = %s", equityPrediction.getFullName())); @@ -65,9 +57,6 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { Listing listingResult = listingImdg.getFirstObjectByFieldValues(Map.of("securityId", equityPrediction.getId())); Assertions.assertNull(listingResult); -// listingPrediction.setId(listingResult.getId()); -// listingPrediction.setSecurityId(listingResult.getSecurityId()); -// LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } public Listing updateListingByEquity(EquitySecurity equitySecurity, Listing listing) { @@ -81,11 +70,6 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { return listing; } - /** - * {@link EquitySecurityService#updateEquity(BaseRequest)} - * Тест проверяет обновление сущности {@link EquitySecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link EquitySecurityUpdateRequest}:
- */ @Test public void testUpdateEquity() { clearAllInImdg(equitySecurityImdg); @@ -98,35 +82,17 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { equityPrediction.setFullName(fullName); equityPrediction.setLotSize(BigDecimal.valueOf(updateLotSize)); final EquitySecurityUpdateRequest request = getEquitySecurityUpdateRequest(equityPrediction); -// Listing listingPrediction = new Listing(); -// listingPrediction = equitySecurityService.updateListingByEquity(equityPrediction, listingPrediction); -// listingImdg.insert(listingPrediction); - - //ACT String jsonString = getJsonStringForUpdate(request, ID); addRecordToKafka((MockConsumer) equitySecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); EquitySecurity equityResult = equitySecurityImdg.getFirstObjectBySQL(String.format("fullName = %s", equityPrediction.getFullName())); equityPrediction.setId(equityResult.getId()); equityPrediction.setSecurityId(equityResult.getSecurityId()); EQUITY_SECURITY_MATCHER.assertMatch(equityResult, equityPrediction); - -// Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", equityPrediction.getId())); -// listingPrediction.setId(listingResult.getId()); -// listingPrediction.setSecurityId(listingResult.getSecurityId()); -// LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } - /** - * {@link EquitySecurityService#deleteEquity(BaseRequest)}
- * Тест проверяет удаление сущности {@link EquitySecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test public void testDeleteEquity() { clearAllInImdg(equitySecurityImdg); @@ -134,33 +100,21 @@ public class EquitySecurityServiceTest extends AbstractServiceTest { final EquitySecurity equityPrediction = getEquitySecurity(); equitySecurityImdg.insert(equityPrediction); - equityPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); + equityPrediction.setWorkflowStatus(Status.Blocked.getKey()); Listing listingPrediction = new Listing(); -// listingPrediction = equitySecurityService.updateListingByEquity(equityPrediction, listingPrediction); -// listingImdg.insert(listingPrediction); -// listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(ID); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, ID); addRecordToKafka((MockConsumer) equitySecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); EquitySecurity equityResult = equitySecurityImdg.getFirstObjectBySQL(String.format("fullName = %s", equityPrediction.getFullName())); equityPrediction.setId(equityResult.getId()); equityPrediction.setSecurityId(equityResult.getSecurityId()); EQUITY_SECURITY_MATCHER.assertMatch(equityResult, equityPrediction); - -// Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", equityPrediction.getId())); -// listingPrediction.setId(listingResult.getId()); -// listingPrediction.setSecurityId(listingResult.getSecurityId()); -// LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } private EquitySecurity getEquitySecurity() { diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeCashFlowServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeCashFlowServiceTest.java index cbc899bbf..47e7450a0 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeCashFlowServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeCashFlowServiceTest.java @@ -79,7 +79,6 @@ class FixedIncomeCashFlowServiceTest { @Test void fixedIncomeCashFlowNewTest() { - //ARRANGE clearAllInImdg(fixedIncomeCashFlowImdg); FixedIncomeCashFlowNewRequest newRequest = new FixedIncomeCashFlowNewRequest(); newRequest.setSecuritySymbol(SECURITY_SYMBOL_STR); @@ -94,13 +93,9 @@ class FixedIncomeCashFlowServiceTest { predictableFixedIncomeCashFlow.setAccruedCoupon(TEST_BIG_DECIMAL); predictableFixedIncomeCashFlow.setNumber(TEST_LONG); predictableFixedIncomeCashFlow.setValueDate(TEST_DATE); - - //ACT String jsonString = getJsonStringForNew(newRequest, ID); addRecordToKafka((MockConsumer) fixedIncomeCashFlowService.getConsumer(), TOPIC_FIXED_INCOME_CASH_FLOW_NEW, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); FixedIncomeCashFlow resultNew = fixedIncomeCashFlowImdg.getFirstObjectBySQL(String.format("securityId = %s", SECURITY_SYMBOL_STR)); predictableFixedIncomeCashFlow.setId(resultNew.getId()); @@ -109,7 +104,6 @@ class FixedIncomeCashFlowServiceTest { @Test void fixedIncomeCashFlowUpdateTest() { - //ARRANGE FixedIncomeCashFlow existFixedIncomeCashFlow = new FixedIncomeCashFlow(); existFixedIncomeCashFlow.setSecurityId(SECURITY_SYMBOL_LONG); existFixedIncomeCashFlow.setNominalValue(BigDecimal.ZERO); @@ -132,13 +126,9 @@ class FixedIncomeCashFlowServiceTest { predictableFixedIncomeCashFlow.setAccruedCoupon(TEST_BIG_DECIMAL); predictableFixedIncomeCashFlow.setNumber(TEST_LONG); predictableFixedIncomeCashFlow.setValueDate(TEST_DATE); - - //ACT String jsonString = getJsonStringForUpdate(updateRequest, id); addRecordToKafka((MockConsumer) fixedIncomeCashFlowService.getConsumer(), TOPIC_FIXED_INCOME_CASH_FLOW_UPDATE, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(id, mockProducer); FixedIncomeCashFlow resultUpdate = fixedIncomeCashFlowImdg.getFirstObjectBySQL(String.format("securityId = %s", SECURITY_SYMBOL_STR)); predictableFixedIncomeCashFlow.setId(id); diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java index c6479a851..725725715 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/FixedIncomeSecurityServiceTest.java @@ -22,6 +22,7 @@ import java.util.Map; import static ru.spcex.clearing.test.MatcherFactory.usingIgnoringFieldsComparator; import static ru.spcex.clearing.test.TestUtils.*; +import ru.spcex.platform.enumeration.Status; public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { private static final MatcherFactory.Matcher FIXED_INCOME_SECURITY_MATCHER = usingIgnoringFieldsComparator("created", "updated"); @@ -35,11 +36,6 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { super.init(); } - /** - * {@link FixedIncomeSecurityService#newFixedIncome(BaseRequest)}
- * Тест проверяет генерацию сущности {@link FixedIncomeSecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link FixedIncomeSecurityNewRequest}:
- */ @Test public void newFixedIncome() { clearAllInImdg(fixedIncomeSecurityImdg); @@ -48,14 +44,10 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { final FixedIncomeSecurity fixedIncomePrediction = getFixedIncomeSecurity(); final FixedIncomeSecurityNewRequest request = getFixedIncomeSecurityNewRequest(fixedIncomePrediction); Listing listingPrediction = ListingBuilder.builder() - .append(fixedIncomePrediction).append(request).build(); - - //ACT + .append(fixedIncomePrediction).append(request).build(); String jsonString = getJsonStringForNew(request, ID); addRecordToKafka((MockConsumer) fixedIncomeSecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); FixedIncomeSecurity equityResult = fixedIncomeSecurityImdg.getFirstObjectBySQL(String.format("fullName = %s", fixedIncomePrediction.getFullName())); @@ -65,9 +57,6 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { Listing listingResult = listingImdg.getFirstObjectByFieldValues(Map.of("securityId", fixedIncomePrediction.getId())); Assertions.assertNull(listingResult); -// listingPrediction.setId(listingResult.getId()); -// listingPrediction.setSecurityId(listingResult.getSecurityId()); -// LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } public Listing updateListingByFixedIncome(FixedIncomeSecurity fixedIncomeSecurity, Listing listing) { @@ -80,11 +69,7 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { listing.setUpdated(fixedIncomeSecurity.getUpdated()); return listing; } - /** - * {@link FixedIncomeSecurityService#updateFixedIncome(BaseRequest)} - * Тест проверяет обновление сущности {@link FixedIncomeSecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link FixedIncomeSecurityUpdateRequest}:
- */ + @Test public void updateFixedIncome() { clearAllInImdg(moneyMarketSecurityMap); @@ -98,35 +83,17 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { fixedIncomePrediction.setFullName(fullName); fixedIncomePrediction.setLotSize(BigDecimal.valueOf(updateLotSize)); final FixedIncomeSecurityUpdateRequest request = getFixedIncomeSecurityUpdateRequest(fixedIncomePrediction); -// Listing listingPrediction = new Listing(); -// listingPrediction = fixedIncomeSecurityService.updateListingByFixedIncome(fixedIncomePrediction, listingPrediction); -// listingImdg.insert(listingPrediction); - - //ACT String jsonString = getJsonStringForUpdate(request, ID); addRecordToKafka((MockConsumer) fixedIncomeSecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); FixedIncomeSecurity equityResult = fixedIncomeSecurityImdg.getFirstObjectBySQL(String.format("fullName = %s", fixedIncomePrediction.getFullName())); fixedIncomePrediction.setId(equityResult.getId()); fixedIncomePrediction.setSecurityId(equityResult.getSecurityId()); FIXED_INCOME_SECURITY_MATCHER.assertMatch(equityResult, fixedIncomePrediction); - -// Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", fixedIncomePrediction.getId())); -// listingPrediction.setId(listingResult.getId()); -// listingPrediction.setSecurityId(listingResult.getSecurityId()); -// LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } - /** - * {@link FixedIncomeSecurityService#deleteFixedIncome(BaseRequest)}
- * Тест проверяет удаление сущности {@link FixedIncomeSecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test public void deleteFixedIncome() { clearAllInImdg(moneyMarketSecurityMap); @@ -134,33 +101,21 @@ public class FixedIncomeSecurityServiceTest extends AbstractServiceTest { final FixedIncomeSecurity fixedIncomePrediction = getFixedIncomeSecurity(); fixedIncomeSecurityImdg.insert(fixedIncomePrediction); - fixedIncomePrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); + fixedIncomePrediction.setWorkflowStatus(Status.Blocked.getKey()); Listing listingPrediction = new Listing(); -// listingPrediction = fixedIncomeSecurityService.updateListingByFixedIncome(fixedIncomePrediction, listingPrediction); -// listingImdg.insert(listingPrediction); -// listingPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(ID); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, ID); addRecordToKafka((MockConsumer) fixedIncomeSecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); FixedIncomeSecurity equityResult = fixedIncomeSecurityImdg.getFirstObjectBySQL(String.format("fullName = %s", fixedIncomePrediction.getFullName())); fixedIncomePrediction.setId(equityResult.getId()); fixedIncomePrediction.setSecurityId(equityResult.getSecurityId()); FIXED_INCOME_SECURITY_MATCHER.assertMatch(equityResult, fixedIncomePrediction); - -// Listing listingResult = listingImdg.getSingleObjectByFieldValues(Map.of("securityId", fixedIncomePrediction.getId())); -// listingPrediction.setId(listingResult.getId()); -// listingPrediction.setSecurityId(listingResult.getSecurityId()); -// LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } private FixedIncomeSecurity getFixedIncomeSecurity() { diff --git a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityFactory.java b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityFactory.java index 3e78596d8..4ecbe3dad 100644 --- a/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityFactory.java +++ b/clearing-parent/securities-service/src/test/java/ru/spcex/clearing/securities/service/MoneyMarketSecurityFactory.java @@ -12,15 +12,15 @@ import static ru.spcex.clearing.securities.service.AbstractServiceTest.*; class MoneyMarketSecurityFactory { - private String nominalCurrency = currencyCode; // (linked to currencyCode) + private String nominalCurrency = currencyCode; private Long id = 0L; - private Long securityId = 0L;// (linked to security) + private Long securityId = 0L; private String description = "tsetse"; private BigDecimal lotSize = BigDecimal.valueOf(341.0); private LocalDate startDate = LocalDate.ofEpochDay(0); private LocalDate endDate = LocalDate.now(); private BigDecimal nominalValue = BigDecimal.valueOf(11.0); - private String instrumentType = RATE; // (linked to instrumentType) + private String instrumentType = RATE; private String fullName = "estat"; private String shortName = "esasdftat"; private String securitySymbol = "sdfafd"; 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 98da455b2..504ca6236 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 @@ -45,36 +45,20 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest { moneyMarketSecurityFactory.setId(ID); } - /** - * {@link MoneyMarketSecurityService#newMoneyMarket(BaseRequest)}
- * Тест проверяет генерацию сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link MoneyMarketSecurityNewRequest}:
- * {@link MoneyMarketSecurityNewRequest#lotSize} - 1.0
- * {@link MoneyMarketSecurityNewRequest#startDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.
- * {@link MoneyMarketSecurityNewRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.
- * {@link MoneyMarketSecurityNewRequest#nominalValue} - 1.0
- * {@link MoneyMarketSecurityNewRequest#nominalCurrency} - 1L
- * {@link MoneyMarketSecurityNewRequest#instrumentType} - "sdgaga"
- * {@link MoneyMarketSecurityNewRequest#fullName} - "estat"
- */ @Test public void testNewMoneyMarketSecurity() { clearAllInImdg(moneyMarketSecurityMap); final String TOPIC = Consts.DESTINATION_MONEY_MARKET_SECURITY_NEW; final MoneyMarketSecurity moneyMarketSecurityPrediction = moneyMarketSecurityFactory - .getMoneyMarketSecurity(); + .getMoneyMarketSecurity(); final MoneyMarketSecurityNewRequest keyRequest = moneyMarketSecurityFactory - .getMoneyMarketSecurityNewRequest(); + .getMoneyMarketSecurityNewRequest(); Listing listingPrediction = ListingBuilder.builder() - .append(moneyMarketSecurityPrediction).append(keyRequest).build(); - - //ACT + .append(moneyMarketSecurityPrediction).append(keyRequest).build(); String jsonString = getJsonStringForNew(keyRequest, ID); addRecordToKafka((MockConsumer) moneyMarketSecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); MoneyMarketSecurity moneyMarketSecurityResult = moneyMarketSecurityMap.getFirstObjectBySQL(String.format("fullName = %s", moneyMarketSecurityFactory.getFullName())); @@ -88,60 +72,13 @@ 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.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ @Test public void testDeleteMoneyMarket() { clearAllInImdg(moneyMarketSecurityMap); final String TOPIC = Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE; final MoneyMarketSecurity moneyMarketSecurityPrediction = moneyMarketSecurityFactory - .getMoneyMarketSecurity(); + .getMoneyMarketSecurity(); moneyMarketSecurityMap.insert(moneyMarketSecurityPrediction); moneyMarketSecurityPrediction.setWorkflowStatus(ru.spcex.platform.enumeration.Status.Blocked.getKey()); @@ -152,13 +89,9 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest { CommonDeleteRequest commonDeleteRequest = new CommonDeleteRequest(); commonDeleteRequest.setId(ID); - - //ACT String jsonString = getJsonStringForDelete(commonDeleteRequest, ID); addRecordToKafka((MockConsumer) moneyMarketSecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); MoneyMarketSecurity moneyMarketSecurityResult = moneyMarketSecurityMap.getFirstObjectBySQL(String.format("fullName = %s", moneyMarketSecurityFactory.getFullName())); @@ -170,16 +103,6 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest { LISTING_MATCHER.assertMatch(listingResult, listingPrediction); } - /** - * {@link MoneyMarketSecurityService#updateMoneyMarket(BaseRequest)} - * Тест проверяет обновление сущности {@link MoneyMarketSecurity} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link MoneyMarketSecurityUpdateRequest}:
- * {@link MoneyMarketSecurityUpdateRequest#fullName} - sfgsdfg
- * {@link MoneyMarketSecurityUpdateRequest#instrumentType} - qwerqwe
- * {@link MoneyMarketSecurityUpdateRequest#nominalCurrency} - RUB
- * {@link MoneyMarketSecurityUpdateRequest#nominalValue} - 2.0
- * {@link MoneyMarketSecurityUpdateRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z + (24 * 3600)
- */ @Test public void testUpdateMoneyMarket() { clearAllInImdg(moneyMarketSecurityMap); @@ -188,26 +111,22 @@ public class MoneyMarketSecurityServiceTest extends AbstractServiceTest { BigDecimal updateLotSize = BigDecimal.valueOf(112.0); final MoneyMarketSecurity moneyMarketSecurityPrediction = moneyMarketSecurityFactory - .getMoneyMarketSecurity(); + .getMoneyMarketSecurity(); moneyMarketSecurityPrediction.setTermType(updateTermType); moneyMarketSecurityMap.insert(moneyMarketSecurityPrediction); moneyMarketSecurityPrediction.setTermType(termType); moneyMarketSecurityPrediction.setLotSize(updateLotSize); final MoneyMarketSecurityUpdateRequest keyRequest = moneyMarketSecurityFactory - .getMoneyMarketSecurityUpdateRequest(); + .getMoneyMarketSecurityUpdateRequest(); keyRequest.setTermType(termType); keyRequest.setLotSize(updateLotSize); Listing listingPrediction = new Listing(); listingPrediction = moneyMarketSecurityService.updateListingByMms(moneyMarketSecurityPrediction, listingPrediction); listingImdg.insert(listingPrediction); listingPrediction.setLotSize(updateLotSize); - - //ACT String jsonString = getJsonStringForUpdate(keyRequest, ID); addRecordToKafka((MockConsumer) moneyMarketSecurityService.getConsumer(), TOPIC, PARTITION, 0, jsonString); - - //ASSERT waitingSendAndCheckRecord(ID, mockProducer); MoneyMarketSecurity moneyMarketSecurityResult = moneyMarketSecurityMap.getFirstObjectBySQL(String.format("fullName = %s", moneyMarketSecurityFactory.getFullName())); diff --git a/clearing-parent/security-util/src/main/java/ru/spcex/clearing/util/security/UserRoleVerification.java b/clearing-parent/security-util/src/main/java/ru/spcex/clearing/util/security/UserRoleVerification.java index f76c116ba..00ecb037d 100644 --- a/clearing-parent/security-util/src/main/java/ru/spcex/clearing/util/security/UserRoleVerification.java +++ b/clearing-parent/security-util/src/main/java/ru/spcex/clearing/util/security/UserRoleVerification.java @@ -19,14 +19,6 @@ import ru.spcex.platform.utils.error.ValidationException; import java.util.Collection; import java.util.Objects; -/** - * Проверка дополнительных прав пользователя. - *

- * Основная проверка прав осуществляется на frontend-api, и использовать этот компонент дополнительно не требуется. - *

- * Использовать @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE), требует задание роли через setRoleForVerification(role). - * Либо роль можно задать во втором конструкторе, переопределив её где требуется (если используется scope prototype) - */ public class UserRoleVerification { protected Logger log = LoggerFactory.getLogger(getClass()); @@ -45,8 +37,9 @@ public class UserRoleVerification { this.roleVerificationError = roleVerificationError; } - //нужен чтобы спринг мог создать бин - private UserRoleVerification(){} + private UserRoleVerification() { + } + public UserRoleVerification(ImdgProvider imdg, IMessageResolver messageResolver, UserRole roleForVerification, @@ -67,7 +60,7 @@ public class UserRoleVerification { protected boolean userHasRole(Long userId, String userRole) { String query = String.format("userId=%s and userRole=%s and status=%s", - userId, userRole, Status.Active.getKey()); + userId, userRole, Status.Active.getKey()); Collection roles = userRoleSessions.getCollectionIdsBySQL(query); log.trace("userHasRole: found {} roles by query: {}", roles.size(), query); return !roles.isEmpty(); @@ -97,9 +90,9 @@ public class UserRoleVerification { String errMsg = messageResolver.resolve(new EnumMessage(roleVerificationError, requesterId)); log.info("User {} has no role: {}", requesterId, errMsg); return new RequestInfoUpdate() - .setId(req.getId()) - .setStatus(ru.spcex.clearing.platform.messaging.service.Status.Error) - .setMessage(errMsg); + .setId(req.getId()) + .setStatus(ru.spcex.clearing.platform.messaging.service.Status.Error) + .setMessage(errMsg); } else { log.trace("Request validateRoleAndGetResult for userId={} success", requesterId); } @@ -112,44 +105,4 @@ public class UserRoleVerification { this.roleForVerification = roleForVerification; return this; } - -// public UserRoleVerification(ImdgProvider imdg, UserRole roleForVerification, IErrorEnumId roleVerificationError) { -// userRoleSessions = imdg.getImdg(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class); -// companyRoleSet = imdg.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class); -// this.roleForVerification = roleForVerification; -// this.roleVerificationError = roleVerificationError; -// } -// protected Imdg companyRoleSet; -// protected Imdg users; -// -// public boolean userHasRole(Long userId, Long companyId, String userRole) { -// String query = String.format("userId=%s and companyId=%s and userRole=%s and status=%s", -// userId, companyId, userRole, Status.Active.getKey()); -// Collection roles = userRoleSessions.getCollectionIdsBySQL(query); -// log.trace("userHasRole: found {} roles by query: {}", roles.size(), query); -// return !roles.isEmpty(); -// } - - // userIsEnabled & exist - frontend-api validation - - -// public boolean userHasRole(Long userId, Long companyId, IEnumKey role) { -// return userHasRole(userId, companyId, role == null ? null : role.getKey()); -// } - -// public boolean userHasRoleOnObject(Long userId, BusinessObject /*todo WithUserId / WithCompany */ bObject) { -// todo impl -// return true; -// } - - -// public boolean companyHasRole(Long companyId, String companyRole) { -// String query = String.format("companyId=%s and companyRole=%s and workflowStatus=%s", -// companyId, companyRole, Status.Active.getKey()); -// Collection roles = companyRoleSet.getCollectionIdsBySQL(query); -// log.trace("companyHasRole: found {} roles by query: {}", roles.size(), query); -// if (roles.isEmpty()) return false; - //todo impl -// return true; -// } } diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/KafkaConfig.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/KafkaConfig.java index 69df8cc0a..161c03a11 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/KafkaConfig.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/KafkaConfig.java @@ -38,7 +38,7 @@ public class KafkaConfig { @Bean public ProducerFactory pf(ExportSwtServiceSettings settings) { KafkaProducerSettings kafkaSettings = settings.getKafkaProducer(); - return KafkaProducerFactory.producerFactory(kafkaSettings); // Использует специальный сериализатор в JSON + return KafkaProducerFactory.producerFactory(kafkaSettings); } @Bean("kafkaTemplate") diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java index c22344859..a7abda6b9 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/SFTPConfig.java @@ -92,7 +92,6 @@ public class SFTPConfig { .get(); } - // https://stackoverflow.com/questions/53655208/profile-doesnt-work-with-messaging-gateway @Bean("notificationsSftpGateway") public AnnotationGatewayProxyFactoryBean dbfGateway() { return new AnnotationGatewayProxyFactoryBean(SftpGateway.class); diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/settings/ExportSwtServiceSettings.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/settings/ExportSwtServiceSettings.java index 84e8a9d1e..b170fad95 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/settings/ExportSwtServiceSettings.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/config/settings/ExportSwtServiceSettings.java @@ -18,7 +18,6 @@ public class ExportSwtServiceSettings { private SftpOutboundFolderSetting sftpOut; private String docOut; - //todo ??? private Long interval public SftpOutboundFolderSetting getSftpOut() { diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java index cac9e5189..743635e0b 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterService.java @@ -33,7 +33,7 @@ public abstract class AbstractExporterService { public static final Charset ENCODING = Charset.forName("windows-1251"); protected final SwtTable type; protected final Imdg sdfImdg; - private final DateTimeFormatter dtFileNameFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS");// YYMMDDHHmmssSSS + private final DateTimeFormatter dtFileNameFormatter = DateTimeFormatter.ofPattern("yyMMddHHmmssSSS"); private final DateTimeFormatter dtInFileHeaderFormatter = DateTimeFormatter.ofPattern("yyyyMMdd'/'HHmm"); private final KafkaSender kafkaSender; protected final FileStorage fileStorage; @@ -78,13 +78,13 @@ public abstract class AbstractExporterService { ByteArrayOutputStream outBuffer = new ByteArrayOutputStream(); Collection records = selectItems(groupId); log.debug("Prepared {} record from {} to file {}", - records.size(), sdfImdg.getMapName(), fileName); + records.size(), sdfImdg.getMapName(), fileName); SWTHeaderData swtHeaderData = makeSwtHeader(records); makeSWTData(swtHeaderData, records, outBuffer); data = outBuffer.toByteArray(); } fileStorage.saveFile(fileName, data); - } catch (Exception e) { // IOException, ... + } catch (Exception e) { log.error("Failed export {} file", fileName); sendSwtExportedNotification(exportAt, null, ResultStatuses.notSuccess); throw new RuntimeException(e); @@ -117,12 +117,6 @@ public abstract class AbstractExporterService { } - /** - * @param type DF-09 - * @param section bond/fund/"" - * @param atTime LocalDateTime.now(), если null - текущее время - * @return пример "KS_RDC_DF-12_bond_220907151804503.txt" - */ protected String formatFileName(String type, String section, LocalDateTime atTime) { Objects.requireNonNull(type); if (section == null) section = ""; @@ -132,21 +126,17 @@ public abstract class AbstractExporterService { return String.format("KS_RDC_%s_%s%s.txt", type, section, dt); } - // Выборка protected Collection selectItems(Long groupId) { return sdfImdg.getCollectionObjectsBySQL("generationId = %d".formatted(groupId)); } - // Конвертация (поля см. meta.xml) protected abstract String convertRecord(T record, ConvertionContext context); -// protected abstract String[] swtHeader(); - protected void makeSWTData(SWTHeaderData header, Collection records, OutputStream outStream) { try (PrintWriter out = new PrintWriter(outStream, false, ENCODING)) { out.print(header.buildString()); int totalSize = records.size(); - int counter = totalSize == 0 ? 0 : 1; // нумерация начинается с 1 + int counter = totalSize == 0 ? 0 : 1; for (T row : records) { ConvertionContext context = new ConvertionContext(mapClass, counter, totalSize); String data = convertRecord(row, context); diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java index fd1f6062c..31bbe052d 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/LauncherCommandReceiver.java @@ -28,12 +28,9 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi @Override public void afterPropertiesSet() { -// callback(LauncherCommandRequest.class) -// .setConsumer(this::exportAll) -// .forDestination(Task.unloadingSession_LIMM.topic(), callbacks::put); // todo task name? callback(SwtExporterRequest.class) - .setConsumer(this::exportSpecial) - .forDestination(Consts.SWT_EXPORTER, callbacks::put); + .setConsumer(this::exportSpecial) + .forDestination(Consts.SWT_EXPORTER, callbacks::put); init(); } @@ -63,7 +60,5 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi } } } - //log.error("SWT export not execute for type \"{}\" - unknown command", req.getType()); - //todo return error? } } diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09Exporter.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09Exporter.java index 51efdf060..587254d55 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09Exporter.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09Exporter.java @@ -61,7 +61,6 @@ public class DF09Exporter extends AbstractExporterService { return swtHeaderData; } - // Выборка отсортированная @Override protected Collection selectItems(Long groupId) { List orderedList = new ArrayList<>(super.selectItems(groupId)); diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java index 1d9e4dede..8913eb35c 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF12Exporter.java @@ -57,10 +57,6 @@ public class DF12Exporter extends AbstractExporterService { @Override protected String getDocumentNameForJournal() { - //todo Выбор: - // Распоряжение на проведение операций по итогам клиринга (Фондовая секция) - //или - // Распоряжение на проведение операций по итогам клиринга (ОФЗ, ОБР) return "Распоряжение на проведение операций по итогам клиринга (Фондовая секция / ОФЗ, ОБР)"; } @@ -69,10 +65,9 @@ public class DF12Exporter extends AbstractExporterService { @Override protected String convertRecord(SDf12 record, ConvertionContext context) { StringBuilder stringBuilder = new StringBuilder(); - if (!Objects.equals(lastHeader20, record.getOutDocument())) { // header, тег :20: должен быть 1 раз только в начале документа - //stringBuilder.append(":20:").append(record.getOutDocument()).append(SWTHeaderData.LINE_SEPARATOR); + if (!Objects.equals(lastHeader20, record.getOutDocument())) { log.warn("SWT generationId={} last header :20: was \"{}\" but next record OutDocument=\"{}\"", - record.getGenerationId(), lastHeader20, record.getOutDocument()); + record.getGenerationId(), lastHeader20, record.getOutDocument()); lastHeader20 = record.getOutDocument(); } stringBuilder.append(":23:").append(record.getDirection()).append(SWTHeaderData.LINE_SEPARATOR); @@ -110,7 +105,5 @@ public class DF12Exporter extends AbstractExporterService { @Override protected void writeFooter(PrintWriter out, Collection records, int counter) { -// String footerCheckSum = counter + lineSeparator + records.size() + lineSeparator; -// out.print(footerCheckSum); } } diff --git a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF14Exporter.java b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF14Exporter.java index a17a2b7b1..13112e72d 100644 --- a/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF14Exporter.java +++ b/clearing-parent/swt-exporter/src/main/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF14Exporter.java @@ -57,10 +57,6 @@ public class DF14Exporter extends AbstractExporterService { @Override protected String getDocumentNameForJournal() { - //todo Выбор: - // Уведомление о завершении расчетов (ОФЗ, ОБР) - //или - // Уведомление о завершении расчетов (ОФЗ, ОБР) return "Уведомление о завершении расчетов (ОФЗ, ОБР)"; } @@ -84,6 +80,5 @@ public class DF14Exporter extends AbstractExporterService { @Override protected void writeFooter(PrintWriter out, Collection records, int counter) { - // нет специального конца файла } } diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java index 5f42cc630..b78a14d8e 100644 --- a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/AbstractExporterServiceTest.java @@ -23,7 +23,6 @@ public class AbstractExporterServiceTest extends AbstractServiceTest { String fileName = "KS_RDC_DF-14_bond_221005134616035.txt"; moneyExporterService.sendSwtExportedNotification(LocalDateTime.now(), 1L, ResultStatuses.notSuccess); - //TestUtils.waitingSendAndCheckRecord(null, mockProducer); } @Test diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09ExporterTest.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09ExporterTest.java index 68d43283e..339c0e93c 100644 --- a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09ExporterTest.java +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF09ExporterTest.java @@ -60,23 +60,19 @@ class DF09ExporterTest { ByteArrayOutputStream outBytes = new ByteArrayOutputStream(); exporter.makeSWTData(header, records, outBytes); String out = outBytes.toString(); -// try { -// FileUtils.write(new File("E:\\test_encode.txt"), out, "windows-1251"); -// } catch (Exception e){} assertTrue(out.length() > 35); - out=out.replaceAll("Date/Time.*","Date/Time:XXXX"); - out=out.replaceAll(":20:.*",":20:XXXX"); + out = out.replaceAll("Date/Time.*", "Date/Time:XXXX"); + out = out.replaceAll(":20:.*", ":20:XXXX"); assertEquals("To:CSO\r\n" + - "From:SPCE\r\n" + - "Type:009\r\n" + - "Date/Time:XXXX\r\n" + - ":18A:2\r\n" + - ":20:XXXX\r\n" + - ":21:test2\r\n" + - "test3:4567:test5:test6:test7\r\n" + - "DEPO:450:SECCODE:SPB:OK\r\n" + - "5017", out); - // Тест проверяет переносы строк: windows-1251 /r/n + "From:SPCE\r\n" + + "Type:009\r\n" + + "Date/Time:XXXX\r\n" + + ":18A:2\r\n" + + ":20:XXXX\r\n" + + ":21:test2\r\n" + + "test3:4567:test5:test6:test7\r\n" + + "DEPO:450:SECCODE:SPB:OK\r\n" + + "5017", out); } private static class TestableExporter extends DF09Exporter { diff --git a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11ExporterTest.java b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11ExporterTest.java index 6a684c58b..907fcf954 100644 --- a/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11ExporterTest.java +++ b/clearing-parent/swt-exporter/src/test/java/ru/spcex/clearing/swt/exporter/services/exportimpl/DF11ExporterTest.java @@ -24,10 +24,6 @@ import static ru.spcex.clearing.test.config.KafkaTestConfig.getCaptor; class DF11ExporterTest extends AbstractExporterServiceTest { - /** - * Тест проверяет создание строк документа DF-11 .
- */ -// @Test void cdeateSdf() { SwtTable type = SwtTable.SDF_11; Imdg map = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf11, SDf11.class); @@ -47,11 +43,9 @@ class DF11ExporterTest extends AbstractExporterServiceTest { swtExporterRequest.setType(type.getKey()); String request = getJsonStringForNew(swtExporterRequest, generationId); addRecordToKafka((MockConsumer) commandReceiver.getConsumer(), Consts.SWT_EXPORTER, 0, 0, request); - - //waiting for kafka send message (finale event) ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); BaseRequest baseRequestResult = (BaseRequest) captor.getValue().value(); JournalSdf journalSdf = (JournalSdf) baseRequestResult.getRequestPayload(); diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/controller/LauncherCommandReceiver.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/controller/LauncherCommandReceiver.java index 1ca177ca6..69ab2a09e 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/controller/LauncherCommandReceiver.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/controller/LauncherCommandReceiver.java @@ -24,20 +24,17 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi this.importer = importer; } - /** - * В реальности не используется - */ @Override public void afterPropertiesSet() { callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.run(ETable.S_DF_08)) - .forDestination(Task.createOrderConfirm.topic(), callbacks::put); // CORC + .setConsumer(action -> importer.run(ETable.S_DF_08)) + .forDestination(Task.createOrderConfirm.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.run(ETable.S_DF_10)) - .forDestination(Task.accrualOfBalance.topic(), callbacks::put); // GBAL + .setConsumer(action -> importer.run(ETable.S_DF_10)) + .forDestination(Task.accrualOfBalance.topic(), callbacks::put); callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.run(ETable.S_DF_13)) - .forDestination(Task.getBalance.topic(), callbacks::put); // GBLD + .setConsumer(action -> importer.run(ETable.S_DF_13)) + .forDestination(Task.getBalance.topic(), callbacks::put); init(); } } diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/ResultContainer.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/ResultContainer.java index de88522e4..ad014d709 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/ResultContainer.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/ResultContainer.java @@ -6,9 +6,6 @@ import ru.spcex.clearing.swt.importer.logic.data.enums.StageResult; import java.io.File; import java.util.UUID; -/** - * Контейнер для передачи результата между стадиями - */ public class ResultContainer { private UUID uuid; private ETable swtTable; diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/enums/ColumnType.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/enums/ColumnType.java index 2a1f5a751..fddd13a5a 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/enums/ColumnType.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/data/enums/ColumnType.java @@ -4,10 +4,6 @@ import com.linuxense.javadbf.DBFDataType; import java.sql.Types; -/** - * Типы данных в таблицах. - * Ставит в соответствие типы PostGRE и DBF - */ public enum ColumnType { VARCHAR(DBFDataType.CHARACTER, Types.VARCHAR), CHARACTER(DBFDataType.CHARACTER, Types.CHAR), diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java index 9895d7fb2..559f31298 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDB.java @@ -23,9 +23,6 @@ import java.util.concurrent.atomic.AtomicInteger; import static ru.spcex.clearing.swt.importer.readers.ValidationResult.SUCSESS; -/** - * Заливка проверенных данных в базу - */ @Component public class ImportToDB extends Stage { private final ImportSWTServiceSettings settings; diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java index 952469534..7bfb76038 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/SWTImportKafkaMessenger.java @@ -41,10 +41,6 @@ public class SWTImportKafkaMessenger implements InitializingBean { messengers.put(ETable.S_DF_21, groupId -> messageBalance(groupId, SdfTable.SDF_21)); } - /** - * отправляет в кафку сообщение, при необходимости - * (обрабатывается, например, в balance-service, clearing-service) - */ public void notifySystemIfNeeded(ETable table, Long groupId) { Consumer messenger = messengers.get(table); if (messenger != null) { @@ -73,21 +69,11 @@ public class SWTImportKafkaMessenger implements InitializingBean { } public void notifyUserAboutSuccessLoad(ResultContainer resultContainer) { -// if (ETable.S_DF_02 == resultContainer.getSwtTable()) { -// if (!(StageResult.OK == resultContainer.getLastStageStatus() || StageResult.COMPLETE == resultContainer.getLastStageStatus())) { -// return; -// } -// String fileName = resultContainer.getSwtFile().getName(); -// log.debug("Notify user about success {} \"{}\"", -// resultContainer.getSwtTable(), fileName); -// sendUserNotification(ObjectType.rgst, String.format("Загружен \"%s\" - успешно", fileName), Priority.LOW); -// } } private void sendUserNotification(ObjectType objectType, String comment, Priority priority) { final String destination = Consts.NOTIFICATION_NEW; NotificationNewRequest request = new NotificationNewRequest(); - //request.setObjectId(); request.setObjectType(objectType.getKey()); request.setPriority(priority.getKey()); request.setComment(comment); diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ValidateFields.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ValidateFields.java index d29b5261c..0b1d2f7c0 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ValidateFields.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/logic/stages/ValidateFields.java @@ -9,9 +9,6 @@ import ru.spcex.clearing.swt.importer.logic.data.enums.StageResult; import java.nio.charset.Charset; -/** - * Фильтрация источника на предмет соответствия полей - */ @Component public class ValidateFields extends Stage implements InitializingBean { private final ImportSWTServiceSettings settings; @@ -26,9 +23,6 @@ public class ValidateFields extends Stage implements InitializingBean { return StageResult.OK; } - /** - * 1. Проверяет кодировку из настройки swt.encoding-source - */ @Override public void afterPropertiesSet() throws Exception { initSWTCharset(); diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java index f5f02491a..aca2a8392 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/AbstractTemplate.java @@ -12,13 +12,6 @@ import java.util.function.Consumer; import static ru.spcex.clearing.swt.importer.readers.ValidationResult.SUCSESS; -/** - * Класс не потокобезопасен. - * Требуется пересоздавать экземпляры класса перед применением. - * Используйте getSDf21Template(), getSDf20Template(). - * - * @see SWTReader - */ public abstract class AbstractTemplate { protected Logger log = LoggerFactory.getLogger(getClass()); protected Scanner scanner; @@ -50,7 +43,7 @@ public abstract class AbstractTemplate { lineSetter.accept(scanner.nextLine()); return SUCSESS; } - return new ValidationResult("Line "+ lineNumber+" Bad file format. Unexpected EOF."); + return new ValidationResult("Line " + lineNumber + " Bad file format. Unexpected EOF."); } diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/SWTRecord.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/SWTRecord.java index f8836df97..6f4e3a886 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/SWTRecord.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/readers/SWTRecord.java @@ -17,7 +17,7 @@ public class SWTRecord implements Cloneable { private String valFor23Tag; private String valFor30Tag; private String valFor35ATag; - private String[] valFor35BTag;//Код ценной бумаги:наименование:тип + private String[] valFor35BTag; private String valFor60ATag; private String valFor62ATag; private String valFor66ATag; diff --git a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java index 1a2b841c1..e264a22ef 100644 --- a/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java +++ b/clearing-parent/swt-importer/src/main/java/ru/spcex/clearing/swt/importer/services/SWTImporterService.java @@ -82,7 +82,6 @@ public class SWTImporterService { } else { log.trace("no files were found"); } - // Сортировка по возрастанию времени изменения - обрабатывать только в таком порядке List> orderByTimeFiles = new ArrayList<>(); for (Map.Entry> newFilesEntry : newFiles.entrySet()) { ETable currTable = newFilesEntry.getKey(); diff --git a/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/config/ImportSWTServiceTest.java b/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/config/ImportSWTServiceTest.java index f932ed669..c8c1ce3ff 100644 --- a/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/config/ImportSWTServiceTest.java +++ b/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/config/ImportSWTServiceTest.java @@ -19,7 +19,7 @@ public class ImportSWTServiceTest { public ImportSWTServiceSettings settings(){ ImportSWTServiceSettings settings = new ImportSWTServiceSettings(); Common common = new Common(); - common.setEncodingSource("windows-1251"); // cp866 или windows-1251 + common.setEncodingSource("windows-1251"); settings.setCommon(common); return settings; } diff --git a/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java b/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java index 40d0f2841..7611045b5 100644 --- a/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java +++ b/clearing-parent/swt-importer/src/test/java/ru/spcex/clearing/swt/importer/logic/stages/ImportToDBTest.java @@ -52,7 +52,7 @@ class ImportToDBTest { waitAvailableImdgProviderAndAddAdminWithDefaultId(); } -// @Test + void process() throws IOException { ETable eTable = ETable.S_DF_20; File swtFile = new File("D:\\repo\\mfd\\clearing\\clearing-parent\\swt-importer\\src\\test\\java\\ru\\spcex\\clearing\\swt\\importer\\files\\RDC_KS_DF-20_230717163911161.txt"); diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/ImapEvent.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/ImapEvent.java index d6b74267b..4c529dfd0 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/ImapEvent.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/ImapEvent.java @@ -39,14 +39,13 @@ public class ImapEvent { } public void waitWhenHappened() throws InterruptedException { - //running timer task as daemon thread Timer timer = new Timer(true); timer.scheduleAtFixedRate(new TimerTask() { boolean secondRan; @Override public void run() { - checkEventHappened.set(secondRan);//если что-то пойдет не так не тормозить основной поток + checkEventHappened.set(secondRan); secondRan = true; } }, 0, 30 * 1000); @@ -55,7 +54,6 @@ public class ImapEvent { checkEventHappened.wait(100); } } - //preparing hazelcastImdgProvider for next test iMap.removeEntryListener(listenerAdding); iMap.removeEntryListener(listenerUpdating); iMap.removeEntryListener(listenerRemoving); diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/MatcherFactory.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/MatcherFactory.java index 6b5f60c45..c255df04e 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/MatcherFactory.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/MatcherFactory.java @@ -4,11 +4,6 @@ import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; -/** - * Factory for creating test matchers. - *

- * Comparing actual and expected objects via AssertJ - */ public class MatcherFactory { public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestObjectCreator.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestObjectCreator.java index 1cb6d557f..5b8033725 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestObjectCreator.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestObjectCreator.java @@ -15,20 +15,16 @@ public class TestObjectCreator { this.hazelcastServiceTest = hazelcastServiceTest; } - /** - * Создаёт пользователя администратора - * @param userId - */ public void createUserAdmin(Long userId) { Imdg userImdg = hazelcastServiceTest.getImdg( - IMDGDistributedNames.Map_User, User.class + IMDGDistributedNames.Map_User, User.class ); User user = new User(); user.setId(userId); user.setIdentifier("test user"); userImdg.insert(user); Imdg userRoleSessionImdg = hazelcastServiceTest.getImdg( - IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class + IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class ); UserRoleSession userRoleSession = new UserRoleSession(); userRoleSession.setId(userId); @@ -38,18 +34,4 @@ public class TestObjectCreator { userRoleSession.setStatus(WorkflowStatus.Active.getKey()); userRoleSessionImdg.insert(userRoleSession); } - -// public void fillWorkflowStatusDictionary() { -// Imdg workflowStatusDictionaryImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class); -// WorkflowStatusDictionary ws1 = new WorkflowStatusDictionary(); -// ws1.setId(1L); -// ws1.setCode(WorkflowStatus.Active.getKey()); -// ws1.setName("Active"); -// workflowStatusDictionaryImdg.insert(ws1); -// WorkflowStatusDictionary ws2 = new WorkflowStatusDictionary(); -// ws2.setId(2L); -// ws2.setCode(WorkflowStatus.Blocked.getKey()); -// ws2.setName("Blocked"); -// workflowStatusDictionaryImdg.insert(ws2); -// } } diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java index f27a0157f..4d8c6fc79 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/TestUtils.java @@ -43,40 +43,34 @@ public class TestUtils { public static final MatcherFactory.Matcher> BASE_REQUEST_MATCHER = usingIgnoringFieldsComparator(); private static final ObjectMapper objectMapper = new ObjectMapper(); static { - // see JacksonObjectMapper: jackson-datatype-jsr310 objectMapper.registerModule(new JavaTimeModule()); } public static void waitingSendAndCheckRecord(Long id, Producer mockProducer, ArgumentCaptor producerRecord) { - //waiting for kafka send message (finale event) verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); checkRecord(id, producerRecord); } public static void waitingSendAndCheckRecord(Long id, Producer mockProducer) { ArgumentCaptor producerRecord = getCaptor(mockProducer); - //waiting for kafka send message (finale event) verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); checkRecord(id, producerRecord); } public static void waitingSendAndCheckRecord(Long id, KafkaTemplate kafkaTemplate) { ArgumentCaptor producerRecord = getCaptor(kafkaTemplate); - //waiting for kafka send message (finale event) verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); checkRecord(id, producerRecord); } public static void waitingSendAndReceiveAndCheckRecord(Long id, KafkaTemplate kafkaTemplate) { ReplyingKafkaTemplate rplKafkaTemplate = (ReplyingKafkaTemplate) kafkaTemplate; ArgumentCaptor producerRecord = getCaptor(kafkaTemplate); - - //waiting for kafka send message (finale event) verify(rplKafkaTemplate, timeout(30_000L).times(1)) - .sendAndReceive(producerRecord.capture()); + .sendAndReceive(producerRecord.capture()); checkRecord(id, producerRecord); } @@ -108,10 +102,8 @@ public class TestUtils { String errorsMessage = "(%s) args [%s]".formatted(errorCode, String.join(", ", errorMessageArgs)); requestInfoUpdate.setMessage(errorsMessage); predictableBaseRequest.setRequestPayload(requestInfoUpdate); - - //waiting for kafka producer send message (finale event) verify(mockProducer, timeout(30_000L).times(1)) - .send(producerRecord.capture()); + .send(producerRecord.capture()); BaseRequest baseRequestResult = (BaseRequest) producerRecord.getValue().value(); assertEquals(Consts.REQUEST_INFO_UPDATE, producerRecord.getValue().topic()); @@ -209,7 +201,7 @@ public class TestUtils { public static void clearImdg(Imdg imdg) { if (imdg instanceof ImdgHazelcast) { - ((ImdgHazelcast)imdg).clear(); // test API + ((ImdgHazelcast) imdg).clear(); return; } Collection values = imdg.getAllValues(); diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/ImdgTestConfig.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/ImdgTestConfig.java index 8717e9e1c..36b8c3330 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/ImdgTestConfig.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/ImdgTestConfig.java @@ -89,8 +89,6 @@ public class ImdgTestConfig { params.setPassword("dev-pass"); params.setClusterMembers("127.0.0.1"); params.setInstanceName("hzTestClient" + new Random().nextInt()); -// params.setNearCacheConfig(new NearCacheConfig()); Если добавить будет с опазданием(8-12с) обновлятся данные для метода Imdg.getSingleObjectByID -// (getSingleObjectByFieldValues, getAllValues, getSingleObjectBySQL работают корректно) при ТРАНЗАКЦИЯХ. Используется в проде(по факту нет) если в конфиг добавить эту настройку.. return params; } } diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/KafkaTestConfig.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/KafkaTestConfig.java index a9dd282ef..68fb1c789 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/KafkaTestConfig.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/config/KafkaTestConfig.java @@ -43,8 +43,7 @@ public class KafkaTestConfig { public final static Map, ArgumentCaptor> producerCaptors = new HashMap<>(); public final static Map, ArgumentCaptor> templateCaptors = new HashMap<>(); - //из-за очисткой перед каждым тестом(MockReset.withSettings(MockReset.AFTER) необходимо каждый раз обновлять doReturn - public static ArgumentCaptor getCaptor(Producer mockProducer){ + public static ArgumentCaptor getCaptor(Producer mockProducer) { ArgumentCaptor captor = producerCaptors.get(mockProducer); setFuture(captor, mockProducer); return captor; @@ -61,17 +60,11 @@ public class KafkaTestConfig { doReturn(future).when(mockProducer).send(captor.capture()); } - /** - * Позволяет избежать NPE при вызове Future.get(), из-за очисткой перед каждым тестом(MockReset.withSettings(MockReset.AFTER) необходимо обновлять перед вызовом - * @param mockProducer - */ - public static void setMockFuture(Producer mockProducer){ + public static void setMockFuture(Producer mockProducer) { ArgumentCaptor captor = producerCaptors.get(mockProducer); setFuture(captor, mockProducer); } - public static void setFuture(ArgumentCaptor recordArgumentCaptor, ReplyingKafkaTemplate kafkaTemplate){ - - //sendToQueueWaitForAnswer + public static void setFuture(ArgumentCaptor recordArgumentCaptor, ReplyingKafkaTemplate kafkaTemplate) { RequestReplyFuture replyFuture = spy(RequestReplyFuture.class); doReturn(replyFuture).when(kafkaTemplate).sendAndReceive(recordArgumentCaptor.capture()); @@ -85,8 +78,6 @@ public class KafkaTestConfig { } } doReturn(null).when(consumerRecord).value(); - - //sendRequestToQueue ListenableFuture> send = mock(ListenableFuture.class); doReturn(send).when(kafkaTemplate).send(recordArgumentCaptor.capture()); try { @@ -98,16 +89,11 @@ public class KafkaTestConfig { } } - /** - * Позволяет избежать NPE при вызове Future.get(), из-за очисткой перед каждым тестом(MockReset.withSettings(MockReset.AFTER) необходимо обновлять перед вызовом - * @param kafkaTemplate - */ - public static void setMockFuture(KafkaTemplate kafkaTemplate){ + public static void setMockFuture(KafkaTemplate kafkaTemplate) { ArgumentCaptor captor = templateCaptors.get(kafkaTemplate); setFuture(captor, (ReplyingKafkaTemplate) kafkaTemplate); } -// @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) @Bean("mockProducer") public Producer kafkaProducer() { Producer mockProducer = mock(MockProducer.class, MockReset.withSettings(MockReset.AFTER)); diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/JsonUtil.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/JsonUtil.java index 7a64a96b6..8a8e489db 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/JsonUtil.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/JsonUtil.java @@ -54,16 +54,11 @@ public class JsonUtil { private static final ObjectMapper MAPPER = new JacksonObjectMapper(); private JacksonObjectMapper() { - //настройки Ильи configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); - //модуль для корректной сериализации LocalDateTime в поля JSON - JavaTimeModule модуль библиотеки jackson-datatype-jsr310 registerModule(new JavaTimeModule()); configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - //запрещаем доступ ко всем полям и методам класса и потом разрешаем доступ только к полям, нужны чтобы не было лишних полей из-за методов как: public ActionType getActionType() у BankAccountNewAction setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE); setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); - //не сериализуем null-поля -// setSerializationInclusion(JsonInclude.Include.NON_NULL); } public static ObjectMapper getMapper() { diff --git a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/MatcherFactoryWithJson.java b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/MatcherFactoryWithJson.java index 1824063ef..db1bf8c11 100644 --- a/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/MatcherFactoryWithJson.java +++ b/clearing-parent/test-clearing/src/main/java/ru/spcex/clearing/test/json/MatcherFactoryWithJson.java @@ -9,12 +9,6 @@ import java.io.UnsupportedEncodingException; import java.util.List; import java.util.function.BiConsumer; -/** - * Factory for creating test matchers. - *

- * Comparing actual and expected objects via AssertJ - * Support converting json MvcResult to objects for comparation. - */ public class MatcherFactoryWithJson { public static Matcher usingAssertionsForClass(Class clazz, BiConsumer assertion, BiConsumer, Iterable> iterableAssertion) { @@ -23,14 +17,14 @@ public class MatcherFactoryWithJson { public static Matcher usingEqualsComparatorForClass(Class clazz) { return usingAssertionsForClass(clazz, - (a, e) -> Assertions.assertThat(a).isEqualTo(e), - (a, e) -> Assertions.assertThat(a).isEqualTo(e)); + (a, e) -> Assertions.assertThat(a).isEqualTo(e), + (a, e) -> Assertions.assertThat(a).isEqualTo(e)); } public static Matcher usingIgnoringFieldsComparatorForClass(Class clazz, String... fieldsToIgnore) { return usingAssertionsForClass(clazz, - (a, e) -> Assertions.assertThat(a).usingRecursiveComparison().ignoringFields(fieldsToIgnore).isEqualTo(e), - (a, e) -> Assertions.assertThat(a).usingRecursiveFieldByFieldElementComparatorIgnoringFields(fieldsToIgnore).isEqualTo(e)); + (a, e) -> Assertions.assertThat(a).usingRecursiveComparison().ignoringFields(fieldsToIgnore).isEqualTo(e), + (a, e) -> Assertions.assertThat(a).usingRecursiveFieldByFieldElementComparatorIgnoringFields(fieldsToIgnore).isEqualTo(e)); } public static class Matcher { diff --git a/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/LauncherCommandReceiver.java b/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/LauncherCommandReceiver.java index 0d92824f2..b1e856941 100644 --- a/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/LauncherCommandReceiver.java +++ b/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/LauncherCommandReceiver.java @@ -25,8 +25,8 @@ public class LauncherCommandReceiver extends QueueConsumer implements Initializi @Override public void afterPropertiesSet() { callback(LauncherCommandRequest.class) - .setConsumer(action -> importer.process(true)) - .forDestination(Task.getOfTrades.topic(), callbacks::put); // GTRD + .setConsumer(action -> importer.process(true)) + .forDestination(Task.getOfTrades.topic(), callbacks::put); init(); } } diff --git a/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java b/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java index 1141631b8..e5dd50c87 100644 --- a/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java +++ b/clearing-parent/trade-importer/src/main/java/ru/spcex/clearing/trade/importer/services/TradeImporterService.java @@ -77,7 +77,7 @@ public class TradeImporterService { AtomicLong rows = new AtomicLong(); AtomicLong created = new AtomicLong(); AtomicLong updated = new AtomicLong(); - final long logProgressTime = 60_000L; // интервал вывода в лог каждую минуту + final long logProgressTime = 60_000L; AtomicLong logTime = new AtomicLong(System.currentTimeMillis() + logProgressTime); String query = String.format("SELECT * FROM %s.Trades", schema); log.debug("Load from DB STrades. Query: {}", query); @@ -92,14 +92,12 @@ public class TradeImporterService { if (isValidTrades(tradesDb) && fillNessessaryFields(tradesDb)) { STrades sTrades = getSTradesFromImdg(tradesDb, sTradesImdg); if (sTrades != null && byCommand) { - // Обновление всех полей объекта из БД tradesDb.setId(sTrades.getId()); tradesDb.setCreated(sTrades.getCreated()); tradesDb.setUpdated(currentInstant); sTradesImdg.update(tradesDb); updated.incrementAndGet(); } else if (sTrades == null) { - // Создание объекта из БД tradesDb.setCreated(currentInstant); tradesDb.setUpdated(currentInstant); sTradesImdg.insert(tradesDb); @@ -125,9 +123,6 @@ public class TradeImporterService { } } - /** - * returns OK - everything is kk - */ private boolean fillNessessaryFields(STrades tradesDb) { Consumer logErr = (st) -> log.error("strades {} {} {}", tradesDb.getTradeDate(), tradesDb.getTradeNum(), st); try { diff --git a/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/config/config/DbTestConnectionConfig.java b/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/config/config/DbTestConnectionConfig.java index d295c5f19..87a83b8df 100644 --- a/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/config/config/DbTestConnectionConfig.java +++ b/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/config/config/DbTestConnectionConfig.java @@ -36,7 +36,6 @@ public class DbTestConnectionConfig { String OPERATION_DATABASE_CONNECTION_CHECK = String.format("Database [%s] connection check", dbUrl); try { Connection conn = cpds.getConnection(); -// conn.close(); log.info("{}: success", OPERATION_DATABASE_CONNECTION_CHECK); return cpds; } catch (Throwable e) { diff --git a/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/services/TradeImporterServiceTest.java b/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/services/TradeImporterServiceTest.java index 12f55e0c9..daeae9f70 100644 --- a/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/services/TradeImporterServiceTest.java +++ b/clearing-parent/trade-importer/src/test/java/ru/spcex/clearing/trade/importer/services/TradeImporterServiceTest.java @@ -45,7 +45,6 @@ class TradeImporterServiceTest extends AbstractServiceTest { Path path = Paths.get("src", "main", "resources"); String currentPath = path.toAbsolutePath().toString(); System.setProperty("spring.config.location", currentPath); -// Hazelcast.shutdownAll(); } @BeforeEach @@ -53,35 +52,22 @@ class TradeImporterServiceTest extends AbstractServiceTest { clearAllInImdg(sTradesImdg); } - /** - * {@link TradeImporterService#process(boolean)}
- * Тест проверяет обновление сущности {@link STrades}.
- * Входной запрос {@link LauncherCommandRequest}:
- */ -// @Test //для работы теста нужна тестовая база Microsoft SQL с данными void process() { STrades sTrade = getSTrade(); Long id = sTradesImdg.insert(sTrade); - addRecordToKafka((MockConsumer) launcherCommandReceiver.getConsumer(), Task.getOfTrades.topic(), 0, 1, getJsonStringForNew(new LauncherCommandRequest(),0)); - - //waiting for kafka producer send message + addRecordToKafka((MockConsumer) launcherCommandReceiver.getConsumer(), Task.getOfTrades.topic(), 0, 1, getJsonStringForNew(new LauncherCommandRequest(), 0)); ArgumentCaptor captor = getCaptor(kafkaTemplate); verify(kafkaTemplate, timeout(30_000L).times(1)) - .send(captor.capture()); + .send(captor.capture()); STrades sTrades = tradeImporterService.getSTradesFromImdg(sTrade, sTradesImdg); assertEquals(sTrades.getId(), id); } - /** - * {@link TradeImporterService#process(boolean)}
- * Тест проверяет обновление сущности {@link STrades}.
- * Входной запрос {@link LauncherCommandRequest}:
- */ @Test - void getSTradesFromImdg(){ + void getSTradesFromImdg() { STrades sTrade = getSTrade(); Long id = sTradesImdg.insert(sTrade); STrades sTradeRes = tradeImporterService.getSTradesFromImdg(sTrade, sTradesImdg); diff --git a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/Enum/Table.java b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/Enum/Table.java index b7cb1c11a..6faaf0096 100644 --- a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/Enum/Table.java +++ b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/Enum/Table.java @@ -8,13 +8,11 @@ import java.util.Map; import java.util.function.Function; public enum Table { - //from dbf-importer S_DF01("DF-01", IMDGDistributedNames.Map_SDf01, SDf01.class), S_DF04("DF-04", IMDGDistributedNames.Map_SDf04, SDf04.class), S_DF06("DF-06", IMDGDistributedNames.Map_SDf06, SDf06.class), S_DF52("DF-52", IMDGDistributedNames.Map_SDf52, SDf52.class), S_DF55("DF-55", IMDGDistributedNames.Map_SDf55, SDf55.class), - //from dbf-exporter S_DF02("DF-02", IMDGDistributedNames.Map_SDf02, SDf02.class), S_DF03("DF-03", IMDGDistributedNames.Map_SDf03, SDf03.class), S_DF07("DF-07", IMDGDistributedNames.Map_SDf07, SDf07.class), @@ -28,19 +26,10 @@ public enum Table { S_DF53, new TableProcessor(S_DF52, value -> ((SDf52) value).getGenerationId(), value -> ((SDf53) value).getInSDfId()), S_DF55, new TableProcessor(S_DF54, value -> ((SDf54) value).getGenerationId(), value -> null)); - /** - * Имя таблицы - */ public final String tableSDf; - /** - * Имя таблицы hazelcast в которой будет поиск generationId - */ private final String hazelcastMapName; - /** - * Класс объекта - */ private final Class entityClass; Table(String tableSDf, String hazelcastMapName, Class entityClass) { diff --git a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/KeyRateService.java b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/KeyRateService.java index 528c77777..c77c2b1e4 100644 --- a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/KeyRateService.java +++ b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/KeyRateService.java @@ -19,7 +19,7 @@ import ru.spcex.platform.enumeration.Status; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; -@Deprecated // KeyRate was deleted +@Deprecated @Service public class KeyRateService extends QueueConsumer implements InitializingBean { private final Logger log = LoggerFactory.getLogger(getClass()); diff --git a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/PairSdfService.java b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/PairSdfService.java index 46498016c..6bb7f5871 100644 --- a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/PairSdfService.java +++ b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/PairSdfService.java @@ -81,7 +81,6 @@ public class PairSdfService extends QueueConsumer implements InitializingBean { log.info("Process PairSdfRequest={} (by OUT)!", LogFormatter.toString(request)); Table.TableProcessor processor = outTables.get(outTable); PairSdf pairSdf = null; - // out generationId -> outSdf inSdfId -> inSdf by id -> inSdf generationId -> pairSdf by in_s_df_id if (request.getGenerationId() != null) { Imdg outMap = imdgProvider.getImdg(outTable.getHazelcastMapName(), outTable.getEntityClass()); SpcexObjectBase outSdf = outMap.getFirstObjectByFieldValues(Map.of("generationId", request.getGenerationId())); diff --git a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java index d2562ac71..5a3c67bfd 100644 --- a/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java +++ b/clearing-parent/utility-service/src/main/java/ru/spcex/clearing/utility/service/UserService.java @@ -230,7 +230,6 @@ public class UserService extends QueueConsumer implements InitializingBean { public static class RoleAction { String roleName; - //------поля при обновления----- Status newStatus; UserRoleSession roleToChange; diff --git a/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/KeyRateServiceDisabled.java b/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/KeyRateServiceDisabled.java index 3fa7db0d5..c561fc308 100644 --- a/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/KeyRateServiceDisabled.java +++ b/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/KeyRateServiceDisabled.java @@ -79,16 +79,6 @@ public class KeyRateServiceDisabled { keyRateService.afterPropertiesSet(); } - /** - * {@link KeyRateService#newKeyRate(BaseRequest)} - * Тест проверяет генерацию сущности {@link KeyRate} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link KeyRateNewRequest}:
- * {@link KeyRateNewRequest#keyRate} - 0.5
- * {@link KeyRateNewRequest#document} - "Test"
- * {@link KeyRateNewRequest#startDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.
- * {@link KeyRateNewRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.
- */ -// @Test public void testNewKeyRate() throws InterruptedException { final String TOPIC = Consts.DESTINATION_KEY_RATE_NEW; final String MAP = IMDGDistributedNames.Map_KeyRate; @@ -111,7 +101,7 @@ public class KeyRateServiceDisabled { String jsonRequest = jsonBaseRequest(baseRequest); ConsumerRecord consumerRecord = - new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonRequest); + new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonRequest); kafkaMockQueue = new MockConsumer<>(OffsetResetStrategy.EARLIEST); initKafka(TOPIC, PARTITION, OFFSET); @@ -131,7 +121,7 @@ public class KeyRateServiceDisabled { keyRatePrediction.setId(entryEvent.getKey()); MatcherFactory.Matcher matcher = MatcherFactory - .usingIgnoringFieldsComparator("id"); + .usingIgnoringFieldsComparator("id"); matcher.assertMatch(keyRateResult, keyRatePrediction); System.out.println("ok"); setIsUsed(true); @@ -150,13 +140,6 @@ public class KeyRateServiceDisabled { iMap.removeEntryListener(listenerID); } - /** - * {@link KeyRateService#deleteKeyRate(BaseRequest)}
- * Тест проверяет удаление сущности {@link KeyRate} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link CommonDeleteRequest}:
- * {@link CommonDeleteRequest#id} - Идентификатор записи
- */ -// @Test public void testDeleteKeyRate() throws InterruptedException { final String TOPIC = Consts.DESTINATION_KEY_RATE_DELETE; final String MAP = IMDGDistributedNames.Map_KeyRate; @@ -167,7 +150,7 @@ public class KeyRateServiceDisabled { final Long REQUEST_ID = 2L; final KeyRateFactory keyRateFactory = new KeyRateFactory() - .setId(ID); + .setId(ID); final KeyRate initialKeyRate = keyRateFactory.getKeyRate(); final CommonDeleteRequest keyRequest = keyRateFactory.getCommonDeleteRequest(); @@ -181,7 +164,7 @@ public class KeyRateServiceDisabled { String jsonRequest = jsonBaseRequest(baseRequest); ConsumerRecord consumerRecord = - new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonRequest); + new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonRequest); kafkaMockQueue = new MockConsumer<>(OffsetResetStrategy.EARLIEST); initKafka(TOPIC, PARTITION, OFFSET); @@ -215,16 +198,6 @@ public class KeyRateServiceDisabled { iMap.removeEntryListener(listenerID); } - /** - * {@link KeyRateService#updateKeyRate(BaseRequest)} - * Тест проверяет генерацию сущности {@link KeyRate} в Hazelcast при передаче из Apache Kafka.
- * Входной запрос {@link KeyRateUpdateRequest}:
- * {@link KeyRateUpdateRequest#keyRate} - 5
- * {@link KeyRateUpdateRequest#document} - "Update"
- * {@link KeyRateUpdateRequest#startDate} - текущее колличество секунд с 1970-01-01T00:00:00Z + (24 * 3600)
- * {@link KeyRateUpdateRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z + (24 * 3600)
- */ -// @Test public void testUpdateKeyRate() throws InterruptedException { final String TOPIC = Consts.DESTINATION_KEY_RATE_UPDATE; final String MAP = IMDGDistributedNames.Map_KeyRate; @@ -235,15 +208,15 @@ public class KeyRateServiceDisabled { final Long REQUEST_ID = 1L; final KeyRateFactory keyRateFactory = new KeyRateFactory() - .setId(ID); + .setId(ID); final KeyRate initialKeyRate = keyRateFactory.getKeyRate(); keyRateFactory - .setRate(new BigDecimal("5")) - .setEndDate(LocalDate.ofEpochDay(24 * 3600)) - .setStartDate(LocalDate.ofEpochDay(24 * 3600)) - .setDocument("Update"); + .setRate(new BigDecimal("5")) + .setEndDate(LocalDate.ofEpochDay(24 * 3600)) + .setStartDate(LocalDate.ofEpochDay(24 * 3600)) + .setDocument("Update"); final KeyRate keyRatePrediction = keyRateFactory.getKeyRate(); final KeyRateUpdateRequest keyRequest = keyRateFactory.getKeyRateUpdateRequest(); @@ -257,7 +230,7 @@ public class KeyRateServiceDisabled { String jsonRequest = jsonBaseRequest(baseRequest); ConsumerRecord consumerRecord = - new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonRequest); + new ConsumerRecord<>(TOPIC, PARTITION, 0, "key", jsonRequest); kafkaMockQueue = new MockConsumer<>(OffsetResetStrategy.EARLIEST); initKafka(TOPIC, PARTITION, OFFSET); @@ -275,7 +248,7 @@ public class KeyRateServiceDisabled { KeyRate keyRateResult = entryEvent.getValue(); MatcherFactory.Matcher matcher = MatcherFactory - .usingIgnoringFieldsComparator("id"); + .usingIgnoringFieldsComparator("id"); matcher.assertMatch(keyRateResult, keyRatePrediction); diff --git a/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/PairSdfServiceTest.java b/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/PairSdfServiceTest.java index fa8cb313c..a5a8d7f7d 100644 --- a/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/PairSdfServiceTest.java +++ b/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/service/PairSdfServiceTest.java @@ -78,7 +78,7 @@ class PairSdfServiceTest { this.pairSdfImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PairSdf, PairSdf.class); } - @Disabled//Для отладки + @Disabled @Test void processRequest() throws InterruptedException { Long ID = currentID.getAndIncrement(); diff --git a/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/utils/MatcherFactory.java b/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/utils/MatcherFactory.java index 06162be8f..494d8fafe 100644 --- a/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/utils/MatcherFactory.java +++ b/clearing-parent/utility-service/src/test/java/ru/spcex/clearing/utility/utils/MatcherFactory.java @@ -3,11 +3,6 @@ package ru.spcex.clearing.utility.utils; import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; -/** - * Factory for creating test matchers. - *

- * Comparing actual and expected objects via AssertJ - */ public class MatcherFactory { public static Matcher usingIgnoringFieldsComparator(String... fieldsToIgnore) { diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/SpcexObjectBase.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/SpcexObjectBase.java index b43f7ff35..184a92bc4 100644 --- a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/SpcexObjectBase.java +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/SpcexObjectBase.java @@ -4,9 +4,6 @@ import ru.spcex.platform.classes.base.interfaces.WithId; import java.io.Serializable; -/** - * Long ID - based primary key object - */ public abstract class SpcexObjectBase implements WithId, Serializable { protected Long id; diff --git a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/IClearingFacade.java b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/IClearingFacade.java index d640f6026..4f2d18274 100644 --- a/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/IClearingFacade.java +++ b/platform-parent/platform-classes-base/src/main/java/ru/spcex/platform/classes/base/interfaces/IClearingFacade.java @@ -2,6 +2,6 @@ package ru.spcex.platform.classes.base.interfaces; public interface IClearingFacade { void lock(); + void unlock(); - //something about store objects? } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BalanceAccountType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BalanceAccountType.java index e4e2085f3..447239f5a 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BalanceAccountType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BalanceAccountType.java @@ -2,7 +2,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -@Deprecated // Словарь balanceAccountTypeDictionary удалён +@Deprecated public enum BalanceAccountType implements IEnumKey { Active("ACTV"), Blocked("BLKD"); diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BondType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BondType.java index 423e427aa..a65ac7795 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BondType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/BondType.java @@ -3,13 +3,13 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum BondType implements IEnumKey { - Z("Z"), // Дисконтная облигация - F("F"), // Купонная облигация с постоянным купоном - V("V"), // Купонная облигация с переменным купоном - C("C"), // Купонная облигация банка России - E("E"), // Биржевая облигация - I("I"), // Облигация с индексированным номиналом - M("M"), // Облигация с амортизацией долга + Z("Z"), + F("F"), + V("V"), + C("C"), + E("E"), + I("I"), + M("M"), ; private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java index e9aa5181e..a13941e82 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingCategory.java @@ -2,18 +2,15 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * CLEARING_CATEGORY_DICTIONARY - */ public enum ClearingCategory implements IEnumKey { undefined(UNDEFINED_VALUE), - C("C"), // Категория «Ц» - Банк России - B("B"), // Категория «Б» - Кредитная организация ДР - F("F"), // Категория «Ф» - Участник рынка РЦБ - I("I"), // Категория «И» - Инициатор по ТБС - V("V"), // Категория «В» - Инициатор по ТКС - T("T"), // Категория «Т» - Участник товарного рынка - K("K"); // Категория «К» - Участник клиринга - Контроллер + C("C"), + B("B"), + F("F"), + I("I"), + V("V"), + T("T"), + K("K"); private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java index 82526ebaa..4b861c8fd 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ClearingStatus.java @@ -2,7 +2,7 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -@Deprecated // словарь ClearingStatusDictionary удалён +@Deprecated public enum ClearingStatus implements IEnumKey { OK("OK"), FAIL("FAIL"), diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ContactTypes.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ContactTypes.java index 647335612..609393172 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ContactTypes.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ContactTypes.java @@ -2,21 +2,18 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * CONTACT_TYPE_DICTIONARY - */ public enum ContactTypes implements IEnumKey { - adrs("ADRS"), // Адрес - post("POST"), // Почтовый адрес - cont("CONT"), // Контактное лицо - mail("MAIL"), // Электронная почта - phon("PHON"), // Телефон - gdir("GDIR"), // Генеральный директор - trst("TRST"), // Доверенное лицо - fax("FAX"), // Факс - info("INFO"), // Контактная информация - cmnt("CMNT"), // Примечание - web("WEB"), // Веб-сайт + adrs("ADRS"), + post("POST"), + cont("CONT"), + mail("MAIL"), + phon("PHON"), + gdir("GDIR"), + trst("TRST"), + fax("FAX"), + info("INFO"), + cmnt("CMNT"), + web("WEB"), ; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CurrencyCode.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CurrencyCode.java index f8d564186..e434ddeb7 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CurrencyCode.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/CurrencyCode.java @@ -5,13 +5,13 @@ import ru.spcex.platform.utils.text.TextUtil; public enum CurrencyCode implements IEnumKey { RUB("RUB"), - RUR("RUR"),//fixme may be remove to separate enum + RUR("RUR"), SUR("SUR"), ; public static boolean isRub(String currencyCode) { - return IEnumKey.containsIgnoreCase(currencyCode, RUB, RUR, SUR); + return IEnumKey.containsIgnoreCase(currencyCode, RUB, RUR, SUR); } public static boolean isRubDefault(String currencyCode) { diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/DocumentTypes.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/DocumentTypes.java index 68bd9d1ce..09dd29661 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/DocumentTypes.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/DocumentTypes.java @@ -2,33 +2,30 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * DOCUMENT_TYPE_DICTIONARY - */ public enum DocumentTypes implements IEnumKey { - pasp("PASP"), // Паспорт - icrt("ICRT"), // Удостоверение личности - prxy("PRXY"), // Доверенность - cntr("CNTR"), // Договор клиринга - regs("REGS"), // Регистрация - form("FORM"), // Анкета участника - ogrn("OGRN"), // ОГРН - licb("LICB"), // Банковская лицензия - licp("LICP"), // Лицензия проф. участника - plac("PLAC"), // Регистрация по месту пребывания - inn("INN"), // ИНН - cio("CIO"), // КИО - licr("LICR"), // Брокерская лицензия - licd("LICD"), // Номер дилерской лицензии - lict("LICT"), // Номер лицензии по управлению ЦБ - licc("LICC"), // Номер лицензии по брокерской деятельности ПФИ (производных финансовых инструментов) - licf("LICF"), // Номер лицензии форекс-дилера - fin("FIN"), // Финансовая отчетность - trst("TRST"), // Полномочия должностных лиц - pmkr("PMKR"), // Распоряжение на списание МКР - taut("TAUT"), // Допуск к торгам - edoc("EDOC"), // Договор об электронном взаимодействии - xcnt("XCNT"); // Документ о расторжении Договора клиринга + pasp("PASP"), + icrt("ICRT"), + prxy("PRXY"), + cntr("CNTR"), + regs("REGS"), + form("FORM"), + ogrn("OGRN"), + licb("LICB"), + licp("LICP"), + plac("PLAC"), + inn("INN"), + cio("CIO"), + licr("LICR"), + licd("LICD"), + lict("LICT"), + licc("LICC"), + licf("LICF"), + fin("FIN"), + trst("TRST"), + pmkr("PMKR"), + taut("TAUT"), + edoc("EDOC"), + xcnt("XCNT"); private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InstrumentType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InstrumentType.java index 11e95d1db..e914a6e7b 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InstrumentType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/InstrumentType.java @@ -3,13 +3,12 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum InstrumentType implements IEnumKey { - BOND("BOND"), // (облигации) - EQTY("EQTY"), // (акции) - RATE("RATE"), // Инструмент Денежного рынка - CRNC("CRNC"), // Валюта + BOND("BOND"), + EQTY("EQTY"), + RATE("RATE"), + CRNC("CRNC"), MFND("MFND"), - CURR("CURR") - ; + CURR("CURR"); private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Priority.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Priority.java index 11eb55544..9a0732b84 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Priority.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Priority.java @@ -2,13 +2,9 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * Для Notification.priority - * priority_dictionary - */ public enum Priority implements IEnumKey { - HIGH("HIGH"), // Высокий - LOW("LOW"); // Низкий + HIGH("HIGH"), + LOW("LOW"); private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryCapacity.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryCapacity.java index 4a7f28e72..773cc1ce7 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryCapacity.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/RegistryCapacity.java @@ -2,15 +2,13 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -//todo фиксированные ли это значения? расшифровки подъедут? public enum RegistryCapacity implements IEnumKey { A("A"), B("B"), Z("Z"), C("C"), E("E"), - P("P") - ; + P("P"); private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportBuilderType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportBuilderType.java index dee144f70..e2e6be328 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportBuilderType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportBuilderType.java @@ -2,10 +2,6 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * Идентификатор отчета - * todo сделать для них dictionary - */ public enum ReportBuilderType implements IEnumKey { EXECUTED_DEAL_REPORT("executed-deal-report"), UNFULFILLED_DEAL_REPORT("unfulfilled-deal-report"), diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportType.java index 29d023232..81e5206b3 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ReportType.java @@ -2,10 +2,6 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * Идентификатор отчета - * todo сделать для них dictionary - */ public enum ReportType implements IEnumKey { PFX64("PFX64"), PFX65("PFX65"), diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ResultStatuses.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ResultStatuses.java index 3eb2be166..84b9316d2 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ResultStatuses.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ResultStatuses.java @@ -2,12 +2,9 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * ResultStatusDictionary - */ public enum ResultStatuses implements IEnumKey { - notSuccess("NACK"), // Неуспешно - success("ACK"); // Успешно + notSuccess("NACK"), + success("ACK"); private final String key; @@ -20,7 +17,7 @@ public enum ResultStatuses implements IEnumKey { return key; } - public static ResultStatuses successOrNot(final Boolean val){ + public static ResultStatuses successOrNot(final Boolean val) { return val ? ResultStatuses.success : ResultStatuses.notSuccess; } } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Sender.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Sender.java index 9b3cd0317..951ef27f1 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Sender.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Sender.java @@ -3,9 +3,9 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumId; public enum Sender implements IEnumId { - One(1L), /* СПВБ */ - Prc(2L), /* ПРЦ */ - Rdc(3L); /* РДЦ */ + One(1L), + Prc(2L), + Rdc(3L); private final Long key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ServiceProduct.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ServiceProduct.java index 7272851d8..81ea1bd6e 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ServiceProduct.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ServiceProduct.java @@ -3,9 +3,8 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum ServiceProduct implements IEnumKey { - PRNT("PRNT"), // Расчет обязательств с процентом - ZERO("ZERO") // Расчет обязательств без процента (по умолчанию) - ; + PRNT("PRNT"), + ZERO("ZERO"); private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ShareType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ShareType.java index 51744d51a..ad37d5619 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ShareType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/ShareType.java @@ -3,8 +3,8 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum ShareType implements IEnumKey { - S("S"), // Обыкновенная акция - P("P"), // Привилегированная акция + S("S"), + P("P"), ; private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java index 50988fa24..ee9b7b087 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Task.java @@ -3,62 +3,62 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum Task implements IEnumKey { - accrualOfBalance("GBAL"),//Зачисление остатков - accountBlock("ABLK"),//Блокировка счета - additionOrDeleteOfBalance("ADBL"),//Дозачисление/списание остатков - getOfTrades("GTRD"),//Получение сделок из Торговой системы - getCurrencyRates("CBRR"),//Загрузка кросс-курсов - getVerification("GVER"),// Запуск сверки - @Deprecated /* todo GBLD удаляется по CLS-267, CLS-275 */ getBalance("GBLD"),// Поступление средств - startOfClearing("SCLR"),// Запуск клиринговой сессии - startOfB0("IPO0"),// Запуск клиринговой сессии - startOfT0("TRDT"),// Запуск клиринговой сессии - startOfPreClearing("SPRC"),// Запуск преклиринга - startPostClearing("SPOC"),// Запуск постклиринга + accrualOfBalance("GBAL"), + accountBlock("ABLK"), + additionOrDeleteOfBalance("ADBL"), + getOfTrades("GTRD"), + getCurrencyRates("CBRR"), + getVerification("GVER"), + @Deprecated getBalance("GBLD"), + startOfClearing("SCLR"), + startOfB0("IPO0"), + startOfT0("TRDT"), + startOfPreClearing("SPRC"), + startPostClearing("SPOC"), createOrder("CORD"), createOrderConfirm("CORC"), - getAllBalance("GALB"), // Запрос остатков по всем счетам (отправка ДФ-51, ДФ-56 для получения ответа ДФ-01, ДФ-57) - createReport_GREP("GREP"), // Создание отчёта (report-service) RPRT нескольких видов, этот GREP - createDealsReport_GRET("GRET"), // Формирование отчетности по сделкам - createDealsReport_GREF("GREF"), // Формирование финальной отчетности по сделкам - unloadingSession_LIMM("LIMM"),//Выгрузка в торговую систему остатков по деньгам - unloadingSession_LIMS("LIMS"),//Выгрузка в торговую систему остатков по бумагам - unloadingSession_LIMC("LIMC"),//Выгрузка в торговую систему остатков по валютам - liquidationSession_LIQU("LIQU"),//Ликвидационная сессия по обязательтсвам участника - startSession_STRM("STRM"),//Начало торговой сессии секции МКР - terminationSession_ETRM("ETRM"),//Завершение торговой сессии секции МКР + getAllBalance("GALB"), + createReport_GREP("GREP"), + createDealsReport_GRET("GRET"), + createDealsReport_GREF("GREF"), + unloadingSession_LIMM("LIMM"), + unloadingSession_LIMS("LIMS"), + unloadingSession_LIMC("LIMC"), + liquidationSession_LIQU("LIQU"), + startSession_STRM("STRM"), + terminationSession_ETRM("ETRM"), startTime_SDEP("SDEP"), endTime_EDEP("EDEP"), - startSession_SIPO("SIPO"),//Начало торговой сессии по первичным торгам - terminationSession_EIPO("EIPO"),//Завершение торговой сессии по первичным торгам - startSession_STRF("STRF"),//Начало торговой сессии по вторичным торгам - terminationSession_ETRF("ETRF"),//Завершение торговой сессии по вторичным торгам - reconciliationRequest_RCHK("RCHK"),//Запрос на сверку активов - createRegistry_GRYT("GRYT"),//Сформировать регистр на текущий день - @Deprecated createRegistry_GRRT("GRRT"),//Сформировать реестр остатков ценных бумаг на текущий день - createRegistry_GBRR("GBRR"),//Сформировать реестра остатков денежных средств на текущий день - @Deprecated createRegistry_GORD("GORD"), // Формирование реестра распоряжений, направленных расчетному депозитарию - @Deprecated createRegistry_GORR("GORR"), // Формирование реестра распоряжений, направленных расчетному депозитарию - @Deprecated createRegistry_GCMR("GCMR"), // Формирование реестра участников клиринга - @Deprecated createRegistry_GSRR("GSRR"), // Формирование реестра отправленных отчетов - @Deprecated createRegistry_GACA("GACA"), // Создание файла остатков CSV по клиринговым счетам - @Deprecated createRegistry_ADLR("ADLR"), // формирование admittedLiabilitiesRegister - @Deprecated createRegistry_CDLR("CDLR"), // формирование coveredLiabilitiesRegister - @Deprecated createRegistry_EXLR("EXLR"), // формирование excludeLiabilitiesRegister - @Deprecated createRegistry_LBSR("LBSR"), // формирование liabilitiesRegister - @Deprecated createRegistry_ECNR("ECNR"), // формирование executionRegister - createRegistry_STRS("STRS"), // Начало торговой сессии - createRegistry_ETRS("ETRS"), // Завершение торговой сессии - forming_CMBA("CMBA"), // Формирование распоряжения на перевод с ТБС - creatingFile_GAIA("GAIA"), // Создание файла остатков CSV по внутренним информацион.счетам - loadParty_LOCM("LOCM"), // Загрузка участников - loadIssue_LOSC("LOSC"), // Загрузка инструментов - dbfExport_OUTV("OUTV"), // для dbf-exporter сообщение на создание файла ДФ-54 - sdf05WithCode9Final("FDFF"), //Формирование ДФ-05 с кодом 9 (финальный) - checkSdfPair("CHDF"),//Проверка наличия пары ДФ-01/ДФ-57 и ДФ-08/ДФ-21 - finishBadSessions("CCLR"),//Завершение неудачных клиринговых сессий - sendLim_LIMC("LIMC"), // Выгрузка в Торговую систему остатков по валюте (отправка lim)" - makeFiles_MTCR("MTCR"), // Формирование файлов с МТКР + startSession_SIPO("SIPO"), + terminationSession_EIPO("EIPO"), + startSession_STRF("STRF"), + terminationSession_ETRF("ETRF"), + reconciliationRequest_RCHK("RCHK"), + createRegistry_GRYT("GRYT"), + @Deprecated createRegistry_GRRT("GRRT"), + createRegistry_GBRR("GBRR"), + @Deprecated createRegistry_GORD("GORD"), + @Deprecated createRegistry_GORR("GORR"), + @Deprecated createRegistry_GCMR("GCMR"), + @Deprecated createRegistry_GSRR("GSRR"), + @Deprecated createRegistry_GACA("GACA"), + @Deprecated createRegistry_ADLR("ADLR"), + @Deprecated createRegistry_CDLR("CDLR"), + @Deprecated createRegistry_EXLR("EXLR"), + @Deprecated createRegistry_LBSR("LBSR"), + @Deprecated createRegistry_ECNR("ECNR"), + createRegistry_STRS("STRS"), + createRegistry_ETRS("ETRS"), + forming_CMBA("CMBA"), + creatingFile_GAIA("GAIA"), + loadParty_LOCM("LOCM"), + loadIssue_LOSC("LOSC"), + dbfExport_OUTV("OUTV"), + sdf05WithCode9Final("FDFF"), + checkSdfPair("CHDF"), + finishBadSessions("CCLR"), + sendLim_LIMC("LIMC"), + makeFiles_MTCR("MTCR"), ; private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TermType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TermType.java index a3cbb46e7..2960aceee 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TermType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TermType.java @@ -3,9 +3,9 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum TermType implements IEnumKey { - S("S"), // Срочный - V("V"), // До востребования - K("K"), // Комбинированный + S("S"), + V("V"), + K("K"), ; private final String key; diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TradingClearingRegistryType.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TradingClearingRegistryType.java index 97a98a65b..2e3a26d33 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TradingClearingRegistryType.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/TradingClearingRegistryType.java @@ -3,16 +3,16 @@ package ru.spcex.platform.enumeration; import ru.spcex.platform.utils.enumeration.IEnumKey; public enum TradingClearingRegistryType implements IEnumKey { - Owner_A("A"), // Владелец - Client_B("B"), // Клиентский - Trustee_C("C"), // Клиентский / Попечитель - TrusteeManager_D("D"), // Доверительный управляющий - Issuer_E("E"), // Эмитент - ToThePlacementOrRedeem_Z("Z"), // К размещению/выкупу - DepoBond_H("H"), // Депо по учету облигаций - DepoOfShares_T("T"), // Депо по учету акций - DepoOfTrustedBond_N("N"), // Депо по учету облигаций с попечителем - DepoOfTrustedShares_S("S"), // Депо по учету акций с попечителем + Owner_A("A"), + Client_B("B"), + Trustee_C("C"), + TrusteeManager_D("D"), + Issuer_E("E"), + ToThePlacementOrRedeem_Z("Z"), + DepoBond_H("H"), + DepoOfShares_T("T"), + DepoOfTrustedBond_N("N"), + DepoOfTrustedShares_S("S"), ; private final String key; diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java index 195a9db37..001845568 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgHazelcast.java @@ -83,7 +83,6 @@ public class ImdgHazelcast implements Imdg { public void lockAndPerform(Runnable operation) { ILock hzLock = null; try { - //в качестве альтернативы getCPSubsystem, поддерживается только при 3+ нодах хазелкаста hzLock = hzInstance.getLock(mapName); hzLock.lock(); operation.run(); @@ -108,9 +107,6 @@ public class ImdgHazelcast implements Imdg { map.remove(paramT.getId()); } - /** - * Только для тестирования. Очистка map. - */ public void clear() { map.clear(); } @@ -120,10 +116,6 @@ public class ImdgHazelcast implements Imdg { return map.get(paramLong); } - /** - * возвращает объект удовлетворяющий условиям - * не проверяет, если удовлетворяющих условиям > 1 - */ @SuppressWarnings("unchecked") @Override public T getFirstObjectByFieldValues(Map> conditions) { @@ -189,9 +181,6 @@ public class ImdgHazelcast implements Imdg { } - /** - * возвращает коллекцию объектов, удовлетворяющий условиям на поля - */ @SuppressWarnings("unchecked") @Override public Collection getCollectionObjectsByFieldValues(Map> conditions) { @@ -277,7 +266,6 @@ public class ImdgHazelcast implements Imdg { } - // Predicate API @Override public Collection getCollectionObjectsByPredicate(ImdgPredicate predicateImdg) { Predicate hazelcastPredicate = ((ImdgPredicateHazelcast) predicateImdg).getRawPredicate(); diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java index 0c89da722..35c27b5ec 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/adapter/ImdgTransactionalHazelcast.java @@ -47,7 +47,6 @@ public class ImdgTransactionalHazelcast implements Im public void lockAndPerform(Runnable operation) { ILock hzLock = null; try { - //в качестве альтернативы getCPSubsystem, поддерживается только при 3+ нодах хазелкаста hzLock = hzInstance.getLock(mapName); hzLock.lock(); operation.run(); @@ -77,10 +76,6 @@ public class ImdgTransactionalHazelcast implements Im return map.get(paramLong); } - /** - * возвращает объект удовлетворяющий условиям - * не проверяет, если удовлетворяющих условиям > 1 - */ @SuppressWarnings("unchecked") @Override public T getFirstObjectByFieldValues(Map> conditions) { @@ -127,13 +122,10 @@ public class ImdgTransactionalHazelcast implements Im public Collection getCollectionObjectsBySQL(String paramString) { SqlPredicate sqlPredicate = new SqlPredicate(paramString); Collection found = map.values(sqlPredicate); - List result = new ArrayList<>(found); // Hazelcast может вернуть proxy-коллекцию + List result = new ArrayList<>(found); return result; } - /** - * возвращает коллекцию объектов, удовлетворяющий условиям на поля - */ @SuppressWarnings("unchecked") @Override public Collection getCollectionObjectsByFieldValues(Map> conditions) { @@ -193,7 +185,6 @@ public class ImdgTransactionalHazelcast implements Im return idGenerator.newId(); } - // Predicate API @Override public Collection getCollectionObjectsByPredicate(ImdgPredicate predicateImdg) { Predicate hazelcastPredicate = ((ImdgPredicateHazelcast) predicateImdg).getRawPredicate(); diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/service/HazelcastServiceBase.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/service/HazelcastServiceBase.java index 4d3fc0bd3..59f9b28bd 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/service/HazelcastServiceBase.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/service/HazelcastServiceBase.java @@ -27,9 +27,7 @@ import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; public abstract class HazelcastServiceBase -// implements IHazelcastService - implements ImdgProvider -{ + implements ImdgProvider { protected final Logger log = LoggerFactory.getLogger(this.getClass()); public final int SLEEP_AFTER_RELOAD_MS = 5000; @@ -47,10 +45,10 @@ public abstract class HazelcastServiceBase protected AtomicBoolean hzAvailable; public HazelcastServiceBase( - ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, - ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, - HazelcastClientParams settingsElementHazelcastClient, - Environment environment) { + ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, + ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, + HazelcastClientParams settingsElementHazelcastClient, + Environment environment) { this.taskExecutorIdGeneratorAwaiter = taskExecutorIdGeneratorAwaiter; this.taskExecutorHazelcastClientInitializer = taskExecutorHazelcastClientInitializer; this.settingsElementHazelcastClient = settingsElementHazelcastClient; @@ -58,9 +56,9 @@ public abstract class HazelcastServiceBase } public HazelcastServiceBase( - ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, - ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, - HazelcastClientParams settingsElementHazelcastClient) { + ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, + ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, + HazelcastClientParams settingsElementHazelcastClient) { this.taskExecutorIdGeneratorAwaiter = taskExecutorIdGeneratorAwaiter; this.taskExecutorHazelcastClientInitializer = taskExecutorHazelcastClientInitializer; this.settingsElementHazelcastClient = settingsElementHazelcastClient; @@ -75,11 +73,11 @@ public abstract class HazelcastServiceBase } log.info("Hazelcast: client init"); ClientConfig clientConfig = HazelcastHelper.getClientConfig( - settingsElementHazelcastClient.getClusterMembers(), - settingsElementHazelcastClient.getLogin(), - settingsElementHazelcastClient.getPassword(), - settingsElementHazelcastClient.getInstanceName(), - settingsElementHazelcastClient.getNearCacheConfig() + settingsElementHazelcastClient.getClusterMembers(), + settingsElementHazelcastClient.getLogin(), + settingsElementHazelcastClient.getPassword(), + settingsElementHazelcastClient.getInstanceName(), + settingsElementHazelcastClient.getNearCacheConfig() ); if (environment != null && Arrays.asList(environment.getActiveProfiles()).contains("tests")) { clientConfig.getNetworkConfig().setConnectionAttemptLimit(HazelcastHelper.TEST_CONNECTION_ATTEMPT_LIMIT); @@ -89,11 +87,10 @@ public abstract class HazelcastServiceBase log.info("Hazelcast: client created and connected"); } -// @Override public void reinitializeHazelcastClient() { try { createHazelcastClient(); - Thread.sleep(100); // await for skip CLIENT_CONNECTED event. See warn "Hazelcast already available, but has call onAvailable() again." + Thread.sleep(100); awaitGeneratorId(); hazelcastInstance.getLifecycleService().addLifecycleListener((LifecycleEvent event) -> { switch (event.getState()) { @@ -115,7 +112,7 @@ public abstract class HazelcastServiceBase protected void onAvailable() { if (isAvailableNow) { log.warn("Hazelcast already available, but has call onAvailable() again. Ignore."); - return; // пропустить + return; } isAvailableNow = false; synchronized (hazelcastStatusSubscribers) { @@ -144,7 +141,7 @@ public abstract class HazelcastServiceBase log.warn(ExceptionUtils.getStackTrace(e)); } }); - if (isAvailableNow) { // never: если успел проскочить между isAvailableNow = false и synchronized + if (isAvailableNow) { log.warn("Concurrent call onAvailable() and onUnavailable(). Stacktrace: {}", ExceptionUtils.getStackTrace(new ConcurrentModificationException("Warning"))); isAvailableNow = false; } @@ -159,10 +156,10 @@ public abstract class HazelcastServiceBase Thread.sleep(SLEEP_AFTER_RELOAD_MS); reinitializeHazelcastClient(); logMsg = String.format("%s done OK! (duration=%dms)", - logMsg, (new Date()).getTime() - dtStart.getTime()); + logMsg, (new Date()).getTime() - dtStart.getTime()); } catch (Throwable e) { logMsg = String.format("%s error (duration=%dms):\n%s", - logMsg, (new Date()).getTime() - dtStart.getTime(), ExceptionUtils.getStackTrace(e)); + logMsg, (new Date()).getTime() - dtStart.getTime(), ExceptionUtils.getStackTrace(e)); } finally { log.info(logMsg); } @@ -171,7 +168,6 @@ public abstract class HazelcastServiceBase protected void awaitGeneratorId() { taskExecutorIdGeneratorAwaiter.execute(() -> { try { - // ожидание инициализации Storage (только после инициализации IDGenerator начинать работу). boolean done = false; while (!done) { log.debug("Execute awaitGeneratorId()"); @@ -191,22 +187,19 @@ public abstract class HazelcastServiceBase } } } - // проверка версии классов -// HazelcastCommon.verifyVersionClientsClasses(hazelcastInstance); } catch (Throwable e) { log.error("Error at awaitGeneratorId(): {}", ExceptionUtils.getStackTrace(e)); } }); } -// @Override public void statusSubscribe(IHazelcastClusterStatus clusterStatus) { log.trace("hazelcastStatusSubscribers add> {}", clusterStatus); synchronized (hazelcastStatusSubscribers) { - if (hazelcastStatusSubscribers.contains(clusterStatus)) // never + if (hazelcastStatusSubscribers.contains(clusterStatus)) throw new IllegalStateException("ClusterStatus listener " + clusterStatus + " already added!"); hazelcastStatusSubscribers.add(clusterStatus); - if (isAvailableNow) { // register now + if (isAvailableNow) { log.trace("hazelcastStatusSubscribers added and call now> {}", clusterStatus); try { clusterStatus.getAvailable(hazelcastInstance); @@ -217,7 +210,6 @@ public abstract class HazelcastServiceBase } } -// @Override public HazelcastInstance getHazelcast() { return hazelcastInstance; } @@ -279,17 +271,12 @@ public abstract class HazelcastServiceBase } } - /** - * Переподключение во время транзакции не предусмотрено. - * Транзакция - объект с коротким жизненным циклом. - * @return - */ @Override public ImdgTransaction newTransaction() { ImdgTransactionProviderHazelcast transactionalContext = new ImdgTransactionProviderHazelcast(); transactionalContext.setHz(hazelcastInstance); transactionalContext.setCtx(hazelcastInstance.newTransactionContext( - new TransactionOptions().setTransactionType(TransactionOptions.TransactionType.TWO_PHASE) + new TransactionOptions().setTransactionType(TransactionOptions.TransactionType.TWO_PHASE) )); return transactionalContext; } @@ -311,7 +298,6 @@ public abstract class HazelcastServiceBase return imdgId; } - // @Override public void waitTillReadyState() throws InterruptedException { boolean done = false; int sleepCount = 0; @@ -334,7 +320,6 @@ public abstract class HazelcastServiceBase } } -// @Override public void shutdown() { isAvailableNow = false; if (hazelcastInstance != null) diff --git a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/util/HazelcastHelper.java b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/util/HazelcastHelper.java index 605849f15..1efd4228d 100644 --- a/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/util/HazelcastHelper.java +++ b/platform-parent/platform-imdg-api-hazelcast-impl/src/main/java/ru/spcex/platform/imdg/iml/hazelcast/util/HazelcastHelper.java @@ -56,30 +56,12 @@ public final class HazelcastHelper { } - /** - * Создаёт клиента HazelcastInstance, подключённого по настрйокам ClientConfig. - * Ожидает готовности Storage, инициализирует TextErrorService. - * В случае ошибок делает повторение попыток создания клиента. - *

- * Пример получения ClientConfig: - * - * HazelcastHelper.getClientConfig( - * Config.get().getHazelcastSettings().getClusterMembers(), - * Config.get().getHazelcastSettings().getLogin(), - * Config.get().getHazelcastSettings().getPassword() - * ) - * - * - * @param hzClientConfig - * @return HazelcastClient - */ public HazelcastInstance makeHazelcastClientAndWaitTillReady(ClientConfig hzClientConfig) { HazelcastInstance instance = null; - // ожидание инициализации Storage (только после инициализации IDGenerator начинать работу). boolean done = false; while (!done) { try { - instance = HazelcastClient.newHazelcastClient(hzClientConfig);// createHzClient(); + instance = HazelcastClient.newHazelcastClient(hzClientConfig); waitTillReadyState(instance); log.info("Hazelcast: TextErrorService done"); done = true; @@ -96,8 +78,6 @@ public final class HazelcastHelper { } } } - // проверка версии классов -// HazelcastCommon.verifyVersionClientsClasses(instance); return instance; } @@ -111,7 +91,6 @@ public final class HazelcastHelper { } log.info("IMDG connected!"); } catch (HazelcastException hcEx) { - // проброс InterruptException из Hazelcast if (hcEx instanceof HazelcastException && hcEx.getCause() instanceof InterruptedException) throw new InterruptedException("Can not obtain IMDG for check state, cause has interrupted. " + hcEx); throw hcEx; diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java index 0249ad7b1..c8f1ee563 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/clearing/imdg/IMDGDistributedNames.java @@ -1,8 +1,5 @@ package ru.spcex.clearing.imdg; -/** - * Список имён распределённых объектов - */ public final class IMDGDistributedNames { public static final String Map_Company = "Map_Company"; public static final String Map_CompanyHistory = "Map_CompanyHistory"; @@ -211,7 +208,6 @@ public final class IMDGDistributedNames { public static final String Map_PairSdf = "Map_PairSdf"; public static final String Map_GatewayResult = "Map_GatewayResult"; - //-------------------history and search tables public static final String Map_SearchExecutionDeposit = "Map_SearchDeposit"; public static final String Map_SearchExecutionFond = "Map_SearchExecutionFond"; public static final String Map_SearchMoneyBalanceRegister = "Map_SearchMoneyBalanceRegister"; diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java index eb8e6c182..5d8a7e94a 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/Imdg.java @@ -76,30 +76,18 @@ public interface Imdg { throw new UnsupportedOperationException("not implemented projectionsAttributeBySql"); } - /** - * при необходимости ввести ImdgAggregator - */ default Long aggregateLongMax(String fieldName, ImdgPredicate predicate) { throw new UnsupportedOperationException("not implemented aggregate"); } - /** - * при необходимости ввести ImdgAggregator - */ default T aggregateByMax(String fieldName, ImdgPredicate predicate) { throw new UnsupportedOperationException("not implemented aggregate"); } - /** - * при необходимости ввести ImdgProjection - */ default Collection projectSingleAttribute(String fieldName, ImdgPredicate predicate) { throw new UnsupportedOperationException("not implemented projectSingleAttribute"); } - /** - * при необходимости ввести ImdgProjection - */ default Collection projectSingleAttribute(String fieldName) { return projectSingleAttribute(fieldName, null); } @@ -108,17 +96,14 @@ public interface Imdg { throw new UnsupportedOperationException("not implemented size"); } - // Predicate API default Collection getCollectionObjectsByPredicate(ImdgPredicate predicate) { throw new UnsupportedOperationException("not implemented getCollectionObjectsByPredicate"); } - // Predicate API default T getSingleObjectByPredicate(ImdgPredicate predicate) { throw new UnsupportedOperationException("not implemented getSingleObjectByPredicate"); } - // Predicate API default T getFirstObjectByPredicate(ImdgPredicate predicate) { throw new UnsupportedOperationException("not implemented getFirstObjectByPredicate"); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgProvider.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgProvider.java index 4ff60bf67..dc21e66c6 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgProvider.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgProvider.java @@ -3,9 +3,6 @@ package ru.spcex.platform.imdg.api; import ru.spcex.platform.classes.base.SpcexObjectBase; public interface ImdgProvider { - /** - * пока простой интерфейс для получения доступа к мапам - */ Imdg getImdg(String key, Class clazz); ImdgId getImdgIdGenerator(); diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgTransaction.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgTransaction.java index bd1f2eb32..a9da990e7 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgTransaction.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/ImdgTransaction.java @@ -1,9 +1,5 @@ package ru.spcex.platform.imdg.api; -/** - * из TransactionalContext тоже можно доставать мапы - * поэтому объект транзацкии тоже является ImdgProvider - */ public interface ImdgTransaction extends ImdgProvider { void commitTransaction(); diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/SecuritySelector.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/SecuritySelector.java index 31d4f5295..39cb8a8fd 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/SecuritySelector.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/specific/SecuritySelector.java @@ -49,6 +49,6 @@ public class SecuritySelector { security = retriever.apply(equitySecurity); if (security != null) return security; security = retriever.apply(currencyPairSecurity); - return security;// null + return security; } } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java index c24137c29..9845f93be 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/api/predicate/sql/ImdgPredicateBuilderSqlMock.java @@ -6,9 +6,6 @@ import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; import java.util.Arrays; import java.util.stream.Collectors; -/** - * Для тестирования (unit-тесты). Не использовать в основном коде. - */ public class ImdgPredicateBuilderSqlMock implements ImdgPredicateBuilder { protected static final ImdgPredicateBuilderSqlMock instance = new ImdgPredicateBuilderSqlMock(); @@ -76,7 +73,7 @@ public class ImdgPredicateBuilderSqlMock implements ImdgPredicateBuilder { @Override public ImdgPredicate and(ImdgPredicate... param) { return new SimpleSQLPredicate(Arrays.stream(param) - .map(p -> "(" + p + ")").collect(Collectors.joining(" and "))); + .map(p -> "(" + p + ")").collect(Collectors.joining(" and "))); } @Override @@ -87,7 +84,7 @@ public class ImdgPredicateBuilderSqlMock implements ImdgPredicateBuilder { @Override public ImdgPredicate or(ImdgPredicate... param) { return new SimpleSQLPredicate(Arrays.stream(param) - .map(p -> "(" + p + ")").collect(Collectors.joining(" or "))); + .map(p -> "(" + p + ")").collect(Collectors.joining(" or "))); } @Override diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java index 8e1ea71a4..08cb95d65 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/ImdgValidationContext.java @@ -43,9 +43,6 @@ public class ImdgValidationContext implements IValidatorContext { } } - /** - * !!!не использовать один Enum в разных местах - */ public void storeObject(Enum storedObject, Object anyObject) { storedObjects.put(storedObject, anyObject); } diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java index b4d6ebf4c..b7321a5af 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/Stored.java @@ -1,12 +1,6 @@ package ru.spcex.platform.imdg.validation; -/** - * !!!не использовать один Enum в разных местах - по энуму на один класс IValidationRule. - */ public enum Stored { - /** - * если выполняется проверка наличия объекта по Id (см. ru.spcex.platform.imdg.validation.rule.PresentById) - */ PresentById, AnltAccount, diff --git a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java index ed124b62b..b7501408f 100644 --- a/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java +++ b/platform-parent/platform-imdg-api/src/main/java/ru/spcex/platform/imdg/validation/rule/PresentById.java @@ -10,9 +10,6 @@ import ru.spcex.platform.utils.validation.IValidationRule; import java.util.Optional; -/** - * В рексевте необходим интерфейс WithId - */ public class PresentById implements IValidationRule> { private final String mapName; private final IErrorEnumId errorEnum; @@ -22,6 +19,7 @@ public class PresentById implements IValidationRule consumerFactory(KafkaConsumerSettings kafkaSettings) { Map props = new HashMap<>(); - //Properties props = new Properties(); props.put("bootstrap.servers", kafkaSettings.getBootstrapServers()); if (kafkaSettings.getGroupId() != null && kafkaSettings.getGroupId().length() > 0) { props.put("group.id", kafkaSettings.getGroupId()); @@ -44,7 +43,6 @@ public class KafkaConsumerFactory { } props.put("auto.offset.reset", kafkaSettings.getAutoOffsetReset()); props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); -// props.put("value.deserializer", JsonDeserializer.class.getName()); props.put("value.deserializer", ErrorHandlingDeserializer.class.getName()); props.put(ErrorHandlingDeserializer.VALUE_DESERIALIZER_CLASS, JsonDeserializer.class.getName()); diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/config/KafkaProducerFactory.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/config/KafkaProducerFactory.java index fdae5c834..29a75da14 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/config/KafkaProducerFactory.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/config/KafkaProducerFactory.java @@ -15,28 +15,14 @@ import java.util.Properties; public class KafkaProducerFactory { public static Producer producer(KafkaProducerSettings kafkaSettings) { Properties kafkaProps = new Properties(); - - //Assign localhost id kafkaProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaSettings.getBootstrapServers()); - - //Set acknowledgements for producer requests. kafkaProps.put(ProducerConfig.ACKS_CONFIG, kafkaSettings.getAcks()); - - //If the request fails, the producer can automatically retry, kafkaProps.put(ProducerConfig.RETRIES_CONFIG, kafkaSettings.getRetries()); - - //Specify buffer size in config kafkaProps.put(ProducerConfig.BATCH_SIZE_CONFIG, kafkaSettings.getBatchSize()); - - //Reduce the no of requests less than 0 kafkaProps.put(ProducerConfig.LINGER_MS_CONFIG, kafkaSettings.getLingerMs()); - //The buffer.memory controls the total amount of memory available to the producer for buffering. kafkaProps.put(ProducerConfig.BUFFER_MEMORY_CONFIG, kafkaSettings.getBufferMemory()); kafkaProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); kafkaProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class.getName()); -// kafkaProps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); - //ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); - // prop.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, Employee.class.getName()); return new KafkaProducer<>(kafkaProps); @@ -44,22 +30,12 @@ public class KafkaProducerFactory { public static ProducerFactory producerFactory(KafkaProducerSettings kafkaSettings) { Map kafkaProps = new HashMap<>(); - ////Assign localhost id kafkaProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaSettings.getBootstrapServers()); - // - ////Set acknowledgements for producer requests. kafkaProps.put(ProducerConfig.ACKS_CONFIG, kafkaSettings.getAcks()); - // - ////If the request fails, the producer can automatically retry, kafkaProps.put(ProducerConfig.RETRIES_CONFIG, kafkaSettings.getRetries()); kafkaProps.put(ProducerConfig.RECONNECT_BACKOFF_MS_CONFIG, 10000); - // - ////Specify buffer size in config kafkaProps.put(ProducerConfig.BATCH_SIZE_CONFIG, kafkaSettings.getBatchSize()); - // - ////Reduce the no of requests less than 0 kafkaProps.put(ProducerConfig.LINGER_MS_CONFIG, kafkaSettings.getLingerMs()); - ////The buffer.memory controls the total amount of memory available to the producer for buffering. kafkaProps.put(ProducerConfig.BUFFER_MEMORY_CONFIG, kafkaSettings.getBufferMemory()); kafkaProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); kafkaProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class.getName()); diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/BaseRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/BaseRequest.java index e97fb4513..2e265da93 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/BaseRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/BaseRequest.java @@ -9,25 +9,13 @@ import java.util.HashMap; import java.util.Map; public class BaseRequest implements WithId { - /** - * Идентификатор запроса - */ @JsonProperty private Long id; - /** - * Тип запроса - */ @JsonProperty private ActionType actionType; - /** - * Параметры запроса - */ @JsonProperty private T requestPayload; - /** - * ID пользователя, приславшего запрос. - */ @JsonProperty private Long userId; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java index 293950cc9..6ca547ca7 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/Consts.java @@ -16,7 +16,7 @@ public interface Consts { String DESTINATION_SECURITY_BOND_GATEWAY = "security-bond-gateway-request-new"; String DESTINATION_SECURITY_EQTY_GATEWAY = "security-eqty-gateway-request-new"; - String DESTINATION_GATEWAY_CURRENCY_PAIR_SECURITY = "currency-pair-securities-gateway-new"; // "security-currency-pair-gateway-request-new" + String DESTINATION_GATEWAY_CURRENCY_PAIR_SECURITY = "currency-pair-securities-gateway-new"; String DESTINATION_FIXED_INCOME_CASH_FLOW_NEW = "fixed-income-cash-flow-new"; String DESTINATION_FIXED_INCOME_CASH_FLOW_UPDATE = "fixed-income-cash-flow-update"; @@ -107,8 +107,8 @@ public interface Consts { String DESTINATION_CLIENT_CODE_UPDATE = "client-code-update"; String DESTINATION_CLIENT_CODE_DELETE = "client-code-delete"; - String DESTINATION_TRADING_CLEARING_REGISTRY_NEW = "trading-clearing-registry-new"; // не путать с REGISTRY_NEW - @Deprecated // сейчас в бизнес-логике автосоздание ТКР не используется + String DESTINATION_TRADING_CLEARING_REGISTRY_NEW = "trading-clearing-registry-new"; + @Deprecated String DESTINATION_TRADING_CLEARING_REGISTRY_AUTO_NEW = "trading-clearing-registry-auto-new"; String DESTINATION_TRADING_CLEARING_REGISTRY_UPDATE = "trading-clearing-registry-update"; String DESTINATION_TRADING_CLEARING_REGISTRY_BLOCK = "trading-clearing-registry-block"; @@ -201,7 +201,6 @@ public interface Consts { String DESTINATION_SETTLEMENT_HOUSE_PROPERTY_UPDATE = "settlement-house-properties-update"; String DESTINATION_SETTLEMENT_HOUSE_PROPERTY_DELETE = "settlement-house-properties-delete"; - //TODO IS IT NEEDED RIGHT HERE? String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new"; String REGISTRY_BALANCE_REGISTER_NEW = "registry-balance-register-new"; String REGISTRY_UNCOVERED_DEAL_REGISTER_NEW = "registry-uncovered-deal-register-new"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/BankAccountUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/BankAccountUpdateRequest.java index ff513688a..a37f061fd 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/BankAccountUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/BankAccountUpdateRequest.java @@ -4,25 +4,25 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class BankAccountUpdateRequest { @JsonProperty - public Long id; //Идентификатор записи + public Long id; @JsonProperty - public String bankIdentificationCode;//Банковский идентификационный код (БИК) + public String bankIdentificationCode; @JsonProperty - public String bankName;//Наименование банка + public String bankName; @JsonProperty - public String correspondentAccount;//Корреспондентский счет + public String correspondentAccount; @JsonProperty - public String correspondentAccountName;//Наименование корреспондентского счета + public String correspondentAccountName; @JsonProperty - public String currency;//Идентификатор валюты + public String currency; @JsonProperty - public String destination;//Назначение + public String destination; @JsonProperty - public String taxpayerIdentificationNumber;//Идентификационный номер налогоплательщика (ИНН) + public String taxpayerIdentificationNumber; @JsonProperty - public String taxRegistrationReasonCode;//Код причины постановки (КПП) + public String taxRegistrationReasonCode; @JsonProperty - public String account;//Номер счета + public String account; @JsonProperty public String swiftCode; @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/ClientCodeUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/ClientCodeUpdateRequest.java index 8cbadc11a..938fc81ca 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/ClientCodeUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/ClientCodeUpdateRequest.java @@ -6,7 +6,7 @@ import java.util.List; public class ClientCodeUpdateRequest { @JsonProperty - public Long id; //Идентификатор записи + public Long id; @JsonProperty private Long companyId; @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java index 990408cc8..fdd8e7f11 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/account/sdf01/AccountSdf01Request.java @@ -4,9 +4,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; -/** - * SDF01 / SDF08 - */ public class AccountSdf01Request { @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java index 422500b72..dc0a21bbc 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/balance/StatementRequest.java @@ -10,8 +10,6 @@ public class StatementRequest { private Long groupId; @JsonProperty private SdfTable table; - //------------------- - //from account-service creation @JsonProperty List accountCreationResults = new ArrayList<>(); @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/Sdf56And51Request.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/Sdf56And51Request.java index aabf1a854..1027f4de7 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/Sdf56And51Request.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/clearing/Sdf56And51Request.java @@ -8,13 +8,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSeriali import java.time.Instant; -/** - * попросили сделать максимально одновременные запросы - */ public class Sdf56And51Request { - /** - * поля для DF-16 - */ @JsonProperty private Long df56Number; @JsonSerialize(using = InstantSerializer.class) @@ -26,9 +20,6 @@ public class Sdf56And51Request { @JsonProperty private Instant eDateTime; - /** - * поля для DF-51 - */ @JsonProperty private Long df51Number; @JsonSerialize(using = InstantSerializer.class) diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyNewRequest.java index c35be1c47..17d372121 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanyNewRequest.java @@ -22,7 +22,6 @@ public class CompanyNewRequest { @JsonProperty private String initiatorCode; - // for update, это поле может использоваться в gateway-api @JsonProperty private Long id; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanySymbolUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanySymbolUpdateRequest.java index fb637060e..1d6011436 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanySymbolUpdateRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/company/CompanySymbolUpdateRequest.java @@ -9,7 +9,7 @@ public class CompanySymbolUpdateRequest { @JsonProperty private Long companyId; @JsonProperty - @Deprecated // todo новая мета без этого поля + @Deprecated private String companySymbol; @JsonProperty private String companySymbolValue; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ExecutionRegisterOnSaveRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ExecutionRegisterOnSaveRequest.java index 46650b5ff..e27dd8391 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ExecutionRegisterOnSaveRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/ExecutionRegisterOnSaveRequest.java @@ -61,7 +61,6 @@ public class ExecutionRegisterOnSaveRequest { @JsonProperty private LocalDate clearingDate; - //execution fond @JsonProperty private BigDecimal firstLegAmount; @JsonProperty @@ -83,7 +82,6 @@ public class ExecutionRegisterOnSaveRequest { @JsonProperty private String securityCode; - //execution deposit @JsonProperty private Long exchangeOrderId; @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/TradingClearingRegistryListNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/TradingClearingRegistryListNewRequest.java index 25dfdcb2c..d50aef8fd 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/TradingClearingRegistryListNewRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/TradingClearingRegistryListNewRequest.java @@ -41,7 +41,6 @@ public class TradingClearingRegistryListNewRequest { this.accountId = accountId; } - // todo возможно перепишут API, уберут: @Deprecated public List getCurrencyAccountList() { return currencyAccountList; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java index 5a542d32f..93cedfb0b 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/NotificationRequest.java @@ -2,13 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.reports; import com.fasterxml.jackson.annotation.JsonProperty; -/** - * Запрос на формирование уведомления - */ public class NotificationRequest { - /** - * Идентификатор участника клиринга - */ @JsonProperty protected Long consumerId; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java index 78ed940e9..9a4afde45 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequest.java @@ -3,14 +3,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.reports; import com.fasterxml.jackson.annotation.JsonProperty; import ru.spcex.platform.enumeration.ReportBuilderType; -/** - * Запрос отчёта (без параметров) report-service - */ public class ReportRequest { - /** - * Идентификатор отчёта - * см. {@link ReportBuilderType} - */ @JsonProperty public String reportId; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java index 983d92d8e..0b1c3a35c 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithPeriod.java @@ -8,9 +8,6 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSeria import java.time.LocalDate; -/** - * Запрос отчёта с периодом report-service - */ public class ReportRequestWithPeriod extends ReportRequest { @JsonSerialize(using = LocalDateSerializer.class) @JsonDeserialize(using = LocalDateDeserializer.class) diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithRegistryId.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithRegistryId.java index 9dd2ff2b1..8ca620605 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithRegistryId.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithRegistryId.java @@ -2,13 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.reports; import com.fasterxml.jackson.annotation.JsonProperty; -/** - * Запрос на построение отчета по SessionId, RegistryId - */ public class ReportRequestWithRegistryId extends ReportRequest { - /** - * Идентификатор сессии - */ @JsonProperty public Long sessionId; @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java index c065ad6b4..bde0ff300 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/reports/ReportRequestWithSessionId.java @@ -2,13 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.reports; import com.fasterxml.jackson.annotation.JsonProperty; -/** - * Запрос на построение отчета по SessionId - */ public class ReportRequestWithSessionId extends ReportRequest { - /** - * Идентификатор сессии - */ @JsonProperty public Long sessionId; 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 d5f9bce77..6e685d9d4 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 @@ -4,13 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; -/** - * Запрос на построение отчета по списку SessionId - */ public class ReportRequestWithSessionIdList extends ReportRequest { - /** - * Идентификатор сессии - */ @JsonProperty public List sessionId; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java index 214b59d86..c50191fe6 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/security/CurrencyPairSecurityNewGatewayRequest.java @@ -6,7 +6,6 @@ public class CurrencyPairSecurityNewGatewayRequest { @JsonProperty private CurrencyPairSecurityNewRequest currencySecurityNewRequest; - // in currencySecurityNewRequest: @JsonProperty private String tradeMode; @JsonProperty diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/JournalEventExportedRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/JournalEventExportedRequest.java index 099c346a4..98d1068c1 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/JournalEventExportedRequest.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/utilities/JournalEventExportedRequest.java @@ -26,10 +26,6 @@ public class JournalEventExportedRequest { private String documentName; @JsonProperty private String dossierNumber; - /** - * ACK при успешной загрузке - * NACK при ошибке загрузки - */ @JsonProperty private String resultStatus; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/BuilderConsumerStep.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/BuilderConsumerStep.java index 0a7bb7f01..bf3e0612c 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/BuilderConsumerStep.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/BuilderConsumerStep.java @@ -5,19 +5,8 @@ import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import java.util.function.Consumer; import java.util.function.Function; -/** - * консьюмеры умеют обновлять RequestInfo в мапе хазелкаста.
- * нам это нужно, например, когда хотим дать возможность узнать пользователю о статусе выполняемой команды.
- * (см. RequestStatusController - в нем пользователь по ID может получить инфу о ранее отправленном запросе) - */ public interface BuilderConsumerStep { - /** - * без обновления RequestInfo в мапе - * - */ BuilderDestinationStep setConsumer(Consumer> consumer); - /** - * с обновлением RequestInfo в мапе - */ + BuilderDestinationStep setFunction(Function, Object> function); } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/ConsumerSpecificClass.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/ConsumerSpecificClass.java index 0b6e96404..34e92463c 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/ConsumerSpecificClass.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/logic/functional/ConsumerSpecificClass.java @@ -6,20 +6,10 @@ import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; -/** - * вспомогательный класс - * callback для пришедшего сообщения из очереди - */ public class ConsumerSpecificClass implements BuilderConsumerStep, BuilderDestinationStep { - /** - * какой payload будет в BaseRequest - */ private Class clazz; - /** - * действие-обработчик реквеста (метод из конкретного менеджера) - */ - private java.util.function.Consumer> consumer; - private java.util.function.Function, Object> function; + private Consumer> consumer; + private Function, Object> function; private ConsumerSpecificClass(Class clazz) { this.clazz = clazz; @@ -62,6 +52,7 @@ public class ConsumerSpecificClass implements BuilderConsumerStep, Builder public Consumer> getConsumer() { return consumer; } + public Class getClazz() { return clazz; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializer.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializer.java index ca0ceb998..166edd810 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializer.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializer.java @@ -32,24 +32,14 @@ public class JsonDeserializer implements Deserializer { @Override public Object deserialize(String topic, Headers headers, byte[] data) { try { -// ObjectReader deserReader = null; -// JavaType javaType = this.typeMapper.toJavaType(headers); -// if (javaType != null) { -// deserReader = this.json.readerFor(javaType); -// } -// if (deserReader == null) { -// throw new RuntimeException("couldn't serialize kafka message without headers (need type info)"); -// } Header header = headers.lastHeader(ClearingKafkaHeader.BaseRequestTypeParameter.getKey()); if (header == null) { throw new RuntimeException("couldn't serialize kafka message without header '" + - ClearingKafkaHeader.BaseRequestTypeParameter.getKey() + "' (need type info)"); + ClearingKafkaHeader.BaseRequestTypeParameter.getKey() + "' (need type info)"); } String typeParameterClassName = new String(header.value(), StandardCharsets.UTF_8); -// JavaType parameterType = json.getTypeFactory().constructType(ClassUtils.forName(typeParameterClassName, ClassUtils.getDefaultClassLoader())); Class parameterType = ClassUtils.forName(typeParameterClassName, ClassUtils.getDefaultClassLoader()); JavaType requestType = json.getTypeFactory().constructParametricType(BaseRequest.class, parameterType); - //... headers.remove(ClearingKafkaHeader.BaseRequestTypeParameter.getKey()); return json.readValue(new String(data, StandardCharsets.UTF_8), requestType); } catch (IOException | ClassNotFoundException e) { diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonSerializer.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonSerializer.java index 66b99c4f6..077dd1092 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonSerializer.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/JsonSerializer.java @@ -11,12 +11,10 @@ import java.nio.charset.StandardCharsets; public class JsonSerializer implements Serializer { private final ObjectMapper json; -// private final Jackson2JavaTypeMapper typeMapper; public JsonSerializer() { this.json = new ObjectMapper(); json.setSerializationInclusion(JsonInclude.Include.NON_NULL); -// this.typeMapper = new DefaultJackson2JavaTypeMapper(); } @Override @@ -30,21 +28,13 @@ public class JsonSerializer implements Serializer { } @Override - public byte[] serialize(String topic, Headers headers, Object data) { - if (data == null) { - return null; - } - //if (this.addTypeInfo && headers != null) { - //Class clazz = callback.getClazz(); - //JavaType payloadType = json.getTypeFactory().constructParametricType(BaseRequest.class, clazz); - //JavaType payloadType = json.getTypeFactory().constructParametricType(BaseRequest.class, clazz); - //JavaType payloadType = json.getTypeFactory().constructCollectionLikeType(BaseRequest.class, clazz); - //failed to use Jackson2JavaTypeMapper with parametrized BaseRequest - //this.typeMapper.fromJavaType(payloadType, headers); + public byte[] serialize(String topic, Headers headers, Object data) { + if (data == null) { + return null; + } BaseRequest req = (BaseRequest) data; Class clazz = req.getRequestPayload().getClass(); headers.add(new RecordHeader(ClearingKafkaHeader.BaseRequestTypeParameter.getKey(), clazz.getName().getBytes(StandardCharsets.UTF_8))); return serialize(topic, data); -// } - } + } } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/LogFormatter.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/LogFormatter.java index debeea073..8d4468d14 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/LogFormatter.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/serialization/LogFormatter.java @@ -11,9 +11,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.spcex.platform.utils.log.ExceptionUtils; -/** - * Для удобной записи в лог объектов. - */ public class LogFormatter { static Logger log = LoggerFactory.getLogger(LogFormatter.class); static final ObjectMapper json; @@ -36,12 +33,6 @@ public class LogFormatter { } } - /** - * Для записи сложного объекта в лог уровней trace/debug - конвертация выполняется только по toString - * - * @param o - * @return - */ public static Object toStringWrapper(final Object o) { if (o == null) return String.valueOf(null); return new Object() { diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/QueueConsumer.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/QueueConsumer.java index bfe4c6cb4..6b8aaeb5c 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/QueueConsumer.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/QueueConsumer.java @@ -35,9 +35,6 @@ import java.util.concurrent.Future; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; -/** - * утилитный класс для обработки сообщений из очереди - */ public class QueueConsumer implements AutoCloseable { protected final Map> callbacks; private final Logger log = LoggerFactory.getLogger(getClass()); @@ -61,13 +58,6 @@ public class QueueConsumer implements AutoCloseable { } } - /** - * используем этот конструктор, если хотим класть - * в кафку "ответ" - информацию о статусе обработки команд - * - * @param kafkaQueue - * @param kafkaResponseQueue - */ public QueueConsumer(Consumer kafkaQueue, Producer kafkaResponseQueue) { this(kafkaQueue); this.producer = kafkaResponseQueue; @@ -117,7 +107,7 @@ public class QueueConsumer implements AutoCloseable { lastErrors = 0; } catch (Throwable e) { log.error("Listener {} last topic \"{}\", error: {}", - QueueConsumer.this.getClass().getName(), lastTopic, ExceptionUtils.getStackTrace(e)); + QueueConsumer.this.getClass().getName(), lastTopic, ExceptionUtils.getStackTrace(e)); if (lastTopic == null) { log.debug("main thread stacktrace: {}", ExceptionUtils.getStackTrace(debugCallerStacktrace)); } @@ -139,19 +129,17 @@ public class QueueConsumer implements AutoCloseable { if (!closed.get()) throw e; } catch (Throwable e) { log.error("QueueConsumer error: {}; main thread stacktrace: {}", - ExceptionUtils.getStackTrace(e), ExceptionUtils.getStackTrace(debugCallerStacktrace)); + ExceptionUtils.getStackTrace(e), ExceptionUtils.getStackTrace(debugCallerStacktrace)); } finally { consumer.close(); } }); } - //мб перенести в другой класс private void sendErrorResponse(BaseRequest o, Header correlationId) { outputExecutor.submit(() -> { try { Future send; - //default response BaseRequest req = new BaseRequest<>(); RequestInfoUpdate success = new RequestInfoUpdate(); success.setId(o.getId()); @@ -184,7 +172,6 @@ public class QueueConsumer implements AutoCloseable { if (response != null) { req.setRequestPayload(response); } else { - //default response RequestInfoUpdate success = new RequestInfoUpdate(); success.setId(o.getId()); success.setStatus(Status.Success); @@ -207,12 +194,6 @@ public class QueueConsumer implements AutoCloseable { } - /** - * Валидация запроса - * - * @param Класс проверяемого запроса - * @return null если ошибок нет - */ @Deprecated public RequestInfoUpdate validate(BaseRequest userRequest, Function validatorBuilder, @@ -225,9 +206,9 @@ public class QueueConsumer implements AutoCloseable { String errorMsg = messageResolver.resolve(validationError.get()); log.warn("validation error for {} error={}, id={}: {}", req.getClass().getSimpleName(), validationError.get().getSubject(), userRequest.getId(), errorMsg); return new RequestInfoUpdate() - .setId(userRequest.getId()) - .setStatus(Status.Error) - .setMessage(errorMsg); + .setId(userRequest.getId()) + .setStatus(Status.Error) + .setMessage(errorMsg); } } return null; @@ -242,7 +223,6 @@ public class QueueConsumer implements AutoCloseable { outputExecutor.shutdown(); } - // нужен для тестов поскольку у каждого сервиса свой consumer public Consumer getConsumer() { return consumer; } diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/sender/KafkaSender.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/sender/KafkaSender.java index 39ec6b504..c6ae14e97 100644 --- a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/sender/KafkaSender.java +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/service/sender/KafkaSender.java @@ -46,7 +46,6 @@ public class KafkaSender { request.setId(idGenerator.get()); request.setActionType(ActionType.SYSTEM); request.setRequestPayload(requestPayload); - //сохраняет данные о запросе в хранилище saveRequestToStorage(destination, request); ProducerRecord prdRec = new ProducerRecord<>(destination, request); if (correlationId != null) { @@ -65,25 +64,19 @@ public class KafkaSender { return request.getId(); } - /** - * Вариант метода для случая, когда хотим додждаться ответа от другого сервиса через кафку - */ public R sendToQueueWaitForAnswer(String destination, Object requestPayload) { - if (!(kafkaTemplate instanceof ReplyingKafkaTemplate)) { + if (!(kafkaTemplate instanceof ReplyingKafkaTemplate)) { throw new IllegalStateException("kafkaTemplate is not ReplyingKafkaTemplate"); } BaseRequest request = new BaseRequest<>(); request.setId(idGenerator.get()); request.setActionType(ActionType.SYSTEM); request.setRequestPayload(requestPayload); - //сохраняет данные о запросе в хранилище saveRequestToStorage(destination, request); ProducerRecord prdRec = new ProducerRecord<>(destination, request); ReplyingKafkaTemplate rplKafkaTemplate = (ReplyingKafkaTemplate) kafkaTemplate; RequestReplyFuture replyFuture = rplKafkaTemplate.sendAndReceive(prdRec); - //can be used to extract Producer metadata - //SendResult sendResult = replyFuture.getSendFuture().get(10, TimeUnit.SECONDS); Object value = null; try { ConsumerRecord consumerRecord = replyFuture.get(10, TimeUnit.SECONDS); @@ -122,7 +115,6 @@ public class KafkaSender { @Deprecated void setProducer(Producer kafka) { -// this.kafka = kafka; } void setIdGenerator(Supplier idGenerator) { diff --git a/platform-parent/platform-messaging/src/test/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializerTest.java b/platform-parent/platform-messaging/src/test/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializerTest.java index 873f1078d..b2404a099 100644 --- a/platform-parent/platform-messaging/src/test/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializerTest.java +++ b/platform-parent/platform-messaging/src/test/java/ru/spcex/clearing/platform/messaging/serialization/JsonDeserializerTest.java @@ -10,9 +10,6 @@ import java.io.UnsupportedEncodingException; import static org.junit.jupiter.api.Assertions.*; -/** - * @see JsonSerializerTest - */ class JsonDeserializerTest { @Test @@ -35,7 +32,7 @@ class JsonDeserializerTest { jsonB = serializer.serialize("topic-1", headers, req); String json = new String(jsonB, "utf-8"); assertEquals("{\"id\":12,\"actionType\":\"NEW\",\"requestPayload\":{\"companyId\":123,\"section\":\"Section \\\\<>?'\\\" 2 Секция два.\"},\"userId\":1020}", - json); + json); } { JsonDeserializer deserializer = new JsonDeserializer(); diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/EnumMessage.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/EnumMessage.java index fc8093067..10a650b15 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/EnumMessage.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/EnumMessage.java @@ -5,10 +5,6 @@ import java.util.Collections; public class EnumMessage { private final IEnumId subject; - /** - * Параметры для подстановки в текст сообщения. Все Serializable. - * args not null. - */ private Object[] args; public EnumMessage(IEnumId subject) { diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumId.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumId.java index f2a161277..718cc4969 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumId.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumId.java @@ -6,11 +6,7 @@ import java.util.Objects; public interface IEnumId extends Serializable { Long UNDEFINED_VALUE = Long.MIN_VALUE; - /** - * Проверяет что среди данного набора Enum, присутствует элемент с данным id - * id может быть null - */ - static & IEnumId> boolean contains(java.lang.Long id, T... enumSet) { + static & IEnumId> boolean contains(Long id, T... enumSet) { for (T e : enumSet) { if (Objects.equals(id, e.getId())) return true; @@ -26,10 +22,6 @@ public interface IEnumId extends Serializable { return false; } - /** - * Проверяет что среди всех Enum данного класса, присутствует элемент с данным id - * id может быть null - */ static & IEnumId> boolean contains(Class enumClass, Long id) { for (T e : enumClass.getEnumConstants()) { if (Objects.equals(id, e.getId())) @@ -38,12 +30,6 @@ public interface IEnumId extends Serializable { return false; } - /** - * Возвращает Enum по id, если в заданном классе такой определен - * id может быть null - * - * @return Enum если нашел, иначе null - */ static & IEnumId> T getEnumById(Class enumClass, Long id) { for (T e : enumClass.getEnumConstants()) { if (Objects.equals(id, e.getId())) diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java index a898c0250..2049a2232 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/IEnumKey.java @@ -10,10 +10,6 @@ public interface IEnumKey extends Serializable { return key != null && getKey().equalsIgnoreCase(key); } - /** - * Проверяет что среди данного набора Enum, присутствует элемент с данным id - * id может быть null - */ static & IEnumKey> boolean contains(String id, T... enumSet) { for (T e : enumSet) { if (Objects.equals(id, e.getKey())) @@ -38,10 +34,6 @@ public interface IEnumKey extends Serializable { return false; } - /** - * Проверяет что среди всех Enum данного класса, присутствует элемент с данным id - * id может быть null - */ static & IEnumKey> boolean contains(String key, Class enumClass) { for (T e : enumClass.getEnumConstants()) { if (Objects.equals(key, e.getKey())) @@ -50,12 +42,6 @@ public interface IEnumKey extends Serializable { return false; } - /** - * Возвращает Enum по id, если в заданном классе такой определен - * id может быть null - * - * @return Enum если нашел, иначе null - */ static & IEnumKey> T getEnumByKey(Class enumClass, String key) { for (T e : enumClass.getEnumConstants()) { if (Objects.equals(key, e.getKey())) diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SpringPropertiesMessageResolver.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SpringPropertiesMessageResolver.java index f086c0970..8034252ea 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SpringPropertiesMessageResolver.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/enumeration/SpringPropertiesMessageResolver.java @@ -4,9 +4,6 @@ import org.springframework.context.support.ResourceBundleMessageSource; import java.util.Locale; -/** - * Если в зависимостях не будет spring-context, кинет NoClassDefFound - */ public class SpringPropertiesMessageResolver implements IMessageResolver { private final ResourceBundleMessageSource errorMessages; private Locale locale; diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/error/ClearingBaseException.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/error/ClearingBaseException.java index 6a5c0b4e0..66d48f1a9 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/error/ClearingBaseException.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/error/ClearingBaseException.java @@ -27,11 +27,6 @@ public class ClearingBaseException extends Exception { this.enumMsg = new EnumMessage(code); } -// public ClearingBaseException(String message, Throwable cause) { -// super(message, cause); -// this.enumMsg = new EnumMessage(ClearingError.GeneralError); -// } - public EnumMessage getEnumMsg() { return enumMsg; } diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/localization/SpringPropertiesLocalizer.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/localization/SpringPropertiesLocalizer.java index 02c21d1f4..3cd23d995 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/localization/SpringPropertiesLocalizer.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/localization/SpringPropertiesLocalizer.java @@ -4,9 +4,6 @@ import java.util.Locale; import org.springframework.context.support.ResourceBundleMessageSource; import ru.spcex.platform.utils.enumeration.IEnumKey; -/** - * Если в зависимостях не будет spring-context, кинет NoClassDefFound - */ public class SpringPropertiesLocalizer { private final ResourceBundleMessageSource errorMessages; private Locale defaultLocale; @@ -27,15 +24,4 @@ public class SpringPropertiesLocalizer { public String resolve(IEnumKey msg, Object... args) { return errorMessages.getMessage(msg.getKey(), args, defaultLocale); } - -// public String resolve(EnumMessage errorMessage, Locale locale) { -// Long id = errorMessage.getSubject().getId(); -// return errorMessages.getMessage(id.toString(), errorMessage.getArgs(), locale); - //String messageTemplate = -// if (errorMessage.getArgs().length > 0) -// return String.format(messageTemplate, errorMessage.getArgs()); -// else { -// return messageTemplate; -// } -// } } diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/number/BigDecimalUtil.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/number/BigDecimalUtil.java index 987b4456f..081075ff9 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/number/BigDecimalUtil.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/number/BigDecimalUtil.java @@ -7,8 +7,6 @@ import java.math.BigDecimal; public class BigDecimalUtil { -// private final Pattern numberPattern = Pattern.compile("\\d+([.,]\\d+)?"); - public static BigDecimal parse(String number) { if (number == null) { return null; @@ -21,33 +19,18 @@ public class BigDecimalUtil { } } - /** - * для парсинга вида '-00001234'/'00000123' - * - * @param number - * @return - */ public static BigDecimal parseLeadingZeroes(String number) { try { return new BigDecimal(number); } catch (Throwable e) { - //оставил чтобы стукнул NLP если где-то окажется неровный формат чтобы уточнить поведение return null; } } - /** - * Для кейсов когда есть String поле с десятичной частью, и хотим ограничить число знаков после запятой - */ public static String limitDecimalPlaces(String number, int decimalPlaces) { return limitDecimalPlaces(number, decimalPlaces, false); } - /** - * Для кейсов когда есть String поле с десятичной частью, и хотим ограничить число знаков после запятой - * - * @param fillZero - дополнить 0 если не хватает знаков дробной части - */ public static String limitDecimalPlaces(String number, int decimalPlaces, boolean fillZero) { if (number == null) { return null; @@ -77,13 +60,6 @@ public class BigDecimalUtil { return bd == null ? BigDecimal.ZERO : bd; } - /** - * Null safe add: - * - * @param a nullable - * @param b nullable - * @return если оба числа null то результат ZERO, иначе сложит их. - */ public static BigDecimal safeSumBD(BigDecimal a, BigDecimal b) { if (b == null) { if (a == null) diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java index af410c60f..200f00e41 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java @@ -17,9 +17,6 @@ public class TimeUtil { public static final DateTimeFormatter PROPERTY_DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); public static ZoneId zone = ZoneId.systemDefault(); - /** - * метод чтобы парсить в инстант даты типа yyyy-MM-dd, dd.MM.yyyy и т.д. - */ public static Instant parseInstantDt(String date, DateTimeFormatter formatter) { return LocalDate.parse(date, formatter).atStartOfDay(zone).toInstant(); } @@ -103,12 +100,6 @@ public class TimeUtil { return zoned.toLocalDateTime(); } - /** - * Начало дня по текущей временной зоне. - * - * @param from - * @return - */ public static Instant startOfDay(Instant from) { ZonedDateTime zdtStart = from.atZone(ZoneId.systemDefault()); zdtStart = zdtStart.truncatedTo(ChronoUnit.DAYS); diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidationRule.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidationRule.java index d5a3f8be7..e35ee7fa8 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidationRule.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidationRule.java @@ -5,30 +5,17 @@ import ru.spcex.platform.utils.enumeration.IErrorEnumId; import java.util.Optional; -/** - * Правило валидации, описывающее какую ошибку возвращать и при каких условиях - * Все необходимые данные берет из контекста - * @param контекст - */ public interface IValidationRule { Optional validate(C context); - /** - * для логов - */ default String ruleName() { return getClass().getSimpleName(); } - /** - * если у валидатора был вызван метод проверить все, этот метод может использоваться для более тонкой настройки - * по дефолту - выполнять проверку даже если предыдущие выполнены с ошибками - */ default boolean runIfErrorsPresent() { return true; } - //*************** методы для сокращения кода *************** default Optional of(IErrorEnumId error) { return Optional.of(new EnumMessage(error)); } diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidator.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidator.java index 36f9b3608..b06c5dec8 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidator.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/IValidator.java @@ -6,37 +6,15 @@ import ru.spcex.platform.utils.enumeration.EnumMessage; import java.util.Collection; import java.util.Optional; -/** - * Валидатор, в который можно добавлять правила проверок. - * Будет выполнять их в том порядке, в котором их добавляли - */ public interface IValidator { - /** - * метод для добавления правил валидации - * если положить правило с некорректными типами, при вызове validate будет ClassCastException - */ void addRule(IValidationRule rule); - /** - * если хотим добавить проверки другого валидатора
- * они будут выполняться только если проверки этого успешно пройдены - * возвращает себя - */ IValidator chain(IValidator anotherValidator); - /** - * валидирует все (подходит для случаев когда проверки не полагаются на то что предыдущие проверки прошли нормально) - */ Collection validateAll(); - /** - * валидирует до первой ошибки - */ Optional tillFirstError(); - /** - * валидирует все, возвращает первую ошибку - для совместимости - */ Optional validateAllReturnFirst(); default S getStored(Enum storedObject) { diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/ValidatorImpl.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/ValidatorImpl.java index 416e854e2..daee52046 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/ValidatorImpl.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/validation/ValidatorImpl.java @@ -10,18 +10,17 @@ import java.util.Collection; import java.util.List; import java.util.Optional; -/** - * Валидатор, предназначенный для правил у которых есть "контекст" валидации - */ public class ValidatorImpl implements IValidator { private final Logger log = LoggerFactory.getLogger(getClass()); private List> rules = new ArrayList<>(); private C context; private IValidator chainedValidator; - public ValidatorImpl(C context) {this.context = context;} + public ValidatorImpl(C context) { + this.context = context; + } - public ValidatorImpl(C context, IValidationRule... rules) { // + public ValidatorImpl(C context, IValidationRule... rules) { this.context = context; for (IValidationRule rule : rules) { addRule(rule); @@ -65,8 +64,8 @@ public class ValidatorImpl implements IValidator { } } log.debug("validation {} in {} ms", - errors.size() == 0 ? "successfully completed" : "completed with errors", - Instant.now().toEpochMilli() - begin.toEpochMilli()); + errors.size() == 0 ? "successfully completed" : "completed with errors", + Instant.now().toEpochMilli() - begin.toEpochMilli()); if (chainedValidator != null && errors.size() == 0) errors.addAll(chainedValidator.validateAll()); return errors; } @@ -80,8 +79,8 @@ public class ValidatorImpl implements IValidator { validationError = rule.validate(context); if (validationError.isPresent()) { log.debug("{}validation stage: {} completed with error {} in {} ms", - context.logPrefix(), rule.ruleName(), validationError.get().getSubject().getId(), - Instant.now().toEpochMilli() - begin.toEpochMilli()); + context.logPrefix(), rule.ruleName(), validationError.get().getSubject().getId(), + Instant.now().toEpochMilli() - begin.toEpochMilli()); return validationError; } } diff --git a/platform-parent/platform-utils/src/test/java/ru/spcex/platform/utils/time/TimeUtilTest.java b/platform-parent/platform-utils/src/test/java/ru/spcex/platform/utils/time/TimeUtilTest.java index 594b8480a..392b928ec 100644 --- a/platform-parent/platform-utils/src/test/java/ru/spcex/platform/utils/time/TimeUtilTest.java +++ b/platform-parent/platform-utils/src/test/java/ru/spcex/platform/utils/time/TimeUtilTest.java @@ -20,7 +20,7 @@ class TimeUtilTest { @Test void localDateTimeToInstant() { Instant theI = TimeUtil.localDateTimeToInstant(LocalDateTime.of(2024, 2, 9, 10, 11, 22)); - assertEquals("2024-02-09T07:11:22Z", theI.toString()); // msk = UTC+3 + assertEquals("2024-02-09T07:11:22Z", theI.toString()); assertEquals(1707462682L, theI.getEpochSecond()); } } \ No newline at end of file