ialbert 2022-12-05 18:35:25 +03:00
parent c8527293b7
commit 0b24bae280
52 changed files with 1170 additions and 1163 deletions

View file

@ -8,7 +8,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.scheduler.SchedulerAllToday; import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -17,21 +17,21 @@ import java.util.Collection;
import java.util.Map; import java.util.Map;
@Controller @Controller
@RequestMapping("/schedule/schedulers-all-today") @RequestMapping("/schedule/clearing-calendars")
public class SchedulerAllTodayController { public class ClearingCalendarController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public SchedulerAllTodayController(IStateLoader stateLoader) { public ClearingCalendarController(IStateLoader stateLoader) {
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }
@ApiOperation(value = "get all SchedulerAllToday objects.") @ApiOperation(value = "get all clearing calendars.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
public CommonGetAllResponse getAll() { public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_SchedulerAllToday, SchedulerAllToday.class); Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class);
var response = new CommonGetAllResponse(); var response = new CommonGetAllResponse();
response.fromEntity(all); response.fromEntity(all);
return response; return response;

View file

@ -11,10 +11,10 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import ru.clearing.classes.statics.data.scheduler.TaskRunner; import ru.clearing.classes.statics.data.scheduler.Launcher;
import ru.clearing.classes.statics.data.user.User; import ru.clearing.classes.statics.data.user.User;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.TaskRunnerNew; import ru.spcex.clearing.backendapi.controller.request.cud.schedule.LauncherNew;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse; import ru.spcex.clearing.backendapi.controller.response.cud.CudResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
@ -34,45 +34,45 @@ import java.util.Map;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@Controller @Controller
@RequestMapping("/task-runners") @RequestMapping("/launchers")
public class TaskRunnerController extends AbstractQueueController { public class LauncherController extends AbstractQueueController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
private final Imdg<User> userImdg; private final Imdg<User> userImdg;
@Autowired @Autowired
public TaskRunnerController(IStateLoader stateLoader, IOperator operator, ImdgProvider imdgProvider) { public LauncherController(IStateLoader stateLoader, IOperator operator, ImdgProvider imdgProvider) {
super(operator); super(operator);
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
this.userImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_User, User.class); this.userImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_User, User.class);
} }
@ApiOperation(value = "get all TaskRunners.") @ApiOperation(value = "get all Launchers.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
public CommonGetAllResponse getAll() { public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_TaskRunner, TaskRunner.class); Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Launcher, Launcher.class);
var response = new CommonGetAllResponse(); var response = new CommonGetAllResponse();
response.fromEntity(all); response.fromEntity(all);
return response; return response;
} }
@ApiOperation(value = "create task runner.") @ApiOperation(value = "create launcher.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)}) @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{task-code}", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = "/{task-code}", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody @ResponseBody
public CudResponse add(@ApiParam(value = "Код задания из taskDictionary", required = true, example = "ABLK") public CudResponse add(@ApiParam(value = "Код задания из taskDictionary", required = true, example = "ABLK")
@PathVariable("task-code") String dictionaryName) throws ExecutionException, InterruptedException { @PathVariable("task-code") String dictionaryName) throws ExecutionException, InterruptedException {
TaskRunnerNew taskRunnerCommand = new TaskRunnerNew(); LauncherNew launcherCommand = new LauncherNew();
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String username = KeycloakUtils.getUserNameFromAuthentication(authentication); String username = KeycloakUtils.getUserNameFromAuthentication(authentication);
User user = userImdg.getSingleObjectByFieldValues(Map.of("identifier", username)); User user = userImdg.getSingleObjectByFieldValues(Map.of("identifier", username));
if (user == null) { if (user == null) {
throw new IllegalStateException("cannot obtain userId from logged in user " + username); throw new IllegalStateException("cannot obtain userId from logged in user " + username);
} }
taskRunnerCommand.setTask(dictionaryName); launcherCommand.setTask(dictionaryName);
taskRunnerCommand.setUserId(user.getId()); launcherCommand.setUserId(user.getId());
return processRequest(Consts.TASK_RUNNER_NEW, taskRunnerCommand); return processRequest(Consts.LAUNCHER_NEW, launcherCommand);
} }
@Autowired @Autowired

View file

@ -8,9 +8,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.scheduler.Scheduler; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.controller.response.entity.schedule.SchedulerBackendGetAll;
import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -18,21 +17,21 @@ import java.util.Collection;
import java.util.Map; import java.util.Map;
@Controller @Controller
@RequestMapping("/schedule/schedulers") @RequestMapping("/schedule/planners-all-today")
public class SchedulerController { public class PlanerAllTodayController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public SchedulerController(IStateLoader stateLoader) { public PlanerAllTodayController(IStateLoader stateLoader) {
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }
@ApiOperation(value = "get all Schedulers.") @ApiOperation(value = "get all PlannerAllToday objects.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = SchedulerBackendGetAll.class)}) @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
public CommonGetAllResponse getAll() { public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Scheduler, Scheduler.class); Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class);
var response = new CommonGetAllResponse(); var response = new CommonGetAllResponse();
response.fromEntity(all); response.fromEntity(all);
return response; return response;

View file

@ -8,7 +8,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.scheduler.Timetable; import ru.clearing.classes.statics.data.scheduler.Planner;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -17,21 +17,21 @@ import java.util.Collection;
import java.util.Map; import java.util.Map;
@Controller @Controller
@RequestMapping("/schedule/timetables") @RequestMapping("/schedule/planners")
public class TimeTableController { public class PlannerController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public TimeTableController(IStateLoader stateLoader) { public PlannerController(IStateLoader stateLoader) {
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }
@ApiOperation(value = "get all Timetables.") @ApiOperation(value = "get all Planners.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
public CommonGetAllResponse getAll() { public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Timetable, Timetable.class); Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Planner, Planner.class);
var response = new CommonGetAllResponse(); var response = new CommonGetAllResponse();
response.fromEntity(all); response.fromEntity(all);
return response; return response;

View file

@ -8,7 +8,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.scheduler.TradingCalendar; import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.backendapi.service.IStateLoader;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
@ -17,21 +17,21 @@ import java.util.Collection;
import java.util.Map; import java.util.Map;
@Controller @Controller
@RequestMapping("/schedule/trading-calendars") @RequestMapping("/schedule/planner-templates")
public class TradingCalendarController { public class PlannerTemplateController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public TradingCalendarController(IStateLoader stateLoader) { public PlannerTemplateController(IStateLoader stateLoader) {
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }
@ApiOperation(value = "get all trading calendars.") @ApiOperation(value = "get all PlannerTemplates.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET)
@ResponseBody @ResponseBody
public CommonGetAllResponse getAll() { public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_TradingCalendar, TradingCalendar.class); Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class);
var response = new CommonGetAllResponse(); var response = new CommonGetAllResponse();
response.fromEntity(all); response.fromEntity(all);
return response; return response;

View file

@ -6,14 +6,14 @@ import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType; import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.TaskRunnerCommandRequest; import ru.spcex.clearing.platform.messaging.domain.cud.schedule.LauncherCommandRequest;
import ru.spcex.platform.utils.enumeration.EnumMessage; import ru.spcex.platform.utils.enumeration.EnumMessage;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
public class TaskRunnerNew implements IAction<TaskRunnerCommandRequest> { public class LauncherNew implements IAction<LauncherCommandRequest> {
@ApiModelProperty(value = "Идентификатор единоличного исполнительного органа", example = "ABCD") @ApiModelProperty(value = "Идентификатор единоличного исполнительного органа", example = "ABCD")
@JsonProperty @JsonProperty
private String task; private String task;
@ -22,8 +22,8 @@ public class TaskRunnerNew implements IAction<TaskRunnerCommandRequest> {
private Long userId; private Long userId;
@Override @Override
public TaskRunnerCommandRequest toRequest() { public LauncherCommandRequest toRequest() {
TaskRunnerCommandRequest taskRunnerCommandRequest = new TaskRunnerCommandRequest(); LauncherCommandRequest taskRunnerCommandRequest = new LauncherCommandRequest();
taskRunnerCommandRequest.setTaskName(task); taskRunnerCommandRequest.setTaskName(task);
taskRunnerCommandRequest.setUserId(userId); taskRunnerCommandRequest.setUserId(userId);
return taskRunnerCommandRequest; return taskRunnerCommandRequest;

View file

@ -3,7 +3,7 @@ package ru.spcex.clearing.backendapi.controller.response.entity.schedule;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.clearing.classes.statics.data.scheduler.TradingCalendar; import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import java.util.ArrayList; import java.util.ArrayList;
@ -11,13 +11,13 @@ import java.util.Collection;
import java.util.List; import java.util.List;
@ApiModel(description = "Ответ при получении объектов TradingCalendar.") @ApiModel(description = "Ответ при получении объектов TradingCalendar.")
public class TradingCalendarBackendGetAll extends BasicSpcexResponse { public class ClearingCalendarBackendGetAll extends BasicSpcexResponse {
@JsonProperty @JsonProperty
@ApiModelProperty(value = "Полезная нагрузка") @ApiModelProperty(value = "Полезная нагрузка")
private TradingCalendarBackendPayload payload = new TradingCalendarBackendPayload(); private ClearingCalendarBackendPayload payload = new ClearingCalendarBackendPayload();
private static class TradingCalendarBackendPayload { private static class ClearingCalendarBackendPayload {
private List<TradingCalendarBackendGetFields> items = new ArrayList<>(); private List<TradingCalendarBackendGetFields> items = new ArrayList<>();
public List<TradingCalendarBackendGetFields> getItems() { public List<TradingCalendarBackendGetFields> getItems() {
@ -29,15 +29,15 @@ public class TradingCalendarBackendGetAll extends BasicSpcexResponse {
} }
} }
public TradingCalendarBackendPayload getPayload() { public ClearingCalendarBackendPayload getPayload() {
return payload; return payload;
} }
public void setPayload(TradingCalendarBackendPayload payload) { public void setPayload(ClearingCalendarBackendPayload payload) {
this.payload = payload; this.payload = payload;
} }
public void fromEntity(Collection<TradingCalendar> tradingCalendars) { public void fromEntity(Collection<ClearingCalendar> tradingCalendars) {
var payload = this.getPayload(); var payload = this.getPayload();
for (var tradingCalendar : tradingCalendars) { for (var tradingCalendar : tradingCalendars) {
var singleItem = new TradingCalendarBackendGetFields(); var singleItem = new TradingCalendarBackendGetFields();

View file

@ -3,7 +3,7 @@ package ru.spcex.clearing.backendapi.controller.response.entity.schedule;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.clearing.classes.statics.data.scheduler.TaskRunner; import ru.clearing.classes.statics.data.scheduler.Launcher;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import java.util.ArrayList; import java.util.ArrayList;
@ -11,36 +11,36 @@ import java.util.Collection;
import java.util.List; import java.util.List;
@ApiModel(description = "Ответ при получении объектов TaskRunner.") @ApiModel(description = "Ответ при получении объектов TaskRunner.")
public class TaskRunnerBackendGetAll extends BasicSpcexResponse { public class LauncherBackendGetAll extends BasicSpcexResponse {
@JsonProperty @JsonProperty
@ApiModelProperty(value = "Полезная нагрузка") @ApiModelProperty(value = "Полезная нагрузка")
private TaskRunnerBackendPayload payload = new TaskRunnerBackendPayload(); private LauncherBackendPayload payload = new LauncherBackendPayload();
private static class TaskRunnerBackendPayload { private static class LauncherBackendPayload {
private List<TaskRunnerBackendGetFields> items = new ArrayList<>(); private List<LauncherBackendGetFields> items = new ArrayList<>();
public List<TaskRunnerBackendGetFields> getItems() { public List<LauncherBackendGetFields> getItems() {
return items; return items;
} }
public void setItems(List<TaskRunnerBackendGetFields> items) { public void setItems(List<LauncherBackendGetFields> items) {
this.items = items; this.items = items;
} }
} }
public TaskRunnerBackendPayload getPayload() { public LauncherBackendPayload getPayload() {
return payload; return payload;
} }
public void setPayload(TaskRunnerBackendPayload payload) { public void setPayload(LauncherBackendPayload payload) {
this.payload = payload; this.payload = payload;
} }
public void fromEntity(Collection<TaskRunner> taskRunners) { public void fromEntity(Collection<Launcher> taskRunners) {
var payload = this.getPayload(); var payload = this.getPayload();
for (var taskRunner : taskRunners) { for (var taskRunner : taskRunners) {
var singleItem = new TaskRunnerBackendGetFields(); var singleItem = new LauncherBackendGetFields();
singleItem.setId(taskRunner.getId()); singleItem.setId(taskRunner.getId());
singleItem.setSenderId(taskRunner.getSenderId()); singleItem.setSenderId(taskRunner.getSenderId());
singleItem.setTask(taskRunner.getTask()); singleItem.setTask(taskRunner.getTask());

View file

@ -6,7 +6,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSeriali
import java.time.Instant; import java.time.Instant;
public class TaskRunnerBackendGetFields { public class LauncherBackendGetFields {
@JsonProperty @JsonProperty
private Long id; private Long id;
@JsonProperty @JsonProperty

View file

@ -3,7 +3,7 @@ package ru.spcex.clearing.backendapi.controller.response.entity.schedule;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.clearing.classes.statics.data.scheduler.SchedulerAllToday; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import java.util.ArrayList; import java.util.ArrayList;
@ -37,7 +37,7 @@ public class SchedulerAllTodayBackendGetAll extends BasicSpcexResponse {
this.payload = payload; this.payload = payload;
} }
public void fromEntity(Collection<SchedulerAllToday> schedulersAllToday) { public void fromEntity(Collection<PlannerAllToday> schedulersAllToday) {
var payload = this.getPayload(); var payload = this.getPayload();
for (var schedulerAllToday : schedulersAllToday) { for (var schedulerAllToday : schedulersAllToday) {
var singleItem = new SchedulerAllTodayBackendGetFields(); var singleItem = new SchedulerAllTodayBackendGetFields();

View file

@ -3,7 +3,7 @@ package ru.spcex.clearing.backendapi.controller.response.entity.schedule;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.clearing.classes.statics.data.scheduler.Scheduler; import ru.clearing.classes.statics.data.scheduler.Planner;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import java.util.ArrayList; import java.util.ArrayList;
@ -37,7 +37,7 @@ public class SchedulerBackendGetAll extends BasicSpcexResponse {
this.payload = payload; this.payload = payload;
} }
public void fromEntity(Collection<Scheduler> schedulers) { public void fromEntity(Collection<Planner> schedulers) {
var payload = this.getPayload(); var payload = this.getPayload();
for (var scheduler : schedulers) { for (var scheduler : schedulers) {
var singleItem = new SchedulerBackendGetFields(); var singleItem = new SchedulerBackendGetFields();

View file

@ -3,7 +3,7 @@ package ru.spcex.clearing.backendapi.controller.response.entity.schedule;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import ru.clearing.classes.statics.data.scheduler.Timetable; import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse; import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
import java.util.ArrayList; import java.util.ArrayList;
@ -37,7 +37,7 @@ public class TimetableBackendGetAll extends BasicSpcexResponse {
this.payload = payload; this.payload = payload;
} }
public void fromEntity(Collection<Timetable> timeTables) { public void fromEntity(Collection<PlannerTemplate> timeTables) {
var payload = this.getPayload(); var payload = this.getPayload();
for (var timetable : timeTables) { for (var timetable : timeTables) {
var singleItem = new TimetableBackendGetFields(); var singleItem = new TimetableBackendGetFields();

View file

@ -3,10 +3,10 @@ package ru.spcex.clearing.backendapi.service.validation;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.platform.dictionary.AbstractDictionary; import ru.clearing.platform.dictionary.AbstractDictionary;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.TaskRunnerNew; import ru.spcex.clearing.backendapi.controller.request.cud.schedule.LauncherNew;
import ru.spcex.clearing.backendapi.domain.actions.IAction; import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.service.validation.rules.LauncherNewValidationRule;
import ru.spcex.clearing.backendapi.service.validation.rules.PresentById; import ru.spcex.clearing.backendapi.service.validation.rules.PresentById;
import ru.spcex.clearing.backendapi.service.validation.rules.TaskRunnerNewValidationRule;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts; import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.SpcexObjectBase;
@ -40,7 +40,7 @@ public class ActionValidationProvider implements InitializingBean {
validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity)); validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_UPDATE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity));
validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity)); validators.put(Consts.DESTINATION_MONEY_MARKET_SECURITY_DELETE, idPresent(IMDGDistributedNames.Map_MoneyMarketSecurity));
validators.put(Consts.TASK_RUNNER_NEW, taskRunnerNew()); validators.put(Consts.LAUNCHER_NEW, taskRunnerNew());
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -61,13 +61,13 @@ public class ActionValidationProvider implements InitializingBean {
}; };
} }
private Function<TaskRunnerNew, IValidator> taskRunnerNew() { private Function<LauncherNew, IValidator> taskRunnerNew() {
return taskRunnerNew -> { return taskRunnerNew -> {
ImdgValidationContext<TaskRunnerNew> ctx = new ImdgValidationContext<>(); ImdgValidationContext<LauncherNew> ctx = new ImdgValidationContext<>();
ctx.setValidatedObject(taskRunnerNew); ctx.setValidatedObject(taskRunnerNew);
ctx.addImdg(IMDGDistributedNames.Map_TaskDictionary, getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class)); ctx.addImdg(IMDGDistributedNames.Map_TaskDictionary, getImdg(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class));
ValidatorImpl<ImdgValidationContext<TaskRunnerNew>> iValidator = new ValidatorImpl<>(ctx); ValidatorImpl<ImdgValidationContext<LauncherNew>> iValidator = new ValidatorImpl<>(ctx);
iValidator.addRule(TaskRunnerNewValidationRule.knownTaskDictionary); iValidator.addRule(LauncherNewValidationRule.knownTaskDictionary);
return iValidator; return iValidator;
}; };
} }

View file

@ -1,7 +1,7 @@
package ru.spcex.clearing.backendapi.service.validation.rules; package ru.spcex.clearing.backendapi.service.validation.rules;
import ru.clearing.platform.dictionary.AbstractDictionary; import ru.clearing.platform.dictionary.AbstractDictionary;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.TaskRunnerNew; import ru.spcex.clearing.backendapi.controller.request.cud.schedule.LauncherNew;
import ru.spcex.clearing.backendapi.errors.BackEndError; import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
@ -12,11 +12,11 @@ import ru.spcex.platform.utils.validation.IValidationRule;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
public enum TaskRunnerNewValidationRule implements IValidationRule<ImdgValidationContext<TaskRunnerNew>> { public enum LauncherNewValidationRule implements IValidationRule<ImdgValidationContext<LauncherNew>> {
knownTaskDictionary() { knownTaskDictionary() {
@Override @Override
public Optional<EnumMessage> validate(ImdgValidationContext<TaskRunnerNew> context) { public Optional<EnumMessage> validate(ImdgValidationContext<LauncherNew> context) {
TaskRunnerNew validatedObject = context.getValidatedObject(); LauncherNew validatedObject = context.getValidatedObject();
Imdg<AbstractDictionary> taskDictionaryImdg = context.obtainMap(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class); Imdg<AbstractDictionary> taskDictionaryImdg = context.obtainMap(IMDGDistributedNames.Map_TaskDictionary, AbstractDictionary.class);
AbstractDictionary taskEnum = taskDictionaryImdg.getSingleObjectByFieldValues(Map.of("code", validatedObject.getTask())); AbstractDictionary taskEnum = taskDictionaryImdg.getSingleObjectByFieldValues(Map.of("code", validatedObject.getTask()));
if (taskEnum == null) { if (taskEnum == null) {
@ -28,6 +28,6 @@ public enum TaskRunnerNewValidationRule implements IValidationRule<ImdgValidatio
@Override @Override
public String ruleName() { public String ruleName() {
return "TaskRunnerNewValidationRule." + name(); return "LauncherNewValidationRule." + name();
} }
} }

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<meta version="0.0.0.0"> <meta version="1.2.0.0">
<enums> <enums>
<courierType id="1" code="STHS" name="ЭДО с Расчетной Организацией"/> <courierType id="1" code="STHS" name="ЭДО с Расчетной Организацией"/>
<termType id="1" code="S" name="Срочный"/> <termType id="1" code="S" name="Срочный"/>
@ -13,19 +13,24 @@
<task id="6" code="ADBC" name="Подтверждение дозачисления/списания остатков"/> <task id="6" code="ADBC" name="Подтверждение дозачисления/списания остатков"/>
<task id="7" code="CORD" name="Формирование сводного платежного поручения"/> <task id="7" code="CORD" name="Формирование сводного платежного поручения"/>
<task id="8" code="CORC" name="Получение подтверждения переводов"/> <task id="8" code="CORC" name="Получение подтверждения переводов"/>
<task id="25" code="GTRD" name="Получение сделок из Торговой системы"/>
<task id="34" code="GBLD" name="Поступление средств"/> <task id="34" code="GBLD" name="Поступление средств"/>
<task id="35" code="GBDC" name="Подтверждение поступления средств"/> <task id="35" code="GBDC" name="Подтверждение поступления средств"/>
<task id="36" code="GREG" name="Формирование реестров"/>
<taskStatus id="1" code="ACTV" name="Активна"/> <taskStatus id="1" code="ACTV" name="Активна"/>
<taskStatus id="2" code="BLKD" name="Не активна"/> <taskStatus id="2" code="BLKD" name="Не активна"/>
<taskStatus id="3" code="CNCL" name="Отмена расписания"/> <taskStatus id="3" code="CNCL" name="Отмена расписания"/>
<tradingStatus id="1" code="TRAD" name="Торговый"/> <dayStatus id="1" code="BDAY" name="Рабочий"/>
<tradingStatus id="2" code="NTRD" name="Неторговый"/> <dayStatus id="2" code="DOFF" name="Нерабочий"/>
<!--transactionStatus id="1" code="STLD" name="Рассчитан"/> <transactionStatus id="1" code="STLD" name="Рассчитан"/>
<transactionStatus id="2" code="SENT" name="Отправлен в ПРЦ"/> <transactionStatus id="2" code="SENT" name="Отправлен в ПРЦ"/>
<transactionStatus id="3" code="OK" name="Обработан ПРЦ"/> <transactionStatus id="3" code="OK" name="Обработан ПРЦ"/>
<transactionStatus id="4" code="FAIL" name="Ошибка ПРЦ"/--> <transactionStatus id="4" code="FAIL" name="Ошибка ПРЦ"/>
<source id="1" code="TIMT" name="Расписание"/> <transactionStatus id="5" code="CHER" name="Ошибка КС"/>
<source id="2" code="SCHD" name="Планировщик"/> <transactionStatus id="6" code="NSNT" name="Не отправлен в ПРЦ"/>
<parent id="1" code="TMPL" name="Шаблон"/>
<parent id="2" code="PLNR" name="Расписание"/>
<parent id="3" code="CLND" name="Календарь"/>
<chargeType id="1" code="PRCT" name="Процент"/> <chargeType id="1" code="PRCT" name="Процент"/>
<chargeDirection id="1" code="GET" name="Получить"/> <chargeDirection id="1" code="GET" name="Получить"/>
<chargeDirection id="2" code="PAY" name="Заплатить"/> <chargeDirection id="2" code="PAY" name="Заплатить"/>
@ -53,7 +58,7 @@
<serviceStatus id="3" code="SSPD" name="Приостановлен"/> <serviceStatus id="3" code="SSPD" name="Приостановлен"/>
<serviceStatus id="4" code="CLOS" name="Закрыт"/> <serviceStatus id="4" code="CLOS" name="Закрыт"/>
<serviceStatus id="5" code="ROPN" name="Возобновлен"/> <serviceStatus id="5" code="ROPN" name="Возобновлен"/>
<!--statementType id="1" code="FULL" name="Установка суммы"/--> <statementType id="1" code="FULL" name="Установка суммы"/>
<statementType id="2" code="INCR" name="Изменение суммы"/> <statementType id="2" code="INCR" name="Изменение суммы"/>
<operationType id="1" code="STMT" name="Расчетные операции"/> <operationType id="1" code="STMT" name="Расчетные операции"/>
<operationType id="2" code="TRAD" name="Торговые операции"/> <operationType id="2" code="TRAD" name="Торговые операции"/>
@ -151,129 +156,135 @@
<inOutSDfType id="1" code="0102" name="Входящий ДФ-01/Исходящий ДФ-02"/> <inOutSDfType id="1" code="0102" name="Входящий ДФ-01/Исходящий ДФ-02"/>
<inOutSDfType id="2" code="1617" name="Входящий ДФ-16/Исходящий ДФ-17"/> <inOutSDfType id="2" code="1617" name="Входящий ДФ-16/Исходящий ДФ-17"/>
<inOutSDfType id="3" code="0910" name="Входящий ДФ-09/Исходящий ДФ-10"/> <inOutSDfType id="3" code="0910" name="Входящий ДФ-09/Исходящий ДФ-10"/>
<!--sessionStatus id="1" code="ACTV" name="Сессия активна"/> <sessionStatus id="1" code="ACTV" name="Сессия активна"/>
<sessionStatus id="2" code="CLRN" name="Идет клиринг"/--> <sessionStatus id="2" code="CLRN" name="Идет клиринг"/>
<!--objectType id="1" code="STMT" name="STATEMENT"/--> <sessionStatus id="3" code="CLOS" name="Клиринг завершен"/>
<!--notificationStatus id="1" code="PEND" name="В ожидании"/> <objectType id="1" code="STMT" name="STATEMENT"/>
<notificationStatus id="1" code="PEND" name="В ожидании"/>
<notificationStatus id="2" code="CNCL" name="Отменено"/> <notificationStatus id="2" code="CNCL" name="Отменено"/>
<notificationStatus id="3" code="ACPT" name="Принято"/--> <notificationStatus id="3" code="ACPT" name="Принято"/>
<eventType id="1" code="CRET" name="Создание"/>
<eventType id="2" code="UPDT" name="Обновление"/>
<eventType id="3" code="DELT" name="Удаление"/>
<currencyCode id="643" code="RUB" name="Российский рубль"/> <currencyCode id="643" code="RUB" name="Российский рубль"/>
<!-- error code for securities_services --> <!-- error code for securities-services -->
<errorCode id="1000" code="1000" name="Общая ошибка модуля securities_services."/> <errorCode id="1000" code="SECR" name="Общая ошибка модуля securities-services."/>
<errorCode id="1001" code="1001" name="Нет прав на проведение данной операции."/> <errorCode id="1001" code="SECR" name="Нет прав на проведение данной операции."/>
<errorCode id="1002" code="1002" name="Не заданы обязательные поля."/> <errorCode id="1002" code="SECR" name="Не заданы обязательные поля."/>
<errorCode id="1003" code="1003" name="Запись с указанным идентификатором в справочнике %s не найдена."/> <errorCode id="1003" code="SECR" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="1004" code="1004" name="Неверное значение поля %s."/> <errorCode id="1004" code="SECR" name="Неверное значение поля %s."/>
<errorCode id="1005" code="1005" name="Такая запись уже существует."/> <errorCode id="1005" code="SECR" name="Такая запись уже существует."/>
<errorCode id="1006" code="1006" name="Запись не найдена."/> <errorCode id="1006" code="SECR" name="Запись не найдена."/>
<errorCode id="1007" code="1007" name="Пользователь не найден."/> <errorCode id="1007" code="SECR" name="Пользователь не найден."/>
<errorCode id="1008" code="1008" name="Пользователь неактивен."/> <errorCode id="1008" code="SECR" name="Пользователь неактивен."/>
<errorCode id="1010" code="1010" name="Такой Инструмент уже существует."/> <errorCode id="1010" code="SECR" name="Такой Инструмент уже существует."/>
<errorCode id="1011" code="1011" name="Инструмент не найден."/> <errorCode id="1011" code="SECR" name="Инструмент не найден."/>
<errorCode id="1012" code="1012" name="Инструмент неактивен."/> <errorCode id="1012" code="SECR" name="Инструмент неактивен."/>
<!-- error code for utility_service --> <!-- error code for utility-services -->
<errorCode id="2000" code="2000" name="Общая ошибка модуля utility_service"/> <errorCode id="2000" code="UTIL" name="Общая ошибка модуля utility-services."/>
<errorCode id="2001" code="2001" name="Нет прав на проведение данной операции."/> <errorCode id="2001" code="UTIL" name="Нет прав на проведение данной операции."/>
<errorCode id="2002" code="2002" name="Не заданы обязательные поля."/> <errorCode id="2002" code="UTIL" name="Не заданы обязательные поля."/>
<errorCode id="2003" code="2003" name="Запись с указанным идентификатором в справочнике %s не найдена."/> <errorCode id="2003" code="UTIL" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="2004" code="2004" name="Неверное значение поля %s."/> <errorCode id="2004" code="UTIL" name="Неверное значение поля %s."/>
<errorCode id="2005" code="2005" name="Такая запись уже существует."/> <errorCode id="2005" code="UTIL" name="Такая запись уже существует."/>
<errorCode id="2006" code="2006" name="Запись не найдена."/> <errorCode id="2006" code="UTIL" name="Запись не найдена."/>
<!-- error code for company_services --> <!-- error code for company-services -->
<errorCode id="3000" code="3000" name="Общая ошибка модуля company_services"/> <errorCode id="3000" code="CMPN" name="Общая ошибка модуля company-services."/>
<errorCode id="3001" code="3001" name="Нет прав на проведение данной операции."/> <errorCode id="3001" code="CMPN" name="Нет прав на проведение данной операции."/>
<errorCode id="3002" code="3002" name="Не заданы обязательные поля."/> <errorCode id="3002" code="CMPN" name="Не заданы обязательные поля."/>
<errorCode id="3003" code="3003" name="Запись с указанным идентификатором в справочнике %s не найдена."/> <errorCode id="3003" code="CMPN" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="3004" code="3004" name="Неверное значение поля %s."/> <errorCode id="3004" code="CMPN" name="Неверное значение поля %s."/>
<errorCode id="3005" code="3005" name="Такая запись уже существует."/> <errorCode id="3005" code="CMPN" name="Такая запись уже существует."/>
<errorCode id="3006" code="3006" name="Запись не найдена."/> <errorCode id="3006" code="CMPN" name="Запись не найдена."/>
<errorCode id="3010" code="3010" name="Такая Компания уже существует"/> <errorCode id="3010" code="CMPN" name="Такая Компания уже существует"/>
<errorCode id="3011" code="3011" name="Компания не найдена."/> <errorCode id="3011" code="CMPN" name="Компания не найдена."/>
<errorCode id="3012" code="3012" name="Компания неактивна."/> <errorCode id="3012" code="CMPN" name="Компания неактивна."/>
<errorCode id="3013" code="3013" name="Профиль Компании не найден."/> <errorCode id="3013" code="CMPN" name="Профиль Компании не найден."/>
<errorCode id="3014" code="3014" name="Реквизит Компании не найден."/> <errorCode id="3014" code="CMPN" name="Реквизит Компании не найден."/>
<errorCode id="3015" code="3015" name="Контакт Компании не найден."/> <errorCode id="3015" code="CMPN" name="Контакт Компании не найден."/>
<errorCode id="3016" code="3016" name="Категория Компании не найдена."/> <errorCode id="3016" code="CMPN" name="Категория Компании не найдена."/>
<errorCode id="3017" code="3017" name="Компании уже присвоена Категория %s."/> <errorCode id="3017" code="CMPN" name="Компании уже присвоена Категория %s."/>
<!-- error code for report_serivces --> <!-- error code for report-serivces -->
<errorCode id="4000" code="4000" name="Общая ошибка модуля report_serivces"/> <errorCode id="4000" code="RPRT" name="Общая ошибка модуля report-serivces."/>
<!-- == error code for processing accounts and balances == --> <!-- == error code for processing accounts and balances == -->
<!-- error code for account_services --> <!-- error code for account-services -->
<errorCode id="5000" code="5000" name="Общая ошибка модуля account_services"/> <errorCode id="5000" code="ACNT" name="Общая ошибка модуля account-services."/>
<errorCode id="5001" code="5001" name="Нет прав на проведение данной операции."/> <errorCode id="5001" code="ACNT" name="Нет прав на проведение данной операции."/>
<errorCode id="5002" code="5002" name="Не заданы обязательные поля."/> <errorCode id="5002" code="ACNT" name="Не заданы обязательные поля."/>
<errorCode id="5003" code="5003" name="Запись с указанным идентификатором в справочнике %s не найдена."/> <errorCode id="5003" code="ACNT" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="5004" code="5004" name="Неверное значение поля %s."/> <errorCode id="5004" code="ACNT" name="Неверное значение поля %s."/>
<errorCode id="5005" code="5005" name="Такая запись уже существует."/> <errorCode id="5005" code="ACNT" name="Такая запись уже существует."/>
<errorCode id="5006" code="5006" name="Запись не найдена."/> <errorCode id="5006" code="ACNT" name="Запись не найдена."/>
<errorCode id="5010" code="5010" name="Счет %s уже существует."/> <errorCode id="5010" code="ACNT" name="Счет %s уже существует."/>
<errorCode id="5011" code="5011" name="Счет %s не найден."/> <errorCode id="5011" code="ACNT" name="Счет %s не найден."/>
<errorCode id="5012" code="5012" name="Счет %s неактивен."/> <errorCode id="5012" code="ACNT" name="Счет %s неактивен."/>
<errorCode id="5013" code="5013" name="Компания не найдена."/> <errorCode id="5013" code="ACNT" name="Компания не найдена."/>
<errorCode id="5014" code="5014" name="Компания неактивна."/> <errorCode id="5014" code="ACNT" name="Компания неактивна."/>
<!-- error code for balance_services --> <!-- error code for balance-services -->
<errorCode id="5200" code="5200" name="Общая ошибка модуля balance_services"/> <errorCode id="5200" code="BLNC" name="Общая ошибка модуля balance-services."/>
<errorCode id="5210" code="5210" name="Клиринговая сессия неактивна."/> <errorCode id="5210" code="BLNC" name="Клиринговая сессия неактивна."/>
<errorCode id="5211" code="5211" name="Компания не найдена."/> <errorCode id="5211" code="BLNC" name="Компания не найдена."/>
<errorCode id="5212" code="5212" name="Компания неактивна."/> <errorCode id="5212" code="BLNC" name="Компания неактивна."/>
<errorCode id="5213" code="5213" name="Валюта не найдена."/> <errorCode id="5213" code="BLNC" name="Валюта не найдена."/>
<errorCode id="5214" code="5214" name="Загрузка остатков возможна только на текущую дату."/> <errorCode id="5214" code="BLNC" name="Загрузка остатков возможна только на текущую дату."/>
<errorCode id="5215" code="5215" name="Загрузка остатков возможна только по рынку МКР."/> <errorCode id="5215" code="BLNC" name="Загрузка остатков возможна только по рынку МКР."/>
<errorCode id="5216" code="5216" name="Загрузка остатков возможна только по собственным счетам."/> <errorCode id="5216" code="BLNC" name="Загрузка остатков возможна только по собственным счетам."/>
<errorCode id="5217" code="5217" name="Счет %s не найден."/> <errorCode id="5217" code="BLNC" name="Счет %s не найден."/>
<errorCode id="5218" code="5218" name="Счет %s неактивен."/> <errorCode id="5218" code="BLNC" name="Счет %s неактивен."/>
<errorCode id="5219" code="5219" name="Дозачисления/списания возможны только по рынку МКР."/> <errorCode id="5219" code="BLNC" name="Дозачисления/списания возможны только по рынку МКР."/>
<errorCode id="5220" code="5220" name="Сумма списания превышает сумму средств на счете."/> <errorCode id="5220" code="BLNC" name="Сумма списания превышает сумму средств на счете."/>
<errorCode id="5221" code="5221" name="Поступление средств возможно только по рынку МКР."/> <errorCode id="5221" code="BLNC" name="Поступление средств возможно только по рынку МКР."/>
<errorCode id="5222" code="5222" name="Сумма списания превышает сумму средств на счете."/> <errorCode id="5222" code="BLNC" name="Сумма списания превышает сумму средств на счете."/>
<!-- error code for проведение расчетов --> <!-- error code for clearing-services -->
<errorCode id="5400" code="5400" name="Общая ошибка модуля проведения расчетов"/> <errorCode id="5400" code="CLRN" name="Общая ошибка модуля clearing-services."/>
<!-- error code for dbf-loader --> <errorCode id="5401" code="CLRN" name="Нет прав на проведение данной операции."/>
<errorCode id="5600" code="5600" name="Общая ошибка модуля dbf-loader"/> <errorCode id="5402" code="CLRN" name="Не заданы обязательные поля."/>
<!-- error code for dbf-export --> <errorCode id="5403" code="CLRN" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="5800" code="5800" name="Общая ошибка модуля dbf-export"/> <errorCode id="5404" code="CLRN" name="Неверное значение поля %s."/>
<errorCode id="5405" code="CLRN" name="Такая запись уже существует."/>
<errorCode id="5406" code="CLRN" name="Запись не найдена."/>
<errorCode id="5407" code="CLRN" name="Пользователь не найден."/>
<errorCode id="5408" code="CLRN" name="Пользователь неактивен."/>
<errorCode id="5410" code="CLRN" name="Компания не найдена."/>
<errorCode id="5411" code="CLRN" name="Компания неактивна."/>
<errorCode id="5412" code="CLRN" name="У компании %s не сошлась сумма кредит-проводок."/>
<errorCode id="5413" code="CLRN" name="У компании %s не сошлась сумма дебет-проводок."/>
<!-- error code for dbf-importer -->
<errorCode id="5600" code="DBFI" name="Общая ошибка модуля dbf-importer."/>
<!-- error code for dbf-exporter -->
<errorCode id="5800" code="DBFE" name="Общая ошибка модуля dbf-exporter."/>
<!-- error code for api-lk-company --> <!-- error code for api-lk-company -->
<errorCode id="6000" code="6000" name="Общая ошибка модуля api-lk-company"/> <errorCode id="6000" code="APIC" name="Общая ошибка модуля api-lk-company."/>
<!-- error code for scheduler_service -->
<errorCode id="7000" code="7000" name="Общая ошибка модуля scheduler_service"/>
<errorCode id="7001" code="7001" name="Нет прав на проведение данной операции."/>
<errorCode id="7002" code="7002" name="Не заданы обязательные поля."/>
<errorCode id="7003" code="7003" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="7004" code="7004" name="Неверное значение поля %s."/>
<errorCode id="7005" code="7005" name="Такая запись уже существует."/>
<errorCode id="7006" code="7006" name="Запись не найдена."/>
<errorCode id="7010" code="7010" name="Невозможно добавить задачу на прошедшую дату."/>
<errorCode id="7011" code="7011" name="Невозможно добавить задачу на прошедшее время."/>
<errorCode id="7012" code="7012" name="Указанный в задаче нструмент не найден."/>
<errorCode id="7013" code="7013" name="Указанный инструмент неактивен."/>
<errorCode id="7014" code="7014" name="Указанная в задаче компания не найдена."/>
<errorCode id="7015" code="7015" name="Указанная компания неактивна."/>
<!-- error code for utility_service -->
<errorCode id="8000" code="8000" name="Общая ошибка модуля utility_service"/>
<errorCode id="8001" code="8001" name="Нет прав на проведение данной операции."/>
<errorCode id="8002" code="8002" name="Не заданы обязательные поля."/>
<errorCode id="8003" code="8003" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="8004" code="8004" name="Неверное значение поля %s."/>
<errorCode id="8005" code="8005" name="Такая запись уже существует."/>
<errorCode id="8006" code="8006" name="Запись не найдена."/>
<!-- error code for backend_api -->
<errorCode id="9000" code="9000" name="Ошибка проверки поля %s"/>
<errorCode id="9001" code="9001" name="Неопознанное значение json свойства %s"/>
<errorCode id="9002" code="9002" name="Не удалось обработать http сообщение"/>
<errorCode id="9003" code="9003" name="Keycloak роли содержат дубликаты"/>
<errorCode id="9004" code="9004" name="Не может обнаружитьт словарь %s"/>
<errorCode id="9005" code="9005" name="Не найдено ресурс %s"/>
<!-- error code for scheduler-services -->
<errorCode id="7000" code="SCHD" name="Общая ошибка модуля scheduler-services."/>
<errorCode id="7001" code="SCHD" name="Нет прав на проведение данной операции."/>
<errorCode id="7002" code="SCHD" name="Не заданы обязательные поля."/>
<errorCode id="7003" code="SCHD" name="Запись с указанным идентификатором в справочнике %s не найдена."/>
<errorCode id="7004" code="SCHD" name="Неверное значение поля %s."/>
<errorCode id="7005" code="SCHD" name="Такая запись уже существует."/>
<errorCode id="7006" code="SCHD" name="Запись не найдена."/>
<errorCode id="7010" code="SCHD" name="Невозможно добавить задачу на прошедшую дату."/>
<errorCode id="7011" code="SCHD" name="Невозможно добавить задачу на прошедшее время."/>
<errorCode id="7012" code="SCHD" name="Указанный в задаче нструмент не найден."/>
<errorCode id="7013" code="SCHD" name="Указанный инструмент неактивен."/>
<errorCode id="7014" code="SCHD" name="Указанная в задаче компания не найдена."/>
<errorCode id="7015" code="SCHD" name="Указанная компания неактивна."/>
<!-- error code for backend-api -->
<errorCode id="9000" code="BAPI" name="Ошибка проверки поля %s."/>
<errorCode id="9001" code="BAPI" name="Неопознанное значение json свойства %s."/>
<errorCode id="9002" code="BAPI" name="Не удалось обработать http сообщение."/>
<errorCode id="9003" code="BAPI" name="Keycloak роли содержат дубликаты."/>
<errorCode id="9004" code="BAPI" name="Не может обнаружитьт словарь %s."/>
<errorCode id="9005" code="BAPI" name="Не найдено ресурс %s."/>
</enums> </enums>
<objects> <objects>

View file

@ -39,7 +39,7 @@
<code name="Код" shortname="Код" type="12"/> <code name="Код" shortname="Код" type="12"/>
<name name="Статус" shortname="Статус" type="2" length="50"/> <name name="Статус" shortname="Статус" type="2" length="50"/>
</taskStatus> </taskStatus>
<dayStatus name="Справочник статусов дней" class="com.spicex.dictionary.DayStatusDictionary" table="day_status_dictionary"> <dayStatus name="Справочник статусов дней" class="ru.clearing.platform.dictionary.DayStatusDictionary" table="day_status_dictionary">
<id name="Идентификатор записи" shortname="ID" type="1"/> <id name="Идентификатор записи" shortname="ID" type="1"/>
<code name="Код" shortname="Код" type="12"/> <code name="Код" shortname="Код" type="12"/>
<name name="Статус дня" shortname="Статус" type="2" length="50"/> <name name="Статус дня" shortname="Статус" type="2" length="50"/>
@ -293,7 +293,7 @@
<errorCode type="1" name="Код ошибки" shortname="Код ошибки" searchable="true" sortable="true" link="errorCode" linkCode="code"/> <errorCode type="1" name="Код ошибки" shortname="Код ошибки" searchable="true" sortable="true" link="errorCode" linkCode="code"/>
<errorText type="12" name="Полный текст ошибки" shortname="Ошибка" searchable="true" sortable="true" link="errorText" linkCode="text"/> <errorText type="12" name="Полный текст ошибки" shortname="Ошибка" searchable="true" sortable="true" link="errorText" linkCode="text"/>
</userConnect> </userConnect>
<plannerTemplate name="Шаблон расписания операционного дня" class="ru.clearing.classes.statics.data.scheduler.Timetable" table="planner_template"> <plannerTemplate name="Шаблон расписания операционного дня" class="ru.clearing.classes.statics.data.scheduler.PlannerTemplate" table="planner_template">
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/> <id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/> <createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/> <updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
@ -317,7 +317,7 @@
</delete> </delete>
</actions> </actions>
</plannerTemplate> </plannerTemplate>
<clearingCalendar name="Рабочие и нерабочие дни" class="ru.clearing.classes.statics.data.scheduler.TradingCalendar" table="clearing_calendar"> <clearingCalendar name="Рабочие и нерабочие дни" class="ru.clearing.classes.statics.data.scheduler.ClearingCalendar" table="clearing_calendar">
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/> <id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/> <createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/> <updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
@ -341,7 +341,7 @@
</delete> </delete>
</actions> </actions>
</clearingCalendar> </clearingCalendar>
<planner name="Расписание" class="ru.clearing.classes.statics.data.scheduler.Scheduler" table="planner"> <planner name="Расписание" class="ru.clearing.classes.statics.data.scheduler.Planner" table="planner">
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/> <id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/> <createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/> <updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>
@ -374,7 +374,7 @@
</delete> </delete>
</actions> </actions>
</planner> </planner>
<plannerAllToday name="Расписание на текущий день" class="ru.clearing.classes.statics.data.scheduler.SchedulerAllToday" table="planner_all_today"> <plannerAllToday name="Расписание на текущий день" class="ru.clearing.classes.statics.data.scheduler.PlannerAllToday" table="planner_all_today">
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/> <id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/>
<task type="12" name="Идентификатор задачи" shortname="Задача" searchable="true" sortable="true" visible="true" link="task"/> <task type="12" name="Идентификатор задачи" shortname="Задача" searchable="true" sortable="true" visible="true" link="task"/>
<taskTime type="5" name="Время" shortname="Время" searchable="true" sortable="true" visible="true"/> <taskTime type="5" name="Время" shortname="Время" searchable="true" sortable="true" visible="true"/>
@ -385,7 +385,7 @@
<parent type="12" name="Источник записи расписания" shortname="Источник" searchable="true" sortable="true" link="parent"/> <parent type="12" name="Источник записи расписания" shortname="Источник" searchable="true" sortable="true" link="parent"/>
<parentId type="1" name="Идентификатор источника" shortname="ID" searchable="false" sortable="false"/> <parentId type="1" name="Идентификатор источника" shortname="ID" searchable="false" sortable="false"/>
</plannerAllToday> </plannerAllToday>
<launcher name="Запуск задачи" class="ru.clearing.classes.statics.data.scheduler.TaskRunner" table="launcher_request"> <launcher name="Запуск задачи" class="ru.clearing.classes.statics.data.scheduler.Launcher" table="launcher_request">
<id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/> <id type="1" name="Идентификатор" shortname="ID" searchable="true" sortable="true" visible="true"/>
<createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/> <createdAt field="created" type="4" name="Создано" shortname="Создано" searchable="true" sortable="true"/>
<updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/> <updatedAt field="updated" type="4" name="Изменено" shortname="Изменено" searchable="true" sortable="true"/>

View file

@ -12,7 +12,7 @@ import java.time.LocalTime;
* <p> * <p>
* DB table: ADMITTED_DEAL * DB table: ADMITTED_DEAL
**/ **/
public class AdmittedDeal extends BusinessObject { public class AdmittedDealRegister extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String companyFullName; private String companyFullName;

View file

@ -1,44 +1,44 @@
package ru.clearing.classes.statics.data.scheduler; package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import java.time.LocalDate; import java.time.LocalDate;
/** /**
* Торговые и неторговые дни * Торговые и неторговые дни
* <p> * <p>
* DB table: TRADING_CALENDAR * DB table: TRADING_CALENDAR
**/ **/
public class TradingCalendar extends BusinessObject { public class ClearingCalendar extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private LocalDate clearingDate; private LocalDate clearingDate;
private Long companyId; private Long companyId;
private String tradingStatus; private String tradingStatus;
public LocalDate getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(LocalDate value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }
public Long getCompanyId() { public Long getCompanyId() {
return companyId; return companyId;
} }
public void setCompanyId(Long value) { public void setCompanyId(Long value) {
this.companyId = value; this.companyId = value;
} }
public String getTradingStatus() { public String getTradingStatus() {
return tradingStatus; return tradingStatus;
} }
public void setTradingStatus(String value) { public void setTradingStatus(String value) {
this.tradingStatus = value; this.tradingStatus = value;
} }
} }

View file

@ -1,36 +1,33 @@
package ru.clearing.classes.statics.data.scheduler; package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import ru.spcex.platform.classes.base.SpcexObjectBase;
/**
import java.time.Instant; * Запуск задачи
* <p>
/** * DB table: TASK_RUNNER
* Запуск задачи **/
* <p> public class Launcher extends BusinessObject {
* DB table: TASK_RUNNER private static final long serialVersionUID = ConstSerializable.serialVersionUID;
**/
public class TaskRunner extends BusinessObject { private Long senderId;
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private String task;
private Long senderId; public Long getSenderId() {
private String task; return senderId;
}
public Long getSenderId() {
return senderId; public void setSenderId(Long value) {
} this.senderId = value;
}
public void setSenderId(Long value) {
this.senderId = value; public String getTask() {
} return task;
}
public String getTask() {
return task; public void setTask(String value) {
} this.task = value;
}
public void setTask(String value) {
this.task = value;
}
} }

View file

@ -1,73 +1,73 @@
package ru.clearing.classes.statics.data.scheduler; package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime; import java.time.LocalTime;
/** /**
* Расписание планировщика * Расписание планировщика
* <p> * <p>
* DB table: SCHEDULER * DB table: SCHEDULER
**/ **/
public class Scheduler extends BusinessObject { public class Planner extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String task; private String task;
private LocalTime taskTime; private LocalTime taskTime;
private LocalDate clearingDate; private LocalDate clearingDate;
private String market; private String market;
private String taskStatus; private String taskStatus;
private Long securityId; private Long securityId;
public String getTask() { public String getTask() {
return task; return task;
} }
public void setTask(String value) { public void setTask(String value) {
this.task = value; this.task = value;
} }
public LocalTime getTaskTime() { public LocalTime getTaskTime() {
return taskTime; return taskTime;
} }
public void setTaskTime(LocalTime value) { public void setTaskTime(LocalTime value) {
this.taskTime = value; this.taskTime = value;
} }
public LocalDate getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(LocalDate value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }
public String getMarket() { public String getMarket() {
return market; return market;
} }
public void setMarket(String value) { public void setMarket(String value) {
this.market = value; this.market = value;
} }
public String getTaskStatus() { public String getTaskStatus() {
return taskStatus; return taskStatus;
} }
public void setTaskStatus(String value) { public void setTaskStatus(String value) {
this.taskStatus = value; this.taskStatus = value;
} }
public Long getSecurityId() { public Long getSecurityId() {
return securityId; return securityId;
} }
public void setSecurityId(Long value) { public void setSecurityId(Long value) {
this.securityId = value; this.securityId = value;
} }
} }

View file

@ -1,90 +1,90 @@
package ru.clearing.classes.statics.data.scheduler; package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase; import ru.spcex.platform.classes.base.SpcexObjectBase;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime; import java.time.LocalTime;
/** /**
* Расписание на текущий день * Расписание на текущий день
* <p> * <p>
* DB table: SCHEDULER_ALL_TODAY * DB table: PLANNER_ALL_TODAY
**/ **/
public class SchedulerAllToday extends SpcexObjectBase { public class PlannerAllToday extends SpcexObjectBase {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String task; private String task;
private LocalTime taskTime; private LocalTime taskTime;
private LocalDate clearingDate; private LocalDate clearingDate;
private String market; private String market;
private String taskStatus; private String taskStatus;
private Long securityId; private Long securityId;
private String source; private String source;
private Long origId; private Long origId;
public String getTask() { public String getTask() {
return task; return task;
} }
public void setTask(String value) { public void setTask(String value) {
this.task = value; this.task = value;
} }
public LocalTime getTaskTime() { public LocalTime getTaskTime() {
return taskTime; return taskTime;
} }
public void setTaskTime(LocalTime value) { public void setTaskTime(LocalTime value) {
this.taskTime = value; this.taskTime = value;
} }
public LocalDate getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
} }
public void setClearingDate(LocalDate value) { public void setClearingDate(LocalDate value) {
this.clearingDate = value; this.clearingDate = value;
} }
public String getMarket() { public String getMarket() {
return market; return market;
} }
public void setMarket(String value) { public void setMarket(String value) {
this.market = value; this.market = value;
} }
public String getTaskStatus() { public String getTaskStatus() {
return taskStatus; return taskStatus;
} }
public void setTaskStatus(String value) { public void setTaskStatus(String value) {
this.taskStatus = value; this.taskStatus = value;
} }
public Long getSecurityId() { public Long getSecurityId() {
return securityId; return securityId;
} }
public void setSecurityId(Long value) { public void setSecurityId(Long value) {
this.securityId = value; this.securityId = value;
} }
public String getSource() { public String getSource() {
return source; return source;
} }
public void setSource(String value) { public void setSource(String value) {
this.source = value; this.source = value;
} }
public Long getOrigId() { public Long getOrigId() {
return origId; return origId;
} }
public void setOrigId(Long value) { public void setOrigId(Long value) {
this.origId = value; this.origId = value;
} }
} }

View file

@ -1,44 +1,44 @@
package ru.clearing.classes.statics.data.scheduler; package ru.clearing.classes.statics.data.scheduler;
import ru.clearing.classes.ConstSerializable; import ru.clearing.classes.ConstSerializable;
import ru.clearing.classes.objects.BusinessObject; import ru.clearing.classes.objects.BusinessObject;
import java.time.LocalTime; import java.time.LocalTime;
/** /**
* Постоянное расписание операционного дня * Постоянное расписание операционного дня
* <p> * <p>
* DB table: TIMETABLE * DB table: PLANNER_TEMPLATE
**/ **/
public class Timetable extends BusinessObject { public class PlannerTemplate extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;
private String task; private String task;
private LocalTime taskTime; private LocalTime taskTime;
private String taskStatus; private String taskStatus;
public String getTask() { public String getTask() {
return task; return task;
} }
public void setTask(String value) { public void setTask(String value) {
this.task = value; this.task = value;
} }
public LocalTime getTaskTime() { public LocalTime getTaskTime() {
return taskTime; return taskTime;
} }
public void setTaskTime(LocalTime value) { public void setTaskTime(LocalTime value) {
this.taskTime = value; this.taskTime = value;
} }
public String getTaskStatus() { public String getTaskStatus() {
return taskStatus; return taskStatus;
} }
public void setTaskStatus(String value) { public void setTaskStatus(String value) {
this.taskStatus = value; this.taskStatus = value;
} }
} }

View file

@ -3,8 +3,8 @@ package ru.spcex.clearing.error;
import ru.spcex.platform.utils.enumeration.IEnumId; import ru.spcex.platform.utils.enumeration.IEnumId;
public enum ClearingError implements IEnumId { public enum ClearingError implements IEnumId {
CompanyCreditCheck(10012L), CompanyCreditCheck(5412L),
CompanyDebitCheck(10013L), CompanyDebitCheck(5413L),
; ;
private final Long id; private final Long id;

View file

@ -1,11 +1,11 @@
package ru.clearing.platform.dictionary; package ru.clearing.platform.dictionary;
/** /**
* Справочник торговых статусов * Справочник торговых статусов
* *
* Dictionary DB table: TRADING_STATUS_DICTIONARY * Dictionary DB table: TRADING_STATUS_DICTIONARY
**/ **/
public class TradingStatusDictionary extends AbstractDictionary { public class DayStatusDictionary extends AbstractDictionary {
private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID;
} }

View file

@ -1,11 +1,11 @@
package ru.clearing.platform.dictionary; package ru.clearing.platform.dictionary;
/** /**
* Справочник источников * Справочник источников
* *
* Dictionary DB table: SOURCE_DICTIONARY * Dictionary DB table: SOURCE_DICTIONARY
**/ **/
public class SourceDictionary extends AbstractDictionary { public class ParentDictionary extends AbstractDictionary {
private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID; private static final long serialVersionUID = ConstDictionarySerializable.serialVersionUID;
} }

View file

@ -1,62 +1,62 @@
package ru.spcex.clearing.imdg.businessobject; package ru.spcex.clearing.imdg.businessobject;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.scheduler.TradingCalendar; import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@Component @Component
public class TradingCalendarMapStore extends TemplateMapStore<TradingCalendar> { public class ClearingCalendarMapStore extends TemplateMapStore<ClearingCalendar> {
public TradingCalendarMapStore(JdbcTemplate jdbcTemplate) { public ClearingCalendarMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate); super(jdbcTemplate);
} }
@Override @Override
public String getMapName() { public String getMapName() {
return IMDGDistributedNames.Map_TradingCalendar; return IMDGDistributedNames.Map_ClearingCalendar;
} }
@Override @Override
public String getTableName() { public String getTableName() {
return "TRADING_CALENDAR"; return "CLEARING_CALENDAR";
} }
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "COMPANY_ID", "TRADING_STATUS" "ID", "CREATED_AT", "UPDATED_AT", "CLEARING_DATE", "COMPANY_ID", "TRADING_STATUS"
}; };
} }
@Override @Override
public TradingCalendar objectReader(ResultSet resultSet) throws SQLException { public ClearingCalendar objectReader(ResultSet resultSet) throws SQLException {
TradingCalendar object = new TradingCalendar(); ClearingCalendar object = new ClearingCalendar();
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE")); object.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class));
object.setTradingStatus(resultSet.getObject("TRADING_STATUS", String.class)); object.setTradingStatus(resultSet.getObject("TRADING_STATUS", String.class));
return object; return object;
} }
@Override @Override
public Object[] objectToField(TradingCalendar object) { public Object[] objectToField(ClearingCalendar object) {
Object[] args = new Object[]{ Object[] args = new Object[]{
object.getId(), object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getCompanyId(), object.getCompanyId(),
object.getTradingStatus() object.getTradingStatus()
}; };
return args; return args;
} }
} }

View file

@ -1,60 +1,60 @@
package ru.spcex.clearing.imdg.businessobject; package ru.spcex.clearing.imdg.businessobject;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.scheduler.TaskRunner; import ru.clearing.classes.statics.data.scheduler.Launcher;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@Component @Component
public class TaskRunnerMapStore extends TemplateMapStore<TaskRunner> { public class LauncherMapStore extends TemplateMapStore<Launcher> {
public TaskRunnerMapStore(JdbcTemplate jdbcTemplate) { public LauncherMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate); super(jdbcTemplate);
} }
@Override @Override
public String getMapName() { public String getMapName() {
return IMDGDistributedNames.Map_TaskRunner; return IMDGDistributedNames.Map_Launcher;
} }
@Override @Override
public String getTableName() { public String getTableName() {
return "TASK_RUNNER"; return "LAUNCHER";
} }
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "SENDER_ID", "TASK" "ID", "CREATED_AT", "UPDATED_AT", "SENDER_ID", "TASK"
}; };
} }
@Override @Override
public TaskRunner objectReader(ResultSet resultSet) throws SQLException { public Launcher objectReader(ResultSet resultSet) throws SQLException {
TaskRunner object = new TaskRunner(); Launcher object = new Launcher();
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setSenderId(resultSet.getObject("SENDER_ID", Long.class)); object.setSenderId(resultSet.getObject("SENDER_ID", Long.class));
object.setTask(resultSet.getObject("TASK", String.class)); object.setTask(resultSet.getObject("TASK", String.class));
return object; return object;
} }
@Override @Override
public Object[] objectToField(TaskRunner object) { public Object[] objectToField(Launcher object) {
Object[] args = new Object[]{ Object[] args = new Object[]{
object.getId(), object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
object.getSenderId(), object.getSenderId(),
object.getTask() object.getTask()
}; };
return args; return args;
} }
} }

View file

@ -1,68 +1,68 @@
package ru.spcex.clearing.imdg.businessobject; package ru.spcex.clearing.imdg.businessobject;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.scheduler.Scheduler; import ru.clearing.classes.statics.data.scheduler.Planner;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@Component @Component
public class SchedulerMapStore extends TemplateMapStore<Scheduler> { public class PlannerMapStore extends TemplateMapStore<Planner> {
public SchedulerMapStore(JdbcTemplate jdbcTemplate) { public PlannerMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate); super(jdbcTemplate);
} }
@Override @Override
public String getMapName() { public String getMapName() {
return IMDGDistributedNames.Map_Scheduler; return IMDGDistributedNames.Map_Planner;
} }
@Override @Override
public String getTableName() { public String getTableName() {
return "SCHEDULER"; return "PLANNER";
} }
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "SECURITY_ID" "ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "SECURITY_ID"
}; };
} }
@Override @Override
public Scheduler objectReader(ResultSet resultSet) throws SQLException { public Planner objectReader(ResultSet resultSet) throws SQLException {
Scheduler object = new Scheduler(); Planner object = new Planner();
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setTask(resultSet.getObject("TASK", String.class)); 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.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setMarket(resultSet.getObject("MARKET", String.class)); object.setMarket(resultSet.getObject("MARKET", String.class));
object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class));
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
return object; return object;
} }
@Override @Override
public Object[] objectToField(Scheduler object) { public Object[] objectToField(Planner object) {
Object[] args = new Object[]{ Object[] args = new Object[]{
object.getId(), object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
object.getTask(), object.getTask(),
TimeUtil.toDateFromLocalTime(object.getTaskTime()), TimeUtil.toDateFromLocalTime(object.getTaskTime()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getMarket(), object.getMarket(),
object.getTaskStatus(), object.getTaskStatus(),
object.getSecurityId() object.getSecurityId()
}; };
return args; return args;
} }
} }

View file

@ -1,62 +1,62 @@
package ru.spcex.clearing.imdg.businessobject; package ru.spcex.clearing.imdg.businessobject;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.scheduler.Timetable; import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@Component @Component
public class TimetableMapStore extends TemplateMapStore<Timetable> { public class PlannerTemplateMapStore extends TemplateMapStore<PlannerTemplate> {
public TimetableMapStore(JdbcTemplate jdbcTemplate) { public PlannerTemplateMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate); super(jdbcTemplate);
} }
@Override @Override
public String getMapName() { public String getMapName() {
return IMDGDistributedNames.Map_Timetable; return IMDGDistributedNames.Map_PlannerTemplate;
} }
@Override @Override
public String getTableName() { public String getTableName() {
return "TIMETABLE"; return "PLANNER_TEMPLATE";
} }
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "TASK_STATUS" "ID", "CREATED_AT", "UPDATED_AT", "TASK", "TASK_TIME", "TASK_STATUS"
}; };
} }
@Override @Override
public Timetable objectReader(ResultSet resultSet) throws SQLException { public PlannerTemplate objectReader(ResultSet resultSet) throws SQLException {
Timetable object = new Timetable(); PlannerTemplate object = new PlannerTemplate();
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT")); object.setCreated(getInstantFromTimestamp(resultSet, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT")); object.setUpdated(getInstantFromTimestamp(resultSet, "UPDATED_AT"));
object.setTask(resultSet.getObject("TASK", String.class)); object.setTask(resultSet.getObject("TASK", String.class));
object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME")); object.setTaskTime(getLocalTimeFromSqlTime(resultSet, "TASK_TIME"));
object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class));
return object; return object;
} }
@Override @Override
public Object[] objectToField(Timetable object) { public Object[] objectToField(PlannerTemplate object) {
Object[] args = new Object[]{ Object[] args = new Object[]{
object.getId(), object.getId(),
TimeUtil.toDateFromInstant(object.getCreated()), TimeUtil.toDateFromInstant(object.getCreated()),
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
object.getTask(), object.getTask(),
TimeUtil.toDateFromLocalTime(object.getTaskTime()), TimeUtil.toDateFromLocalTime(object.getTaskTime()),
object.getTaskStatus() object.getTaskStatus()
}; };
return args; return args;
} }
} }

View file

@ -0,0 +1,31 @@
package ru.spcex.clearing.imdg.dictionary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.platform.dictionary.DayStatusDictionary;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.DictionaryTMapStore;
@Component
public class DayStatusDictionaryMapStore extends DictionaryTMapStore<DayStatusDictionary> {
public DayStatusDictionaryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_DayStatusDictionary;
}
@Override
public String getTableName() {
return "DAY_STATUS_DICTIONARY";
}
@Override
public DayStatusDictionary getDictionaryObject() {
return new DayStatusDictionary();
}
}

View file

@ -1,31 +1,31 @@
package ru.spcex.clearing.imdg.dictionary; package ru.spcex.clearing.imdg.dictionary;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.platform.dictionary.SourceDictionary; import ru.clearing.platform.dictionary.ParentDictionary;
import ru.spcex.clearing.imdg.base.DictionaryTMapStore; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.base.DictionaryTMapStore;
@Component @Component
public class SourceDictionaryMapStore extends DictionaryTMapStore<SourceDictionary> { public class ParentDictionaryMapStore extends DictionaryTMapStore<ParentDictionary> {
public SourceDictionaryMapStore(JdbcTemplate jdbcTemplate) { public ParentDictionaryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate); super(jdbcTemplate);
} }
@Override @Override
public String getMapName() { public String getMapName() {
return IMDGDistributedNames.Map_SourceDictionary; return IMDGDistributedNames.Map_ParentDictionary;
} }
@Override @Override
public String getTableName() { public String getTableName() {
return "SOURCE_DICTIONARY"; return "PARENT_DICTIONARY";
} }
@Override @Override
public SourceDictionary getDictionaryObject() { public ParentDictionary getDictionaryObject() {
return new SourceDictionary(); return new ParentDictionary();
} }
} }

View file

@ -1,31 +0,0 @@
package ru.spcex.clearing.imdg.dictionary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import ru.clearing.platform.dictionary.TradingStatusDictionary;
import ru.spcex.clearing.imdg.base.DictionaryTMapStore;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
@Component
public class TradingStatusDictionaryMapStore extends DictionaryTMapStore<TradingStatusDictionary> {
public TradingStatusDictionaryMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate);
}
@Override
public String getMapName() {
return IMDGDistributedNames.Map_TradingStatusDictionary;
}
@Override
public String getTableName() {
return "TRADING_STATUS_DICTIONARY";
}
@Override
public TradingStatusDictionary getDictionaryObject() {
return new TradingStatusDictionary();
}
}

View file

@ -44,7 +44,7 @@ public class PaymentInstructionMapStore extends TemplateMapStore<PaymentInstruct
paymentInstruction.setPayeeBIC(resultSet.getString("payee_b_i_c")); paymentInstruction.setPayeeBIC(resultSet.getString("payee_b_i_c"));
paymentInstruction.setAddresseeBankName(resultSet.getString("addressee_bank_name")); paymentInstruction.setAddresseeBankName(resultSet.getString("addressee_bank_name"));
paymentInstruction.setPaymentDate(getInstantFromTimestamp(resultSet, "payment_date")); paymentInstruction.setPaymentDate(getInstantFromTimestamp(resultSet, "payment_date"));
paymentInstruction.setPaymentPurpose(resultSet.getString("_payment_purpose")); paymentInstruction.setPaymentPurpose(resultSet.getString("payment_purpose"));
paymentInstruction.setSettlementDate(getLocalDateFromSqlDate(resultSet, "settlement_date")); paymentInstruction.setSettlementDate(getLocalDateFromSqlDate(resultSet, "settlement_date"));
paymentInstruction.setCreditLegAmount(resultSet.getLong("credit_leg_amount")); paymentInstruction.setCreditLegAmount(resultSet.getLong("credit_leg_amount"));
paymentInstruction.setDebitLegAmount(resultSet.getLong("debit_leg_amount")); paymentInstruction.setDebitLegAmount(resultSet.getLong("debit_leg_amount"));

View file

@ -1,68 +1,68 @@
package ru.spcex.clearing.imdg.object; package ru.spcex.clearing.imdg.object;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.scheduler.SchedulerAllToday; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.imdg.base.TemplateMapStore; import ru.spcex.clearing.imdg.base.TemplateMapStore;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
@Component @Component
public class SchedulerAllTodayMapStore extends TemplateMapStore<SchedulerAllToday> { public class PlannerAllTodayMapStore extends TemplateMapStore<PlannerAllToday> {
public SchedulerAllTodayMapStore(JdbcTemplate jdbcTemplate) { public PlannerAllTodayMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate); super(jdbcTemplate);
} }
@Override @Override
public String getMapName() { public String getMapName() {
return IMDGDistributedNames.Map_SchedulerAllToday; return IMDGDistributedNames.Map_PlannerAllToday;
} }
@Override @Override
public String getTableName() { public String getTableName() {
return "SCHEDULER_ALL_TODAY"; return "PLANNER_ALL_TODAY";
} }
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "SECURITY_ID", "SOURCE", "ORIG_ID" "ID", "TASK", "TASK_TIME", "CLEARING_DATE", "MARKET", "TASK_STATUS", "SECURITY_ID", "SOURCE", "ORIG_ID"
}; };
} }
@Override @Override
public SchedulerAllToday objectReader(ResultSet resultSet) throws SQLException { public PlannerAllToday objectReader(ResultSet resultSet) throws SQLException {
SchedulerAllToday object = new SchedulerAllToday(); PlannerAllToday object = new PlannerAllToday();
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setTask(resultSet.getObject("TASK", String.class)); 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.setClearingDate(getLocalDateFromSqlDate(resultSet, "CLEARING_DATE"));
object.setMarket(resultSet.getObject("MARKET", String.class)); object.setMarket(resultSet.getObject("MARKET", String.class));
object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class)); object.setTaskStatus(resultSet.getObject("TASK_STATUS", String.class));
object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class)); object.setSecurityId(resultSet.getObject("SECURITY_ID", Long.class));
object.setSource(resultSet.getObject("SOURCE", String.class)); object.setSource(resultSet.getObject("SOURCE", String.class));
object.setOrigId(resultSet.getObject("ORIG_ID", Long.class)); object.setOrigId(resultSet.getObject("ORIG_ID", Long.class));
return object; return object;
} }
@Override @Override
public Object[] objectToField(SchedulerAllToday object) { public Object[] objectToField(PlannerAllToday object) {
Object[] args = new Object[]{ Object[] args = new Object[]{
object.getId(), object.getId(),
object.getTask(), object.getTask(),
TimeUtil.toDateFromLocalTime(object.getTaskTime()), TimeUtil.toDateFromLocalTime(object.getTaskTime()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getMarket(), object.getMarket(),
object.getTaskStatus(), object.getTaskStatus(),
object.getSecurityId(), object.getSecurityId(),
object.getSource(), object.getSource(),
object.getOrigId() object.getOrigId()
}; };
return args; return args;
} }
} }

View file

@ -2,9 +2,9 @@ package ru.spcex.clearing.imdg.util;
import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap; import com.hazelcast.core.IMap;
import ru.clearing.classes.statics.data.scheduler.Scheduler; import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
import ru.clearing.classes.statics.data.scheduler.Timetable; import ru.clearing.classes.statics.data.scheduler.Planner;
import ru.clearing.classes.statics.data.scheduler.TradingCalendar; import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
@ -14,12 +14,12 @@ import static ru.spcex.clearing.imdg.IMDGDistributedNames.*;
public class Util { public class Util {
public static void makeSchedulerAllTodayMap(HazelcastInstance hazelcastInstance) { public static void makeSchedulerAllTodayMap(HazelcastInstance hazelcastInstance) {
IMap<Long, Scheduler> schedulerMap = hazelcastInstance.getMap(Map_Scheduler); IMap<Long, Planner> plannerMap = hazelcastInstance.getMap(Map_Planner);
IMap<Long, TradingCalendar> tradingCalendarMap = hazelcastInstance.getMap(Map_TradingCalendar); IMap<Long, ClearingCalendar> tradingCalendarMap = hazelcastInstance.getMap(Map_ClearingCalendar);
IMap<Long, Timetable> timetableMap = hazelcastInstance.getMap(Map_Timetable); IMap<Long, PlannerTemplate> plannerTemplateMap = hazelcastInstance.getMap(Map_PlannerTemplate);
Boolean isTradingCalendarEmpty = tradingCalendarMap.isEmpty(); Boolean isTradingCalendarEmpty = tradingCalendarMap.isEmpty();
List<Scheduler> listOfSchedulerOnDate = schedulerMap.values().stream().filter((x) -> x.getClearingDate().isEqual(LocalDate.now())).toList(); List<Planner> listOfSchedulerOnDate = plannerMap.values().stream().filter((x) -> x.getClearingDate().isEqual(LocalDate.now())).toList();
if (isTradingCalendarEmpty) { if (isTradingCalendarEmpty) {
//то из timeTable все активные записи. //то из timeTable все активные записи.
} else { } else {

View file

@ -59,13 +59,13 @@ public class RunnableMapNamesForTesting {
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Company, Company.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Company, Company.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ErrorText, ErrorText.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ErrorText, ErrorText.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Relation, Relation.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Scheduler, Scheduler.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Planner, Planner.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Security, Security.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Security, Security.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Statement, Statement.class, businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(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")})));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_TaskRunner, TaskRunner.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Launcher, Launcher.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_Timetable, Timetable.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_TradingCalendar, TradingCalendar.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_UserConnect, UserConnect.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_User, User.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_User, User.class));
@ -102,12 +102,12 @@ public class RunnableMapNamesForTesting {
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceDictionary, ServiceDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceDictionary, ServiceDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceProductDictionary, ServiceProductDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceProductDictionary, ServiceProductDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceStatusDictionary, ServiceStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ServiceStatusDictionary, ServiceStatusDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_SourceDictionary, SourceDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_ParentDictionary, ParentDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_StatementTypeDictionary, StatementTypeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_StatementTypeDictionary, StatementTypeDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TaskDictionary, TaskDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TaskStatusDictionary, TaskStatusDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TermTypeDictionary, TermTypeDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TermTypeDictionary, TermTypeDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_TradingStatusDictionary, TradingStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_DayStatusDictionary, DayStatusDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_UserRoleDictionary, UserRoleDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_UserRoleDictionary, UserRoleDictionary.class));
dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class)); dictionaryObjectForCheckMapStores.add(new DictionaryObjectForCheckMapStore<>(IMDGDistributedNames.Map_WorkflowStatusDictionary, WorkflowStatusDictionary.class));
@ -127,7 +127,7 @@ public class RunnableMapNamesForTesting {
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.class, businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_OutDocumentJournal, OutDocumentJournal.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")})));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_ProfileDocument, ProfileDocument.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SchedulerAllToday, SchedulerAllToday.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf01, SDf01.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf01, SDf01.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf02, SDf02.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf02, SDf02.class));
businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf03, SDf03.class)); businessObjectAndBusinessEventForCheckMapStores.add(new BusinessObjectAndBusinessEventForCheckMapStore<>(IMDGDistributedNames.Map_SDf03, SDf03.class));

View file

@ -0,0 +1,75 @@
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.ClearingCalendar;
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.ClearingCalendarNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.ClearingCalendarUpdateRequest;
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 ClearingCalendarService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<ClearingCalendar> clearingCalendarMap;
@Autowired
public ClearingCalendarService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider) {
super(kafkaQueue, kafkaProducer);
this.clearingCalendarMap = imdgProvider.getImdg(IMDGDistributedNames.Map_ClearingCalendar, ClearingCalendar.class);
}
@Override
public void afterPropertiesSet() {
callback(ClearingCalendarNewRequest.class)
.setConsumer(this::newTradingCalendar)
.forDestination(Consts.DESTINATION_CLEARING_CALENDAR_NEW, callbacks::put);
callback(ClearingCalendarUpdateRequest.class)
.setConsumer(this::updateTradingCalendar)
.forDestination(Consts.DESTINATION_CLEARING_CALENDAR_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setConsumer(this::deleteTradingCalendar)
.forDestination(Consts.DESTINATION_CLEARING_CALENDAR_DELETE, callbacks::put);
init();
}
private void newTradingCalendar(BaseRequest<ClearingCalendarNewRequest> userRequest) {
ClearingCalendarNewRequest req = userRequest.getRequestPayload();
log.debug("ClearingCalendarNewRequest received");
ClearingCalendar clearingCalendar = new ClearingCalendar();
clearingCalendar.setClearingDate(req.getClearingDate());
clearingCalendar.setCompanyId(req.getCompanyId());
clearingCalendar.setTradingStatus(req.getTradingStatus());
clearingCalendarMap.insert(clearingCalendar);
log.debug("successfully processed, new id {}", clearingCalendar.getId());
}
private void updateTradingCalendar(BaseRequest<ClearingCalendarUpdateRequest> userRequest) {
ClearingCalendarUpdateRequest req = userRequest.getRequestPayload();
log.debug("ClearingCalendarUpdateRequest received");
ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId());
clearingCalendar.setClearingDate(req.getClearingDate());
clearingCalendar.setCompanyId(req.getCompanyId());
clearingCalendar.setTradingStatus(req.getTradingStatus());
clearingCalendarMap.update(clearingCalendar);
log.debug("successfully processed, new id {}", clearingCalendar.getId());
}
private void deleteTradingCalendar(BaseRequest<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());
ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId());
clearingCalendarMap.delete(clearingCalendar);
}
}

View file

@ -7,22 +7,22 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.scheduler.SchedulerAllToday; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday;
import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer; import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
import ru.spcex.platform.imdg.api.Imdg; import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider; import ru.spcex.platform.imdg.api.ImdgProvider;
@Service @Service
public class SchedulerAllTodayService extends QueueConsumer implements InitializingBean { public class PlannerAllTodayService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<SchedulerAllToday> schedulerAllTodayMap; private final Imdg<PlannerAllToday> schedulerAllTodayMap;
@Autowired @Autowired
public SchedulerAllTodayService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer, public PlannerAllTodayService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider) { ImdgProvider imdgProvider) {
super(kafkaQueue, kafkaProducer); super(kafkaQueue, kafkaProducer);
this.schedulerAllTodayMap = imdgProvider.getImdg(IMDGDistributedNames.Map_SchedulerAllToday, SchedulerAllToday.class); this.schedulerAllTodayMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PlannerAllToday, PlannerAllToday.class);
} }
@Override @Override

View file

@ -0,0 +1,81 @@
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.Planner;
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.PlannerNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerUpdateRequest;
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 PlannerService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Planner> plannerMap;
@Autowired
public PlannerService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider) {
super(kafkaQueue, kafkaProducer);
this.plannerMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Planner, Planner.class);
}
@Override
public void afterPropertiesSet() {
callback(PlannerNewRequest.class)
.setConsumer(this::newScheduler)
.forDestination(Consts.DESTINATION_PLANNER_NEW, callbacks::put);
callback(PlannerUpdateRequest.class)
.setConsumer(this::updateScheduler)
.forDestination(Consts.DESTINATION_PLANNER_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setConsumer(this::deleteScheduler)
.forDestination(Consts.DESTINATION_PLANNER_DELETE, callbacks::put);
init();
}
private void newScheduler(BaseRequest<PlannerNewRequest> userRequest) {
PlannerNewRequest req = userRequest.getRequestPayload();
log.debug("PlannerNewRequest received");
Planner planner = new Planner();
planner.setTask(req.getTask());
planner.setTaskTime(req.getTaskTime());
planner.setClearingDate(req.getClearingDate());
planner.setMarket(req.getMarket());
planner.setTaskStatus(req.getTaskStatus());
planner.setSecurityId(req.getSecurityId());
plannerMap.insert(planner);
log.debug("successfully processed, new id {}", planner.getId());
}
private void updateScheduler(BaseRequest<PlannerUpdateRequest> userRequest) {
PlannerUpdateRequest req = userRequest.getRequestPayload();
log.debug("PlannerUpdateRequest received id = {}", req.getId());
Planner planner = plannerMap.getSingleObjectByID(req.getId());
planner.setTask(req.getTask());
planner.setTaskTime(req.getTaskTime());
planner.setClearingDate(req.getClearingDate());
planner.setMarket(req.getMarket());
planner.setTaskStatus(req.getTaskStatus());
planner.setSecurityId(req.getSecurityId());
plannerMap.update(planner);
}
private void deleteScheduler(BaseRequest<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());
Planner planner = plannerMap.getSingleObjectByID(req.getId());
plannerMap.delete(planner);
}
}

View file

@ -0,0 +1,75 @@
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.PlannerTemplate;
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.PlannerTemplateNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateUpdateRequest;
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 PlannerTemplateService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<PlannerTemplate> plannerTemplateMap;
@Autowired
public PlannerTemplateService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider) {
super(kafkaQueue, kafkaProducer);
this.plannerTemplateMap = imdgProvider.getImdg(IMDGDistributedNames.Map_PlannerTemplate, PlannerTemplate.class);
}
@Override
public void afterPropertiesSet() {
callback(PlannerTemplateNewRequest.class)
.setConsumer(this::newTimetable)
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_NEW, callbacks::put);
callback(PlannerTemplateUpdateRequest.class)
.setConsumer(this::updateTimetable)
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setConsumer(this::deleteTimetable)
.forDestination(Consts.DESTINATION_PLANNER_TEMPLATE_DELETE, callbacks::put);
init();
}
private void newTimetable(BaseRequest<PlannerTemplateNewRequest> userRequest) {
PlannerTemplateNewRequest req = userRequest.getRequestPayload();
log.debug("PlannerTemplateNewRequest received");
PlannerTemplate plannerTemplate = new PlannerTemplate();
plannerTemplate.setTask(req.getTask());
plannerTemplate.setTaskTime(req.getTaskTime());
plannerTemplate.setTaskStatus(req.getTaskStatus());
plannerTemplateMap.insert(plannerTemplate);
log.debug("successfully processed, new id {}", plannerTemplate.getId());
}
private void updateTimetable(BaseRequest<PlannerTemplateUpdateRequest> userRequest) {
PlannerTemplateUpdateRequest req = userRequest.getRequestPayload();
log.debug("PlannerTemplateUpdateRequest received");
PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId());
plannerTemplate.setTask(req.getTask());
plannerTemplate.setTaskTime(req.getTaskTime());
plannerTemplate.setTaskStatus(req.getTaskStatus());
plannerTemplateMap.update(plannerTemplate);
log.debug("successfully processed, new id {}", plannerTemplate.getId());
}
private void deleteTimetable(BaseRequest<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());
PlannerTemplate plannerTemplate = plannerTemplateMap.getSingleObjectByID(req.getId());
plannerTemplateMap.delete(plannerTemplate);
}
}

View file

@ -1,81 +0,0 @@
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 SchedulerService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Scheduler> schedulerMap;
@Autowired
public SchedulerService(Consumer<String, Object> kafkaQueue, Producer<String, Object> 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<SchedulerNewRequest> 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<SchedulerUpdateRequest> userRequest) {
SchedulerUpdateRequest req = userRequest.getRequestPayload();
log.debug("MoneyMarketSecurityUpdateRequest 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<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());
Scheduler scheduler = schedulerMap.getSingleObjectByID(req.getId());
schedulerMap.delete(scheduler);
}
}

View file

@ -1,75 +0,0 @@
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.Timetable;
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.TimetableNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.TimetableUpdateRequest;
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 TimetableService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Timetable> timetableMap;
@Autowired
public TimetableService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider) {
super(kafkaQueue, kafkaProducer);
this.timetableMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Timetable, Timetable.class);
}
@Override
public void afterPropertiesSet() {
callback(TimetableNewRequest.class)
.setConsumer(this::newTimetable)
.forDestination(Consts.DESTINATION_TIMETABLE_NEW, callbacks::put);
callback(TimetableUpdateRequest.class)
.setConsumer(this::updateTimetable)
.forDestination(Consts.DESTINATION_TIMETABLE_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setConsumer(this::deleteTimetable)
.forDestination(Consts.DESTINATION_TIMETABLE_DELETE, callbacks::put);
init();
}
private void newTimetable(BaseRequest<TimetableNewRequest> userRequest) {
TimetableNewRequest req = userRequest.getRequestPayload();
log.debug("TimetableNewRequest received");
Timetable timetable = new Timetable();
timetable.setTask(req.getTask());
timetable.setTaskTime(req.getTaskTime());
timetable.setTaskStatus(req.getTaskStatus());
timetableMap.insert(timetable);
log.debug("successfully processed, new id {}", timetable.getId());
}
private void updateTimetable(BaseRequest<TimetableUpdateRequest> userRequest) {
TimetableUpdateRequest req = userRequest.getRequestPayload();
log.debug("TimetableNewRequest received");
Timetable timetable = timetableMap.getSingleObjectByID(req.getId());
timetable.setTask(req.getTask());
timetable.setTaskTime(req.getTaskTime());
timetable.setTaskStatus(req.getTaskStatus());
timetableMap.update(timetable);
log.debug("successfully processed, new id {}", timetable.getId());
}
private void deleteTimetable(BaseRequest<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());
Timetable timetable = timetableMap.getSingleObjectByID(req.getId());
timetableMap.delete(timetable);
}
}

View file

@ -1,75 +0,0 @@
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.TradingCalendar;
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.TradingCalendarNewRequest;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.TradingCalendarUpdateRequest;
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 TradingCalendarService extends QueueConsumer implements InitializingBean {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<TradingCalendar> tradingCalendarMap;
@Autowired
public TradingCalendarService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
ImdgProvider imdgProvider) {
super(kafkaQueue, kafkaProducer);
this.tradingCalendarMap = imdgProvider.getImdg(IMDGDistributedNames.Map_TradingCalendar, TradingCalendar.class);
}
@Override
public void afterPropertiesSet() {
callback(TradingCalendarNewRequest.class)
.setConsumer(this::newTradingCalendar)
.forDestination(Consts.DESTINATION_TRADING_CALENDAR_NEW, callbacks::put);
callback(TradingCalendarUpdateRequest.class)
.setConsumer(this::updateTradingCalendar)
.forDestination(Consts.DESTINATION_TRADING_CALENDAR_UPDATE, callbacks::put);
callback(CommonDeleteRequest.class)
.setConsumer(this::deleteTradingCalendar)
.forDestination(Consts.DESTINATION_TRADING_CALENDAR_DELETE, callbacks::put);
init();
}
private void newTradingCalendar(BaseRequest<TradingCalendarNewRequest> userRequest) {
TradingCalendarNewRequest req = userRequest.getRequestPayload();
log.debug("TradingCalendarNewRequest received");
TradingCalendar tradingCalendar = new TradingCalendar();
tradingCalendar.setClearingDate(req.getClearingDate());
tradingCalendar.setCompanyId(req.getCompanyId());
tradingCalendar.setTradingStatus(req.getTradingStatus());
tradingCalendarMap.insert(tradingCalendar);
log.debug("successfully processed, new id {}", tradingCalendar.getId());
}
private void updateTradingCalendar(BaseRequest<TradingCalendarUpdateRequest> userRequest) {
TradingCalendarUpdateRequest req = userRequest.getRequestPayload();
log.debug("TradingCalendarUpdateRequest received");
TradingCalendar tradingCalendar = tradingCalendarMap.getSingleObjectByID(req.getId());
tradingCalendar.setClearingDate(req.getClearingDate());
tradingCalendar.setCompanyId(req.getCompanyId());
tradingCalendar.setTradingStatus(req.getTradingStatus());
tradingCalendarMap.update(tradingCalendar);
log.debug("successfully processed, new id {}", tradingCalendar.getId());
}
private void deleteTradingCalendar(BaseRequest<CommonDeleteRequest> userRequest) {
CommonDeleteRequest req = userRequest.getRequestPayload();
log.debug("CommonDeleteRequest received id = {}", req.getId());
TradingCalendar tradingCalendar = tradingCalendarMap.getSingleObjectByID(req.getId());
tradingCalendarMap.delete(tradingCalendar);
}
}

View file

@ -37,11 +37,11 @@ public final class IMDGDistributedNames {
public static final String Map_UserConnectHistory = "Map_UserConnectHistory"; public static final String Map_UserConnectHistory = "Map_UserConnectHistory";
public static final String Map_User = "Map_User"; public static final String Map_User = "Map_User";
public static final String Map_UserHistory = "Map_UserHistory"; public static final String Map_UserHistory = "Map_UserHistory";
public static final String Map_TaskRunner = "Map_TaskRunner"; public static final String Map_Launcher = "Map_Launcher";
public static final String Map_SchedulerAllToday = "Map_SchedulerAllToday"; public static final String Map_PlannerAllToday = "Map_PlannerAllToday";
public static final String Map_Scheduler = "Map_Scheduler"; public static final String Map_Planner = "Map_Planner";
public static final String Map_TradingCalendar = "Map_TradingCalendar"; public static final String Map_ClearingCalendar = "Map_ClearingCalendar";
public static final String Map_Timetable = "Map_Timetable"; public static final String Map_PlannerTemplate = "Map_PlannerTemplate";
public static final String Map_InDocumentJournal = "Map_InDocumentJournal"; public static final String Map_InDocumentJournal = "Map_InDocumentJournal";
public static final String Map_OutDocumentJournal = "Map_OutDocumentJournal"; public static final String Map_OutDocumentJournal = "Map_OutDocumentJournal";
public static final String Map_SDf01 = "Map_SDf01"; public static final String Map_SDf01 = "Map_SDf01";
@ -94,8 +94,8 @@ public final class IMDGDistributedNames {
public static final String Map_ChargeDirectionDictionary = "Map_ChargeDirectionDictionary"; public static final String Map_ChargeDirectionDictionary = "Map_ChargeDirectionDictionary";
public static final String Map_TaskDictionary = "Map_TaskDictionary"; public static final String Map_TaskDictionary = "Map_TaskDictionary";
public static final String Map_TaskStatusDictionary = "Map_TaskStatusDictionary"; public static final String Map_TaskStatusDictionary = "Map_TaskStatusDictionary";
public static final String Map_TradingStatusDictionary = "Map_TradingStatusDictionary"; public static final String Map_DayStatusDictionary = "Map_DayStatusDictionary";
public static final String Map_SourceDictionary = "Map_SourceDictionary"; public static final String Map_ParentDictionary = "Map_ParentDictionary";
public static final String Map_ConnectionStateDictionary = "Map_ConnectionStateDictionary"; public static final String Map_ConnectionStateDictionary = "Map_ConnectionStateDictionary";
public static final String Map_UserRoleDictionary = "Map_UserRoleDictionary"; public static final String Map_UserRoleDictionary = "Map_UserRoleDictionary";
public static final String Map_UserSettings = "Map_UserSettings"; public static final String Map_UserSettings = "Map_UserSettings";

View file

@ -9,17 +9,17 @@ public interface Consts {
String DESTINATION_KEY_RATE_UPDATE = "key-rate-update"; String DESTINATION_KEY_RATE_UPDATE = "key-rate-update";
String DESTINATION_KEY_RATE_DELETE = "key-rate-delete"; String DESTINATION_KEY_RATE_DELETE = "key-rate-delete";
String DESTINATION_TIMETABLE_NEW = "timetable-new"; String DESTINATION_PLANNER_TEMPLATE_NEW = "planner-template-new";
String DESTINATION_TIMETABLE_UPDATE = "timetable-update"; String DESTINATION_PLANNER_TEMPLATE_UPDATE = "planner-template-update";
String DESTINATION_TIMETABLE_DELETE = "timetable-delete"; String DESTINATION_PLANNER_TEMPLATE_DELETE = "planner-template-delete";
String DESTINATION_TRADING_CALENDAR_NEW = "timetable-new"; String DESTINATION_CLEARING_CALENDAR_NEW = "clearing-calendar-new";
String DESTINATION_TRADING_CALENDAR_UPDATE = "timetable-update"; String DESTINATION_CLEARING_CALENDAR_UPDATE = "clearing-calendar-update";
String DESTINATION_TRADING_CALENDAR_DELETE = "timetable-delete"; String DESTINATION_CLEARING_CALENDAR_DELETE = "clearing-calendar-delete";
String DESTINATION_SCHEDULER_NEW = "scheduler-new"; String DESTINATION_PLANNER_NEW = "planner-new";
String DESTINATION_SCHEDULER_UPDATE = "scheduler-update"; String DESTINATION_PLANNER_UPDATE = "planner-update";
String DESTINATION_SCHEDULER_DELETE = "scheduler-delete"; String DESTINATION_PLANNER_DELETE = "planner-delete";
String DESTINATION_COMPANY_DELETE = "company-delete"; String DESTINATION_COMPANY_DELETE = "company-delete";
String DESTINATION_COMPANY_INFO_UPDATE = "company-info-update"; String DESTINATION_COMPANY_INFO_UPDATE = "company-info-update";
@ -48,7 +48,7 @@ public interface Consts {
String EXPORT_PROCESS = "export-process"; String EXPORT_PROCESS = "export-process";
String ACCOUNT_NEW = "account-new"; String ACCOUNT_NEW = "account-new";
String BALANCE_ACCOUNT_NEW = "balance-account-new"; String BALANCE_ACCOUNT_NEW = "balance-account-new";
String TASK_RUNNER_NEW = "task-runner-new"; String LAUNCHER_NEW = "launcher-new";
String REQUEST_INFO_UPDATE = "request-info-update"; String REQUEST_INFO_UPDATE = "request-info-update";

View file

@ -8,7 +8,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSeria
import java.time.LocalDate; import java.time.LocalDate;
public class TradingCalendarNewRequest { public class ClearingCalendarNewRequest {
@JsonSerialize(using = LocalDateSerializer.class) @JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class) @JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty @JsonProperty

View file

@ -8,7 +8,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSeria
import java.time.LocalDate; import java.time.LocalDate;
public class TradingCalendarUpdateRequest { public class ClearingCalendarUpdateRequest {
@JsonProperty @JsonProperty
public Long id; public Long id;

View file

@ -2,7 +2,7 @@ package ru.spcex.clearing.platform.messaging.domain.cud.schedule;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
public class TaskRunnerCommandRequest { public class LauncherCommandRequest {
@JsonProperty @JsonProperty
private Long userId; private Long userId;

View file

@ -11,7 +11,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSeria
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime; import java.time.LocalTime;
public class SchedulerNewRequest { public class PlannerNewRequest {
@JsonProperty @JsonProperty
public String task; public String task;

View file

@ -8,7 +8,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSeria
import java.time.LocalTime; import java.time.LocalTime;
public class TimetableNewRequest { public class PlannerTemplateNewRequest {
@JsonProperty @JsonProperty
public String task; public String task;

View file

@ -8,7 +8,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSeria
import java.time.LocalTime; import java.time.LocalTime;
public class TimetableUpdateRequest { public class PlannerTemplateUpdateRequest {
@JsonProperty @JsonProperty
public Long id; public Long id;

View file

@ -11,7 +11,7 @@ import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSeria
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime; import java.time.LocalTime;
public class SchedulerUpdateRequest { public class PlannerUpdateRequest {
@JsonProperty @JsonProperty
public Long id; public Long id;