From 30ec2ceeec4bf3cf8da5de1bc13e4bb99698a474 Mon Sep 17 00:00:00 2001 From: ialbert Date: Fri, 25 Nov 2022 12:58:10 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-51 --- scheduler service (addition of scheduler) --- clearing-parent/pom.xml | 1 + clearing-parent/scheduler-service/pom.xml | 81 ++++++++++++++++ .../SchedulerServiceApplication.java | 12 +++ .../scheduler/config/KafkaConfig.java | 29 ++++++ .../config/SchedulerServiceImdgConfig.java | 47 +++++++++ .../settings/SchedulerServiceSettings.java | 41 ++++++++ .../service/SchedulerAllTodayService.java | 82 ++++++++++++++++ .../scheduler/service/SchedulerService.java | 79 +++++++++++++++ .../platform/messaging/domain/Consts.java | 4 + .../cud/schedule/SchedulerNewRequest.java | 91 ++++++++++++++++++ .../cud/schedule/SchedulerUpdateRequest.java | 95 +++++++++++++++++++ 11 files changed, 562 insertions(+) create mode 100644 clearing-parent/scheduler-service/pom.xml create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/SchedulerServiceApplication.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/KafkaConfig.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/SchedulerServiceImdgConfig.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/settings/SchedulerServiceSettings.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerAllTodayService.java create mode 100644 clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerService.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerNewRequest.java create mode 100644 platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerUpdateRequest.java diff --git a/clearing-parent/pom.xml b/clearing-parent/pom.xml index 2ef81dddd..08cc8557b 100644 --- a/clearing-parent/pom.xml +++ b/clearing-parent/pom.xml @@ -29,6 +29,7 @@ reports-service account-service balance-service + scheduler-service diff --git a/clearing-parent/scheduler-service/pom.xml b/clearing-parent/scheduler-service/pom.xml new file mode 100644 index 000000000..04774fd14 --- /dev/null +++ b/clearing-parent/scheduler-service/pom.xml @@ -0,0 +1,81 @@ + + + + clearing-parent + ru.spcex.clearing + SPCEX-1.0.0.0 + + 4.0.0 + + scheduler-service + + + 17 + 17 + + + + ru.spcex.platform + platform-messaging + + + ru.spcex.platform + platform-enum + + + ru.spcex.platform + platform-imdg-api-hazelcast-impl + + + ru.spcex.clearing + classes + + + org.springframework.boot + spring-boot-starter + + + com.fasterxml.jackson.core + jackson-databind + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + src/main/resources + + application.properties + + false + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + ${project.artifactId} + + + + + + + \ No newline at end of file diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/SchedulerServiceApplication.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/SchedulerServiceApplication.java new file mode 100644 index 000000000..6022af291 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/SchedulerServiceApplication.java @@ -0,0 +1,12 @@ +package ru.spcex.clearing.scheduler; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SchedulerServiceApplication { + public static void main(String[] args) { + SpringApplication springApplication = new SpringApplication(SchedulerServiceApplication.class); + springApplication.run(args); + } +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/KafkaConfig.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/KafkaConfig.java new file mode 100644 index 000000000..5babe0b15 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/KafkaConfig.java @@ -0,0 +1,29 @@ +package ru.spcex.clearing.scheduler.config; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import ru.spcex.clearing.platform.messaging.config.KafkaConsumerFactory; +import ru.spcex.clearing.platform.messaging.config.KafkaProducerFactory; +import ru.spcex.clearing.scheduler.config.settings.SchedulerServiceSettings; + +@Configuration +public class KafkaConfig { + @Autowired + @Bean + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public Consumer createConsumer(SchedulerServiceSettings settings) { + return KafkaConsumerFactory.consumer(settings.getKafkaConsumer()); + } + + @Autowired + @Bean + public Producer createProducer(SchedulerServiceSettings settings) { + return KafkaProducerFactory.producer(settings.getKafkaProducer()); + } + +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/SchedulerServiceImdgConfig.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/SchedulerServiceImdgConfig.java new file mode 100644 index 000000000..f9d5da568 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/SchedulerServiceImdgConfig.java @@ -0,0 +1,47 @@ +package ru.spcex.clearing.scheduler.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import ru.spcex.clearing.scheduler.config.settings.SchedulerServiceSettings; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.iml.hazelcast.service.HazelcastService; + +@Configuration +public class SchedulerServiceImdgConfig { + private static ThreadPoolTaskExecutor createThreadPoolTaskExecutor(int maxPoolSz, boolean waitForCompletion) { + ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor(); + if (maxPoolSz > 2) { + pool.setKeepAliveSeconds(60); + pool.setAllowCoreThreadTimeOut(true); + } + pool.setCorePoolSize(maxPoolSz); + pool.setWaitForTasksToCompleteOnShutdown(waitForCompletion); + return pool; + } + + @Bean(name = "taskExecutorHazelcastClientInitializer") + public ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer() { + return createThreadPoolTaskExecutor(1, true); + } + + @Bean(name = "taskExecutorIdGeneratorAwaiter") + public ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter() { + return createThreadPoolTaskExecutor(1, false); + } + + @Autowired + @Bean + public ImdgProvider imdgProvider( + @Qualifier("taskExecutorHazelcastClientInitializer") ThreadPoolTaskExecutor taskExecutorHazelcastClientInitializer, + @Qualifier("taskExecutorIdGeneratorAwaiter") ThreadPoolTaskExecutor taskExecutorIdGeneratorAwaiter, + SchedulerServiceSettings settings + ) { + return new HazelcastService(taskExecutorHazelcastClientInitializer, + taskExecutorIdGeneratorAwaiter, + settings.getHazelcast()); + } + +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/settings/SchedulerServiceSettings.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/settings/SchedulerServiceSettings.java new file mode 100644 index 000000000..8135f4e2d --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/config/settings/SchedulerServiceSettings.java @@ -0,0 +1,41 @@ +package ru.spcex.clearing.scheduler.config.settings; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; +import ru.spcex.clearing.platform.messaging.config.element.KafkaConsumerSettings; +import ru.spcex.clearing.platform.messaging.config.element.KafkaProducerSettings; +import ru.spcex.platform.imdg.iml.hazelcast.config.HazelcastClientParams; + +@Component +@PropertySource("file:${spring.config.location}/application.properties") +@ConfigurationProperties("scheduler-service") +public class SchedulerServiceSettings { + private HazelcastClientParams hazelcast; + private KafkaConsumerSettings kafkaConsumer; + private KafkaProducerSettings kafkaProducer; + + public HazelcastClientParams getHazelcast() { + return hazelcast; + } + + public void setHazelcast(HazelcastClientParams hazelcast) { + this.hazelcast = hazelcast; + } + + public KafkaConsumerSettings getKafkaConsumer() { + return kafkaConsumer; + } + + public void setKafkaConsumer(KafkaConsumerSettings kafkaConsumer) { + this.kafkaConsumer = kafkaConsumer; + } + + public KafkaProducerSettings getKafkaProducer() { + return kafkaProducer; + } + + public void setKafkaProducer(KafkaProducerSettings kafkaProducer) { + this.kafkaProducer = kafkaProducer; + } +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerAllTodayService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerAllTodayService.java new file mode 100644 index 000000000..faff5d228 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerAllTodayService.java @@ -0,0 +1,82 @@ +package ru.spcex.clearing.scheduler.service; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.scheduler.Scheduler; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.SchedulerNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.schedule.SchedulerUpdateRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +@Service +public class SchedulerAllTodayService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final Imdg schedulerMap; + + @Autowired + public SchedulerAllTodayService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.schedulerMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Scheduler, Scheduler.class); + } + + @Override + public void afterPropertiesSet() { + callback(SchedulerNewRequest.class) + .setConsumer(this::newScheduler) + .forDestination(Consts.DESTINATION_SCHEDULER_NEW, callbacks::put); + callback(SchedulerUpdateRequest.class) + .setConsumer(this::updateScheduler) + .forDestination(Consts.DESTINATION_SCHEDULER_UPDATE, callbacks::put); + callback(CommonDeleteRequest.class) + .setConsumer(this::deleteScheduler) + .forDestination(Consts.DESTINATION_SCHEDULER_DELETE, callbacks::put); + init(); + } + + private void newScheduler(BaseRequest userRequest) { + SchedulerNewRequest req = userRequest.getRequestPayload(); + log.debug("SchedulerNewRequest received"); + Scheduler scheduler = new Scheduler(); + scheduler.setTask(req.getTask()); + scheduler.setTaskTime(req.getTaskTime()); + scheduler.setClearingDate(req.getClearingDate()); + scheduler.setMarket(req.getMarket()); + scheduler.setTaskStatus(req.getTaskStatus()); + scheduler.setSecurityId(req.getSecurityId()); + schedulerMap.insert(scheduler); + log.debug("successfully processed, new id {}", scheduler.getId()); + } + + private void updateScheduler(BaseRequest userRequest) { + SchedulerUpdateRequest req = userRequest.getRequestPayload(); + log.debug("SchedulerUpdateRequest received id = {}", req.getId()); + Scheduler scheduler = schedulerMap.getSingleObjectByID(req.getId()); + scheduler.setTask(req.getTask()); + scheduler.setTaskTime(req.getTaskTime()); + scheduler.setClearingDate(req.getClearingDate()); + scheduler.setMarket(req.getMarket()); + scheduler.setTaskStatus(req.getTaskStatus()); + scheduler.setSecurityId(req.getSecurityId()); + + schedulerMap.update(scheduler); + } + + private void deleteScheduler(BaseRequest userRequest) { + CommonDeleteRequest req = userRequest.getRequestPayload(); + log.debug("CommonDeleteRequest received id = {}", req.getId()); + Scheduler scheduler = schedulerMap.getSingleObjectByID(req.getId()); + schedulerMap.delete(scheduler); + } + +} diff --git a/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerService.java b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerService.java new file mode 100644 index 000000000..effaaf686 --- /dev/null +++ b/clearing-parent/scheduler-service/src/main/java/ru/spcex/clearing/scheduler/service/SchedulerService.java @@ -0,0 +1,79 @@ +package ru.spcex.clearing.scheduler.service; + +import org.apache.kafka.clients.consumer.Consumer; +import org.apache.kafka.clients.producer.Producer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import ru.clearing.classes.statics.data.misc.KeyRate; +import ru.spcex.clearing.imdg.IMDGDistributedNames; +import ru.spcex.clearing.platform.messaging.domain.BaseRequest; +import ru.spcex.clearing.platform.messaging.domain.Consts; +import ru.spcex.clearing.platform.messaging.domain.cud.common.CommonDeleteRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.KeyRateNewRequest; +import ru.spcex.clearing.platform.messaging.domain.cud.utilities.KeyRateUpdateRequest; +import ru.spcex.clearing.platform.messaging.service.QueueConsumer; +import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.imdg.api.Imdg; +import ru.spcex.platform.imdg.api.ImdgProvider; + +@Service +public class SchedulerService extends QueueConsumer implements InitializingBean { + private final Logger log = LoggerFactory.getLogger(getClass()); + private final Imdg keyRateMap; + + @Autowired + public SchedulerService(Consumer kafkaQueue, Producer kafkaProducer, + ImdgProvider imdgProvider) { + super(kafkaQueue, kafkaProducer); + this.keyRateMap = imdgProvider.getImdg(IMDGDistributedNames.Map_KeyRate, KeyRate.class); + } + + @Override + public void afterPropertiesSet() { + callback(KeyRateNewRequest.class) + .setConsumer(this::newKeyRate) + .forDestination(Consts.DESTINATION_KEY_RATE_NEW, callbacks::put); + callback(KeyRateUpdateRequest.class) + .setConsumer(this::updateKeyRate) + .forDestination(Consts.DESTINATION_KEY_RATE_UPDATE, callbacks::put); + callback(CommonDeleteRequest.class) + .setConsumer(this::deleteKeyRate) + .forDestination(Consts.DESTINATION_KEY_RATE_DELETE, callbacks::put); + init(); + } + + private void newKeyRate(BaseRequest userRequest) { + KeyRateNewRequest req = userRequest.getRequestPayload(); + log.debug("MoneyMarketSecurityNewRequest received"); + KeyRate keyRate = new KeyRate(); + keyRate.setEndDate(req.getEndDate()); + keyRate.setDocument(req.getDocument()); + keyRate.setRate(req.getKeyRate()); + keyRate.setStartDate(req.getStartDate()); + keyRate.setWorkflowStatus(Status.Active.getKey()); + keyRateMap.insert(keyRate); + log.debug("successfully processed, new id {}", keyRate.getId()); + } + + private void updateKeyRate(BaseRequest userRequest) { + KeyRateUpdateRequest req = userRequest.getRequestPayload(); + log.debug("MoneyMarketSecurityUpdateRequest received id = {}", req.getId()); + KeyRate keyRate = keyRateMap.getSingleObjectByID(req.getId()); + keyRate.setEndDate(req.getEndDate()); + keyRate.setDocument(req.getDocument()); + keyRate.setRate(req.getKeyRate()); + keyRate.setStartDate(req.getStartDate()); + keyRateMap.update(keyRate); + } + + private void deleteKeyRate(BaseRequest userRequest) { + CommonDeleteRequest req = userRequest.getRequestPayload(); + log.debug("CommonDeleteRequest received id = {}", req.getId()); + KeyRate keyRate = keyRateMap.getSingleObjectByID(req.getId()); + keyRateMap.delete(keyRate); + } + +} 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 759cb6328..df5ac80b5 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 @@ -9,6 +9,10 @@ public interface Consts { String DESTINATION_KEY_RATE_UPDATE = "key-rate-update"; String DESTINATION_KEY_RATE_DELETE = "key-rate-delete"; + String DESTINATION_SCHEDULER_NEW = "scheduler-new"; + String DESTINATION_SCHEDULER_UPDATE = "scheduler-update"; + String DESTINATION_SCHEDULER_DELETE = "scheduler-delete"; + String DESTINATION_COMPANY_DELETE = "company-delete"; String DESTINATION_COMPANY_INFO_UPDATE = "company-info-update"; String DESTINATION_COMPANY_SYMBOL_UPDATE = "company-symbol-update"; diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerNewRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerNewRequest.java new file mode 100644 index 000000000..405d98f59 --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerNewRequest.java @@ -0,0 +1,91 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.schedule; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class SchedulerNewRequest { + @JsonProperty + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalTime taskTime; + + @JsonProperty + public String task; + + @JsonProperty + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + public LocalDate clearingDate; + + @JsonProperty + public String market; + + @JsonProperty + public String taskStatus; + + @JsonProperty + public Long securityId; + + public SchedulerNewRequest(LocalTime taskTime, String task, LocalDate clearingDate, String market, String taskStatus, Long securityId) { + this.taskTime = taskTime; + this.task = task; + this.clearingDate = clearingDate; + this.market = market; + this.taskStatus = taskStatus; + this.securityId = securityId; + } + + public LocalTime getTaskTime() { + return taskTime; + } + + public void setTaskTime(LocalTime taskTime) { + this.taskTime = taskTime; + } + + public String getTask() { + return task; + } + + public void setTask(String task) { + this.task = task; + } + + public LocalDate getClearingDate() { + return clearingDate; + } + + public void setClearingDate(LocalDate clearingDate) { + this.clearingDate = clearingDate; + } + + public String getMarket() { + return market; + } + + public void setMarket(String market) { + this.market = market; + } + + public String getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(String taskStatus) { + this.taskStatus = taskStatus; + } + + public Long getSecurityId() { + return securityId; + } + + public void setSecurityId(Long securityId) { + this.securityId = securityId; + } +} diff --git a/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerUpdateRequest.java b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerUpdateRequest.java new file mode 100644 index 000000000..abdf25d5a --- /dev/null +++ b/platform-parent/platform-messaging/src/main/java/ru/spcex/clearing/platform/messaging/domain/cud/schedule/SchedulerUpdateRequest.java @@ -0,0 +1,95 @@ +package ru.spcex.clearing.platform.messaging.domain.cud.schedule; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalTimeDeserializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer; +import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class SchedulerUpdateRequest { + @JsonProperty + private String task; + + @JsonSerialize(using = LocalTimeSerializer.class) + @JsonDeserialize(using = LocalTimeDeserializer.class) + @JsonProperty + private LocalTime taskTime; + + @JsonSerialize(using = LocalDateSerializer.class) + @JsonDeserialize(using = LocalDateDeserializer.class) + @JsonProperty + private LocalDate clearingDate; + + @JsonProperty + private String market; + + @JsonProperty + private String taskStatus; + + @JsonProperty + private Long securityId; + + @JsonProperty + private Long id; + + public String getTask() { + return task; + } + + public void setTask(String task) { + this.task = task; + } + + public LocalTime getTaskTime() { + return taskTime; + } + + public void setTaskTime(LocalTime taskTime) { + this.taskTime = taskTime; + } + + public LocalDate getClearingDate() { + return clearingDate; + } + + public void setClearingDate(LocalDate clearingDate) { + this.clearingDate = clearingDate; + } + + public String getMarket() { + return market; + } + + public void setMarket(String market) { + this.market = market; + } + + public String getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(String taskStatus) { + this.taskStatus = taskStatus; + } + + public Long getSecurityId() { + return securityId; + } + + public void setSecurityId(Long securityId) { + this.securityId = securityId; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +}