From 2ee26a3d68d9a02b8c2d00d98a4e0c24001c1e76 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Thu, 28 Sep 2023 14:22:32 +0300 Subject: [PATCH 1/3] =?UTF-8?q?company-service=20gateway-api=20http://jira?= =?UTF-8?q?.mfd.msk:8088/browse/CLS-347=20bug=20fix,=20=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClearingMemberCategoryService.java | 6 ++- .../company/service/MultiCompanyService.java | 38 +++++++++++++---- .../ClearingMemberCategoryServiceTest.java | 1 + .../service/MultiCompanyServiceTest.java | 42 ++++++++++++++++--- .../company/service/RelationServiceTest.java | 13 ++++++ .../adapter/CompanyRequestAdapter.java | 2 +- 6 files changed, 87 insertions(+), 15 deletions(-) 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 af6ca5c70..5d0a3825e 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 @@ -179,7 +179,11 @@ public class ClearingMemberCategoryService extends QueueConsumer implements Init try { Imdg txClearingMemberCategoryMap = transaction.getImdg(IMDGDistributedNames.Map_ClearingMemberCategory, ClearingMemberCategory.class); txClearingMemberCategoryMap.delete(clearingMemberCategory); // далить до cancelRelation внутри транзакции - companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory); + if (clearingMemberCategory.getCompanyId() == null) { // never, только тестовые данные + log.warn("Deleted clearingMemberCategory[{}] has not companyId", clearingMemberCategory.getId()); + } else { + companyService.relationService.cancelRelation(transaction, clearingMemberCategory.getCompanyId(), clearingMemberCategory); + } txOk = true; } finally { if (txOk) 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 d556d62c8..f0cb6e513 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 @@ -27,6 +27,7 @@ import ru.spcex.clearing.validation.common.ValidationHelper; import ru.spcex.platform.enumeration.CompanySymbol; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IMessageResolver; import ru.spcex.platform.utils.error.ValidationException; import ru.spcex.platform.utils.log.ExceptionUtils; @@ -48,7 +49,7 @@ public class MultiCompanyService private final RequestHelper requestHelper; protected UserRoleVerification userRoleVerification; -// private final ValidationHelper validationHelper; + // private final ValidationHelper validationHelper; protected IMessageResolver messageResolver; final CompanyService companyService; @@ -128,7 +129,7 @@ public class MultiCompanyService req.setCompanySymbols( Stream.concat(req.getCompanySymbols().stream(), additionalSymbols(req.getCompany())).collect(Collectors.toList()) ); - companyId = getCompanyIdForCompanySymbols(req.getUuid(), req.getCompany()); + 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)); if (companyId == null) { log.debug("For request {} (uuid {}) company not found. Try find by other symbols.", baseRequest.getId(), req.getUuid()); @@ -334,7 +335,7 @@ public class MultiCompanyService return r; } - Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr) { + Long getCompanyIdForCompanySymbols(String uuid, CompanyNewRequest cnr, Collection companySymbols) { CompanySymbols companySymbol = null; if (StringUtils.isNotEmpty(uuid)) { log.trace("Search company by companySymbol uuid={}", uuid); @@ -351,10 +352,10 @@ public class MultiCompanyService } } } - if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue())) { - for (String companySymbolType : Arrays.asList( - cnr.getCompanySymbol(), CompanySymbol.INN.getKey(), CompanySymbol.CIO.getKey() - )) { + if (companySymbol == null && StringUtils.isNotEmpty(cnr.getCompanySymbolValue()) + && IEnumKey.contains(cnr.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) { // вероятно там будет только UUID + { + String companySymbolType = cnr.getCompanySymbol(); log.trace("Search company by companySymbol {}={}", companySymbolType, cnr.getCompanySymbolValue()); Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues( Map.of( @@ -367,10 +368,31 @@ public class MultiCompanyService if (companySymbolsFromImdg.size() > 1) { log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cnr.getCompanySymbolValue()); } - break; } } } + if (companySymbol == null && companySymbols != null) { + for (CompanySymbolNewRequest cSymbolReq : companySymbols) { + if (IEnumKey.contains(cSymbolReq.getCompanySymbol(), CompanySymbol.INN, CompanySymbol.CIO)) { + String companySymbolType = cSymbolReq.getCompanySymbol(); + log.trace("Search company by companySymbol {}={}", companySymbolType, cSymbolReq.getCompanySymbolValue()); + Collection companySymbolsFromImdg = companySymbolsImdg.getCollectionObjectsByFieldValues( + Map.of( + "companySymbol", companySymbolType, + "companySymbolValue", cSymbolReq.getCompanySymbolValue() + ) + ); + if (!companySymbolsFromImdg.isEmpty()) { + companySymbol = companySymbolsFromImdg.iterator().next(); + if (companySymbolsFromImdg.size() > 1) { + log.warn("For {} found > 1 company_symbols, use first (id = {})", companySymbolType, cSymbolReq.getCompanySymbolValue()); + } + break; + } + } + } + } + if (companySymbol != null) return companySymbol.getCompanyId(); else 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 9fd30fed6..3767a109c 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 @@ -168,6 +168,7 @@ class ClearingMemberCategoryServiceTest { String clearingMemberCategory = "0000"; ClearingMemberCategory existsClearingMemberCategory = new ClearingMemberCategory(); existsClearingMemberCategory.setClearingMemberCategory(clearingMemberCategory); + existsClearingMemberCategory.setCompanyId(COMPANY_ID); Long id = memberCategoryImdg.insert(existsClearingMemberCategory); CommonDeleteRequest memberCategoryDeleteRequest = new CommonDeleteRequest(); 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 da2ebe661..67bd1f7f9 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 @@ -26,6 +26,8 @@ import ru.spcex.platform.imdg.api.ImdgProvider; import javax.annotation.PostConstruct; import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProviderAndAddAdminWithDefaultId; @@ -48,6 +50,8 @@ import static ru.spcex.clearing.test.config.ImdgTestConfig.waitAvailableImdgProv ProfileDocumentValidationConfig.class, ContactService.class, ContactValidationConfig.class, + ClearingMemberCategoryService.class, + ClearingMemberCategoryValidationConfig.class, KafkaTestConfig.class, ImdgTestConfig.class, @@ -101,8 +105,8 @@ class MultiCompanyServiceTest { CompanySymbols companySymbol = new CompanySymbols(); companySymbol.setId(222L); companySymbol.setCompanyId(company.getId()); - companySymbol.setCompanySymbol(CompanySymbol.CLRC.getKey()); - companySymbol.setCompanySymbolValue("CL-VALUE"); + companySymbol.setCompanySymbol(CompanySymbol.INN.getKey()); + companySymbol.setCompanySymbolValue("INN-VALUE"); companySymbolsImdg.insert(companySymbol); Imdg profileDocumentImdg = hazelcastServiceTest.getImdg(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class); @@ -130,9 +134,13 @@ class MultiCompanyServiceTest { req.setCompanyId(COMPANY_ID); req.setCompanySymbol(CompanySymbol.CLRC.getKey()); req.setCompanySymbolValue("CL-VALUE-2"); + assertNull(multiCompanyService.findCompanySymbols(req)); + + req.setCompanySymbol(CompanySymbol.INN.getKey()); + req.setCompanySymbolValue("INN-VALUE"); CompanySymbols symbol = multiCompanyService.findCompanySymbols(req); assertNotNull(symbol); - assertEquals("CL-VALUE", symbol.getCompanySymbolValue()); + assertEquals("INN-VALUE", symbol.getCompanySymbolValue()); } @Test @@ -151,8 +159,32 @@ class MultiCompanyServiceTest { CompanyNewRequest req = new CompanyNewRequest(); req.setCompanySymbol(CompanySymbol.CLRC.getKey()); req.setCompanySymbolValue("CL-VALUE"); - Long theId = multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req); - assertEquals(COMPANY_ID, theId); + assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null)); + + req.setCompanySymbolValue("INN-VALUE"); + assertNull(multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null)); + req.setCompanySymbol(CompanySymbol.INN.getKey()); + assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols("SAMPLE-NO-uuid", req, null)); + req.setCompanySymbol(null); + req.setCompanySymbolValue(null); + assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null)); + List csReq=new ArrayList<>(); + assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, null)); + assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq)); + { + CompanySymbolNewRequest cs=new CompanySymbolNewRequest(); + cs.setCompanySymbol(CompanySymbol.CLRC.getKey()); + cs.setCompanySymbolValue("INN-VALUE"); + csReq.add(cs); + } + assertNull(multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq)); + { + CompanySymbolNewRequest cs=new CompanySymbolNewRequest(); + cs.setCompanySymbol(CompanySymbol.INN.getKey()); + cs.setCompanySymbolValue("INN-VALUE"); + csReq.add(cs); + } + assertEquals(COMPANY_ID, multiCompanyService.getCompanyIdForCompanySymbols(null, req, csReq)); } @Test 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 0adb4903f..520291439 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 @@ -11,6 +11,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.relation.Relation; import ru.clearing.platform.dictionary.ClearingCategoryDictionary; +import ru.clearing.platform.dictionary.ServiceStatusDictionary; import ru.clearing.platform.dictionary.WorkflowStatusDictionary; import ru.spcex.clearing.company.config.BeanConfiguration; import ru.spcex.clearing.company.config.validation.RelationValidationConfig; @@ -92,6 +93,18 @@ class RelationServiceTest { workflowStatusDictionary.setName("not active"); workflowStatusDictionaryImdg.insert(workflowStatusDictionary); + { + Imdg serviceStatusDictionaryImdg = hazelcastServiceTest.getImdg( + IMDGDistributedNames.Map_ServiceStatusDictionary, + ServiceStatusDictionary.class + ); + ServiceStatusDictionary status=new ServiceStatusDictionary(); + status.setId(1L); + status.setCode("ACTV"); + status.setName("\"ACTV\""); + serviceStatusDictionaryImdg.insert(status); + } + Imdg clearingCategoryDictionaryImdg = hazelcastServiceTest.getImdg( IMDGDistributedNames.Map_ClearingCategoryDictionary, ClearingCategoryDictionary.class 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 45158d490..2a2bf1707 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 @@ -87,7 +87,7 @@ public class CompanyRequestAdapter { log.warn("Money account \"{}\" not found", client.getMoneyAccount()); } else { log.debug("Money account \"{}\" found with id={}", client.getMoneyAccount(), mAccount.getId()); - client.setDepoAccountId(mAccount.getId()); + client.setMoneyAccountId(mAccount.getId()); } } catch (Exception e) { log.warn("Error happened when search money account \"{}\": {}", client.getMoneyAccount(), ExceptionUtils.getStackTrace(e)); From 1be10820a34d5d4b8ce872acc3d543c23fb8a472 Mon Sep 17 00:00:00 2001 From: mfd Date: Thu, 28 Sep 2023 14:36:51 +0300 Subject: [PATCH 2/3] Added task SDEP - EDEP and errorCode for cancel XDEP --- clearing-parent/backend-api/src/main/resources/meta/data.xml | 3 +++ 1 file changed, 3 insertions(+) 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 34cbeb614..4fb3405e5 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/data.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/data.xml @@ -246,6 +246,8 @@ + + @@ -473,6 +475,7 @@ + From c93e59c8147b5616fe2b25f808b1c71d7e7efd6c Mon Sep 17 00:00:00 2001 From: ialbert Date: Thu, 28 Sep 2023 15:16:16 +0300 Subject: [PATCH 3/3] XDEP time interval RequirementsAndObligationCreation execution match bugfix --- .../spcex/clearing/error/ClearingError.java | 1 + .../service/schedule/TradingTimeService.java | 19 ++++++++---- .../session/stage/SessionManager.java | 29 +++++++++++++------ .../RequirementsAndObligationCreation.java | 1 + .../ru/spcex/platform/enumeration/Task.java | 2 ++ 5 files changed, 38 insertions(+), 14 deletions(-) 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 77f155ee0..fe40c2381 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 @@ -34,6 +34,7 @@ public enum ClearingError implements IErrorEnumId { RgsWrongCode(5430L), RefundDateCannotBeChanged(5431L), PlanBalanceReviseError(5432L), + XdepTimeIntervalNotMatch(5433L), //ошибки "перенесенные" из balance-service, CompanyNotFoundB(5211L), CurrencyNotFound(5213L), diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/schedule/TradingTimeService.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/schedule/TradingTimeService.java index 48421c68a..c6c1fe167 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/schedule/TradingTimeService.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/schedule/TradingTimeService.java @@ -25,7 +25,7 @@ public class TradingTimeService { this.plannerAllTodayImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class); } - public boolean isTradingTime() { + private boolean isTradingTime(Task startTime, Task endTime) { ImdgPredicateBuilder pb = plannerAllTodayImdg.predicateBuilder(); Function> plannerByTask = task -> { ImdgPredicate plannerPrdct = pb.and( @@ -34,19 +34,28 @@ public class TradingTimeService { ); return Optional.ofNullable(plannerAllTodayImdg.getFirstObjectByPredicate(plannerPrdct)); }; - LocalTime startTradingTime = plannerByTask.apply(Task.createRegistry_STRS) + LocalTime startTradingTime = plannerByTask.apply(startTime) .map(PlannerAllToday::getTaskTime) .orElse(null); - LocalTime endTradingTime = plannerByTask.apply(Task.createRegistry_ETRS) + LocalTime endTradingTime = plannerByTask.apply(endTime) .map(PlannerAllToday::getTaskTime) .orElse(null); if (startTradingTime == null || endTradingTime == null) { - log.warn("startTradingTime or endTradingTime is null"); + log.warn("{} or {} not found in planner all today", startTime.getKey(), endTime.getKey()); return false; } LocalTime now = LocalTime.now(); boolean isTradingTime = !now.isBefore(startTradingTime) && !now.isAfter(endTradingTime); - log.debug("now: {}, startTradingTime: {}, endTradingTime: {}. trading time: {}", now, startTradingTime, endTradingTime, isTradingTime); + log.debug("now: {}, {}: {}, {}: {}. period check in: {}", + now, startTime.getKey(), startTradingTime, endTime.getKey(), endTradingTime, isTradingTime); return isTradingTime; } + + public boolean isTradingTime() { + return isTradingTime(Task.createRegistry_STRS, Task.createRegistry_ETRS); + } + + public boolean timeForXdep() { + return isTradingTime(Task.startTime_SDEP, Task.endTime_EDEP); + } } 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 3ab08e000..f911f457a 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 @@ -9,6 +9,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.notification.NotificationSender; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; +import ru.spcex.clearing.service.schedule.TradingTimeService; import ru.spcex.platform.enumeration.*; import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.ImdgProvider; @@ -33,13 +34,14 @@ public class SessionManager { private final IntermediateMkrSession intermediateMkrSession; private final FinalMkrSession finalMkrSession; private final ReturnDepositSession returnDepositSession; + private final TradingTimeService time; public SessionManager(ImdgProvider imdgProvider, NotificationSender notification, IMessageResolver msgs, PrimaryAuctionT0Session primaryAuctionT0Session, PrimaryAuctionBnSession primaryAuctionBnSession, PrimaryAuctionB0Session primaryAuctionB0Session, SecondaryAuctionT0Session secondaryAuctionT0Session, - IntermediateMkrSession intermediateMkrSession, FinalMkrSession finalMkrSession, ReturnDepositSession returnDepositSession) { + IntermediateMkrSession intermediateMkrSession, FinalMkrSession finalMkrSession, ReturnDepositSession returnDepositSession, TradingTimeService time) { this.notification = notification; this.msgs = msgs; this.primaryAuctionT0Session = primaryAuctionT0Session; @@ -51,6 +53,7 @@ public class SessionManager { this.returnDepositSession = returnDepositSession; sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); + this.time = time; } public void defineAndStartSession(BaseRequest r) throws ValidationException { //task sclr section fond sessiontype trdt @@ -76,19 +79,27 @@ public class SessionManager { if (session != null) { //checkActive - checkActiveSession(); + checkAllowSessionStart(sessionType); session.runSession(baseRequest); } } - protected void checkActiveSession() throws ValidationException { - Session existActiveSession = sessionImdg.getFirstObjectByFieldValues(Map.of( - "workflowStatus", SessionStatus.ACTV.getKey() - )); - if (existActiveSession != null) { - log.warn("Can not start new session, cause exist active session.id={}", existActiveSession.getId()); - EnumMessage err = new EnumMessage(ClearingError.ActiveSessionIsPresent, String.valueOf(existActiveSession.getId())); + protected void checkAllowSessionStart(SessionType sessionType) throws ValidationException { + EnumMessage err = null; + if (sessionType.equals(SessionType.XDEP) && !time.timeForXdep()) { + log.warn("cannot launch {} reason: time interval not matched", sessionType); + err = new EnumMessage(ClearingError.XdepTimeIntervalNotMatch); + } else { + Session existActiveSession = sessionImdg.getFirstObjectByFieldValues(Map.of( + "workflowStatus", SessionStatus.ACTV.getKey() + )); + if (existActiveSession != null) { + log.warn("Can not start new session, cause exist active session.id={}", existActiveSession.getId()); + err = new EnumMessage(ClearingError.ActiveSessionIsPresent, String.valueOf(existActiveSession.getId())); + } + } + if (err != null) { notification.sendNotification(ObjectType.session, msgs.resolve(err), Priority.HIGH); throw new ValidationException(err); } 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 bfbbde376..f65808b13 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 @@ -230,6 +230,7 @@ public class RequirementsAndObligationCreation implements ISessionStage { } if (invalid != null) { log.error("FATAL couldn't match Execution#id({}) with Execution#id({}) error: {}", exec1.getId(), exec2.getId(), invalid); + return null; } return new Pair<>(exec1, exec2); } 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 b932af49a..78172c922 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 @@ -25,6 +25,8 @@ public enum Task implements IEnumKey { liquidationSession_LIQU("LIQU"),//Ликвидационная сессия по обязательтсвам участника startSession_STRM("STRM"),//Начало торговой сессии секции МКР terminationSession_ETRM("ETRM"),//Завершение торговой сессии секции МКР + startTime_SDEP("SDEP"), + endTime_EDEP("EDEP"), startSession_SIPO("SIPO"),//Начало торговой сессии по первичным торгам terminationSession_EIPO("EIPO"),//Завершение торговой сессии по первичным торгам startSession_STRF("STRF"),//Начало торговой сессии по вторичным торгам