diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/LauncherNew.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/LauncherNew.java index 31ceac638..f5bfe7497 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/LauncherNew.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/request/cud/schedule/LauncherNew.java @@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty; import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.platform.messaging.domain.ActionType; -import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportWithPeriodRequest; import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.platform.enumeration.Task; import ru.spcex.platform.utils.enumeration.EnumMessage; @@ -31,18 +30,12 @@ public class LauncherNew implements IAction { @Override public Object toRequest() { - if (Task.createReport_GREP.equalsByKey(task)) { - ReportWithPeriodRequest reportCommand = new ReportWithPeriodRequest(); - reportCommand.setReportId(task); - return reportCommand; - } else { - LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest(); - taskRunnerCommandRequest.setTaskName(task); - taskRunnerCommandRequest.setCompanyId(companyId); - taskRunnerCommandRequest.setSecurityId(securityId); - taskRunnerCommandRequest.setUserId(userId); - return taskRunnerCommandRequest; - } + LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest(); + taskRunnerCommandRequest.setTaskName(task); + taskRunnerCommandRequest.setCompanyId(companyId); + taskRunnerCommandRequest.setSecurityId(securityId); + taskRunnerCommandRequest.setUserId(userId); + return taskRunnerCommandRequest; } @Override diff --git a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java index bbe554b3a..761141c85 100644 --- a/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java +++ b/clearing-parent/clearing-service/src/main/java/ru/spcex/clearing/service/ExecutionDepositComponent.java @@ -21,7 +21,7 @@ import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; import ru.spcex.clearing.platform.messaging.domain.Consts; -import ru.spcex.clearing.platform.messaging.domain.cud.registry.CoveredDealRegisterNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.registry.DealRegisterNewRequest; import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketSecurityNewRequest; import ru.spcex.platform.enumeration.Allowed; import ru.spcex.platform.enumeration.Market; @@ -85,8 +85,9 @@ public class ExecutionDepositComponent { /** * Сбрасывать каждый день в 01:00:01 "0 1 0 1 * ?" */ - @Scheduled(cron = "${clearing-service.scheduler.check-s-trade}") + @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; @@ -95,8 +96,9 @@ public class ExecutionDepositComponent { log.info("Reset trading day for search STrade: tradeNum={}, tradeDat={}", tradeNum, tradingDay); } + @Scheduled(cron = "${clearing-service.scheduler.check-s-trade}") public void processNewTS() { - Long tradeNum = -1L; // todo уточнить как он обновляется + log.debug("Start check new S_TRADE. Start tradeNum={}", tradeNum); ImdgPredicateBuilder pb = sTradeImdg.predicateBuilder(); ImdgPredicate sql = pb.and(pb.greater("tradeNum", tradeNum), pb.greatEqual("tradeDateTime", tradingDay)); Collection sTrades = sTradeImdg.getCollectionObjectsByPredicate(sql); @@ -166,7 +168,7 @@ public class ExecutionDepositComponent { Long newMaxTradeNum = sTrades.stream().mapToLong(STrade::getTradeNum).max().orElseGet(() -> tradeNum); - log.debug("Next tradeNum is {}", newMaxTradeNum); + log.info("Process completed. Next tradeNum is {}", newMaxTradeNum); } protected void verification(ExecutionDeposit forED) throws ClearingException { @@ -236,26 +238,13 @@ public class ExecutionDepositComponent { } protected void sendNotification(ExecutionDeposit forED) { - final String destination = Consts.REGISTRY_COVERED_DEAL_REGISTER_NEW; - CoveredDealRegisterNewRequest requestPayload = new CoveredDealRegisterNewRequest(); + final String destination = Consts.REGISTRY_DEAL_REGISTER_NEW; + DealRegisterNewRequest requestPayload = new DealRegisterNewRequest(); requestPayload.setExecutionId(forED.getId()); -// requestPayload.setCompanyFullName(forED.getCompanyFullName()); - requestPayload.setTradingDate(forED.getTradingDate()); + requestPayload.setClearingDate(forED.getClearingDate()); requestPayload.setExchangeExecutionId(forED.getExchangeExecutionId()); requestPayload.setExchangeExecutionTime(forED.getExchangeExecutionTime()); - requestPayload.setSecuritySymbol(forED.getSecuritySymbol()); - requestPayload.setSecurityFullName(forED.getSecurityFullName()); -// requestPayload.setSellerFullName(forED.getSellerFullName()); -// requestPayload.setSellerClearingCode(forED.getSellerClearingCode()); -// String requestPayload.setSellerAccount(forED.getAccountId()); -// String requestPayload.setBuyerFullName(forED.getBuyerFullName()); -// requestPayload.setBuyerClearingCode(forED.getBuyerClearingCode()); -// String requestPayload.setBuyerAccount(forED.getBuyerAccount()); -// BigDecimal requestPayload.setAmount(forED.getAmount()); - requestPayload.setId(idGenerator.nextId()); - requestPayload.setCreatedAt(forED.getCreated()); - requestPayload.setUpdatedAt(forED.getUpdated()); - requestPayload.setClearingDate(forED.getClearingDate()); +// requestPayload.setId(idGenerator.nextId()); BaseRequest request = new BaseRequest<>(); request.setId(idGenerator.nextId()); diff --git a/clearing-parent/clearing-service/src/main/resources/application.properties b/clearing-parent/clearing-service/src/main/resources/application.properties index e0908f94a..bb4e61e6b 100644 --- a/clearing-parent/clearing-service/src/main/resources/application.properties +++ b/clearing-parent/clearing-service/src/main/resources/application.properties @@ -20,4 +20,4 @@ clearing-service.kafka-producer.linger-ms=1 clearing-service.kafka-producer.buffer-memory=33554432 clearing-service.scheduler.check-payment-instruction=*/5 * * * * * -clearing-service.scheduler.check-s-trade=0 1 0 1 * ? +clearing-service.scheduler.check-s-trade=0 * 0 1 * ? diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java index 021bbc884..95436a786 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/QCommandExecutor.java @@ -8,7 +8,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import ru.spcex.clearing.platform.messaging.domain.BaseRequest; -import ru.spcex.clearing.platform.messaging.domain.cud.reports.ReportWithPeriodRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest; import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.reports.config.element.ReportsServiceSettings; import ru.spcex.platform.enumeration.Task; @@ -40,20 +40,23 @@ public class QCommandExecutor extends QueueConsumer implements InitializingBean @Override public void afterPropertiesSet() { log.info("Init queue listener {}", getClass().getSimpleName()); - callback(ReportWithPeriodRequest.class) + callback(LauncherCommandRequest.class) .setConsumer(this::newReportWithPeriod) .forDestination(Task.createReport_GREP.topic(), callbacks::put); init(); } - private void newReportWithPeriod(BaseRequest reportRequest) { - ReportWithPeriodRequest request = reportRequest.getRequestPayload(); + private void newReportWithPeriod(BaseRequest reportRequest) { + LauncherCommandRequest request = reportRequest.getRequestPayload(); log.info("newReportWithPeriod request received: {}", request); + final String taskName = QUEUE_RUN_REPORT_COMMAND; //request.getTaskName(); - if (StringUtils.isBlank(request.getReportId())) - throw new IllegalStateException("ReportID is empty"); - LocalDate startDate = request.getStartDate(); - LocalDate endDate = request.getEndDate(); +// if (StringUtils.isBlank(request.getReportId())) +// throw new IllegalStateException("ReportID is empty"); +// LocalDate startDate = request.getStartDate(); +// LocalDate endDate = request.getEndDate(); + LocalDate startDate = null; + LocalDate endDate = null; if (startDate == null && endDate == null) { endDate = LocalDate.now(); startDate = LocalDate.of(endDate.getYear(), endDate.getMonth(), 1); @@ -65,18 +68,18 @@ public class QCommandExecutor extends QueueConsumer implements InitializingBean throw new IllegalStateException("StartDate > EndDate"); try { - if (QUEUE_RUN_REPORT_COMMAND.equals(request.getReportId()) - || QUEUE_RUN_DAILY_REPORT_COMMAND.equals(request.getReportId())) { - log.info("Generate all report by command {}", request.getReportId()); - reportsServiceCommand.generateReportAll(request.getReportId(), startDate, endDate); + if (QUEUE_RUN_REPORT_COMMAND.equals(taskName) + || QUEUE_RUN_DAILY_REPORT_COMMAND.equals(taskName)) { + log.info("Generate all report by command {}", taskName); + reportsServiceCommand.generateReportAll(taskName, startDate, endDate); } else { - log.info("Generate single report by command {}", request.getReportId()); - reportsServiceCommand.generateReportById(request.getReportId(), startDate, endDate); + log.info("Generate single report by command {}", taskName); + reportsServiceCommand.generateReportById(taskName, startDate, endDate); } log.debug("successfully processed"); } catch (IOException e) { - log.error("Error create report {}: {}", request.getReportId(), ExceptionUtils.getStackTrace(e)); + log.error("Error create report {}: {}", taskName, ExceptionUtils.getStackTrace(e)); } } diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java index e7687ed87..b11179d01 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/ReportWithPeriodCollector.java @@ -20,9 +20,9 @@ public abstract class ReportWithPeriodCollector extend LocalDate startDate, LocalDate endDate) { ImdgPredicateBuilder pb = liabilitiesClaimsAssetsImdg.predicateBuilder(); - Instant dateTimeLo = toInstantStartDay(startDate); - Instant dateTimeHi = toInstantStartDay(endDate); - ImdgPredicate p = pb.and(pb.greatEqual("refundDate", dateTimeLo), pb.lessEqual("refundDate", dateTimeHi)); +// Instant dateTimeLo = toInstantStartDay(startDate); +// Instant dateTimeHi = toInstantEndDay(endDate); + ImdgPredicate p = pb.and(pb.greatEqual("refundDate", startDate), pb.lessEqual("refundDate", endDate)); Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(p); return liabilities; } @@ -31,9 +31,9 @@ public abstract class ReportWithPeriodCollector extend LocalDate startDate, LocalDate endDate, Long allowClearingStatusId) { ImdgPredicateBuilder pb = liabilitiesClaimsAssetsImdg.predicateBuilder(); - Instant dateTimeLo = toInstantStartDay(startDate); - Instant dateTimeHi = toInstantStartDay(endDate); - ImdgPredicate p = pb.and(pb.greatEqual("refundDate", dateTimeLo), pb.lessEqual("refundDate", dateTimeHi), +// Instant dateTimeLo = toInstantStartDay(startDate); +// Instant dateTimeHi = toInstantEndDay(endDate); + ImdgPredicate p = pb.and(pb.greatEqual("refundDate", startDate), pb.lessEqual("refundDate", endDate), pb.equals("clearingStatus", allowClearingStatusId)); Collection liabilities = liabilitiesClaimsAssetsImdg.getCollectionObjectsByPredicate(p); return liabilities; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P2_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P2_Collector.java index 46bacd498..367d11525 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P2_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420314_P2_Collector.java @@ -45,7 +45,7 @@ public class ReportBR_0420314_P2_Collector extends ReportWithPeriodCollector searchPaymentInstruction(LocalDate startDate, LocalDate endDate) { ImdgPredicateBuilder pb = paymentInstructionImdg.predicateBuilder(); Instant dateTimeLo = toInstantStartDay(startDate); - Instant dateTimeHi = toInstantStartDay(endDate); + Instant dateTimeHi = toInstantEndDay(endDate); ImdgPredicate p = pb.and(pb.greatEqual("created", dateTimeLo), pb.lessEqual("created", dateTimeHi)); Collection paymentInstructionsAll = paymentInstructionImdg.getCollectionObjectsByPredicate(p); return paymentInstructionsAll; diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420317_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420317_Collector.java index 8699ec969..c0d7748b0 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420317_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportBR_0420317_Collector.java @@ -35,7 +35,7 @@ public class ReportBR_0420317_Collector extends ReportWithPeriodCollector searchRelation(LocalDate startDate, LocalDate endDate, String service) { ImdgPredicateBuilder pb = relationImdg.predicateBuilder(); Instant dateTimeLo = toInstantStartDay(startDate); - Instant dateTimeHi = toInstantStartDay(endDate); + Instant dateTimeHi = toInstantEndDay(endDate); ImdgPredicate p = pb.and(pb.greatEqual("updated", dateTimeLo), pb.lessEqual("updated", dateTimeHi), pb.equals("service", service)); Collection relations = relationImdg.getCollectionObjectsByPredicate(p); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java index 8f6fe2bc4..bc373378d 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_B_Collector.java @@ -49,8 +49,8 @@ public class ReportPA_B_Collector extends ReportWithPeriodCollector ImdgPredicateBuilder builder = liabilitiesClaimsAssetsImdg.predicateBuilder(); ImdgPredicate refundDatePredicate = builder.and( - builder.greatEqual("refundDate", toInstantStartDay(startDate)), - builder.lessEqual("refundDate", toInstantStartDay(endDate)) + builder.greatEqual("refundDate", (startDate)), + builder.lessEqual("refundDate", (endDate)) ); ImdgPredicate companyIdPredicates = builder.in("companyId", companyIds.toArray(new Comparable[0])); ImdgPredicate finalPredicate = builder.and(refundDatePredicate, companyIdPredicates); diff --git a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java index c7bef06e6..159b72c32 100644 --- a/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java +++ b/clearing-parent/reports-service/src/main/java/ru/spcex/clearing/reports/services/collector/ReportPA_IV_Collector.java @@ -55,8 +55,8 @@ public class ReportPA_IV_Collector extends ReportWithPeriodCollector makeCmdRequest(Task byTask, Long userId) { Object toRequest; - if (Task.createReport_GREP.equals(byTask)) { // см. ru.spcex.clearing.backendapi.controller.request.cud.schedule.LauncherNew#toRequest - ReportWithPeriodRequest reportCommand = new ReportWithPeriodRequest(); - reportCommand.setReportId(byTask.getKey()); - toRequest = reportCommand; - } else { - LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest(); - taskRunnerCommandRequest.setTaskName(byTask.getKey()); - taskRunnerCommandRequest.setUserId(userId); - toRequest = taskRunnerCommandRequest; - } + LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest(); + taskRunnerCommandRequest.setTaskName(byTask.getKey()); + taskRunnerCommandRequest.setUserId(userId); + toRequest = taskRunnerCommandRequest; BaseRequest request = new BaseRequest<>(); request.setId(idGenerator.nextId()); request.setActionType(ActionType.NEW); 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 7f9e2f44f..aa869d0d4 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 @@ -58,7 +58,7 @@ public class LauncherService extends QueueConsumer implements InitializingBean { launcher.setUpdated(created); launcherMap.insert(launcher); log.debug("successfully processed, new id {}", launcher.getId()); - kafkaProducer.send(new ProducerRecord<>("launcher-" + launcher.getTask(), req)); + kafkaProducer.send(new ProducerRecord<>("launcher-" + launcher.getTask(), userRequest)); } } 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 b4132fa0a..552594f41 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 @@ -57,6 +57,7 @@ public interface Consts { String REGISTRY_COVERED_DEAL_REGISTER_NEW = "registry-covered-deal-register-new"; String REGISTRY_ADMITTED_DEAL_REGISTER_NEW = "registry-admitted-deal-register-new"; + String REGISTRY_DEAL_REGISTER_NEW = "registry-deal-register-new"; String REGISTRY_ORDER_REGISTER_NEW = "registry-order-register-new"; String REGISTRY_CONTRACT_REGISTER_NEW = "registry-contract-register-new"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/DealRegisterNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/DealRegisterNewRequest.java new file mode 100644 index 000000000..c9edf8b55 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/registry/DealRegisterNewRequest.java @@ -0,0 +1,67 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.registry; + + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.math.BigDecimal; +import java.time.Instant; +import java.time.LocalDate; + +public class DealRegisterNewRequest { + + @JsonProperty + public Long executionId; + + @JsonProperty + public Long exchangeExecutionId; + + @JsonProperty + public Instant exchangeExecutionTime; + + @JsonProperty + public Long id; + + @JsonProperty + public LocalDate clearingDate; + + + public Long getExecutionId() { + return executionId; + } + + public void setExecutionId(Long executionId) { + this.executionId = executionId; + } + + public Long getExchangeExecutionId() { + return exchangeExecutionId; + } + + public void setExchangeExecutionId(Long exchangeExecutionId) { + this.exchangeExecutionId = exchangeExecutionId; + } + + public Instant getExchangeExecutionTime() { + return exchangeExecutionTime; + } + + public void setExchangeExecutionTime(Instant exchangeExecutionTime) { + this.exchangeExecutionTime = exchangeExecutionTime; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public LocalDate getClearingDate() { + return clearingDate; + } + + public void setClearingDate(LocalDate clearingDate) { + this.clearingDate = clearingDate; + } +}