Merge remote-tracking branch 'origin/dev' into psemenkov

# Conflicts:
#	clearing-parent/account-service/src/test/java/ru/spcex/clearing/account/service/BankAccountServiceTest.java
This commit is contained in:
psemenkov 2022-12-07 16:47:03 +03:00
commit f5df0d409e
101 changed files with 3872 additions and 1949 deletions

View file

@ -55,7 +55,6 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
bankAccount.setDestination(req.getDestination()); bankAccount.setDestination(req.getDestination());
bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber()); bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber());
bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode()); bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode());
bankAccount.setAccount(req.getAccount());
bankAccountMap.insert(bankAccount); bankAccountMap.insert(bankAccount);
log.debug("successfully processed, new id {}", bankAccount.getId()); log.debug("successfully processed, new id {}", bankAccount.getId());
@ -73,7 +72,6 @@ public class BankAccountService extends QueueConsumer implements InitializingBea
bankAccount.setDestination(req.getDestination()); bankAccount.setDestination(req.getDestination());
bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber()); bankAccount.setTaxpayerIdentificationNumber(req.getTaxpayerIdentificationNumber());
bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode()); bankAccount.setTaxRegistrationReasonCode(req.getTaxRegistrationReasonCode());
bankAccount.setAccount(req.getAccount());
bankAccountMap.update(bankAccount); bankAccountMap.update(bankAccount);
log.debug("successfully update, existing bankAccount with id {}", bankAccount.getId()); log.debug("successfully update, existing bankAccount with id {}", bankAccount.getId());

View file

@ -90,7 +90,7 @@ public class WebConfig implements WebMvcConfigurer {
} else if (sameSite.equalsIgnoreCase(Cookie.SameSite.NONE.attributeValue())) { } else if (sameSite.equalsIgnoreCase(Cookie.SameSite.NONE.attributeValue())) {
return CookieSameSiteSupplier.ofNone(); return CookieSameSiteSupplier.ofNone();
} else if (sameSite.equalsIgnoreCase(Cookie.SameSite.LAX.attributeValue())) { } else if (sameSite.equalsIgnoreCase(Cookie.SameSite.LAX.attributeValue())) {
return CookieSameSiteSupplier.ofNone(); return CookieSameSiteSupplier.ofLax();
} else if (sameSite.equalsIgnoreCase(Cookie.SameSite.STRICT.attributeValue())) { } else if (sameSite.equalsIgnoreCase(Cookie.SameSite.STRICT.attributeValue())) {
return CookieSameSiteSupplier.ofStrict(); return CookieSameSiteSupplier.ofStrict();
} else { } else {

View file

@ -8,25 +8,38 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
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.company.Company;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.company.CompanyInfoUpdateAction; import ru.spcex.clearing.backendapi.controller.request.cud.company.CompanyInfoUpdateAction;
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.meta.GetResponseFactory;
import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IOperator;
import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.backendapi.service.IStateLoader;
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.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@Controller @Controller
@RequestMapping("/company-infos") @RequestMapping("/company-infos")
public class EditCompanyInfoController extends AbstractQueueController { public class EditCompanyInfoController extends AbstractQueueController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
private final Imdg<Company> companyImdg;
private final GetResponseFactory responseFactory;
@Autowired @Autowired
public EditCompanyInfoController(IOperator operator, IStateLoader stateLoader) { public EditCompanyInfoController(IOperator operator, IStateLoader stateLoader, ImdgProvider imdgProvider, GetResponseFactory responseFactory) {
super(operator); super(operator);
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
this.companyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
this.responseFactory = responseFactory;
} }
@ApiOperation(value = "update company info.") @ApiOperation(value = "update company info.")
@ -42,15 +55,20 @@ public class EditCompanyInfoController extends AbstractQueueController {
return processRequest(Consts.DESTINATION_COMPANY_INFO_UPDATE, companyInfoUpdateAction); return processRequest(Consts.DESTINATION_COMPANY_INFO_UPDATE, companyInfoUpdateAction);
} }
//todo @ApiOperation(value = "get all CompanyInfo's.")
// @ApiOperation(value = "get all CompanyInfo's.") @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)})
// @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CompanyBackendInfoGetAll.class)}) @RequestMapping(method = RequestMethod.GET)
// @RequestMapping(method = RequestMethod.GET) @ResponseBody
// @ResponseBody public CommonGetAllResponse getAll() {
// public CompanyBackendInfoGetAll getAll() { Collection<Map<String, Object>> all = new ArrayList<>();
// Collection<CompanyInfo> all = stateLoader.getAll(IMDGDistributedNames.Map_Company, CompanyInfo.class); Collection<Company> companies = companyImdg.getAllValues();
// CompanyBackendGetAll response = new CompanyBackendGetAll(); for (Company company : companies) {
// response.fromEntity(all); if (company.getProfile() != null) { // пока возвращает "пустой" CompanyInfo если его нет для Company
// return response; all.add(responseFactory.responseFromObject(company.getProfile()));
// } }
}
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
return response;
}
} }

View file

@ -1,28 +1,38 @@
package ru.spcex.clearing.backendapi.controller.queue.scheduler; package ru.spcex.clearing.backendapi.controller.queue.scheduler;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.scheduler.ClearingCalendar; import ru.clearing.classes.statics.data.scheduler.ClearingCalendar;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.ClearingCalendarNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.ClearingCalendarUpdateAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
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;
import ru.spcex.clearing.backendapi.service.IOperator;
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;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutionException;
@Controller @Controller
@RequestMapping("/schedule/clearing-calendars") @RequestMapping("/schedule/clearing-calendars")
public class ClearingCalendarController { public class ClearingCalendarController extends AbstractQueueController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public ClearingCalendarController(IStateLoader stateLoader) { public ClearingCalendarController(IStateLoader stateLoader, IOperator operator) {
super(operator);
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }
@ -36,4 +46,38 @@ public class ClearingCalendarController {
response.fromEntity(all); response.fromEntity(all);
return response; return response;
} }
@ApiOperation(value = "new planner clearing calendar.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse add(
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody ClearingCalendarNewAction clearingCalendarNewAction) throws ExecutionException, InterruptedException {
return processRequest(Consts.DESTINATION_CLEARING_CALENDAR_NEW, clearingCalendarNewAction);
}
@ApiOperation(value = "update clearing calendar.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody ClearingCalendarUpdateAction clearingCalendarUpdateAction) throws ExecutionException, InterruptedException {
clearingCalendarUpdateAction.setId(id);
return processRequest(Consts.DESTINATION_CLEARING_CALENDAR_UPDATE, clearingCalendarUpdateAction);
}
@ApiOperation(value = "delete clearing calendar.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
return processRequest(Consts.DESTINATION_CLEARING_CALENDAR_DELETE, deleteAction);
}
} }

View file

@ -9,7 +9,9 @@ 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.PlannerAllToday; import ru.clearing.classes.statics.data.scheduler.PlannerAllToday;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse; import ru.spcex.clearing.backendapi.controller.response.entity.CommonGetAllResponse;
import ru.spcex.clearing.backendapi.service.IOperator;
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,11 +20,12 @@ import java.util.Map;
@Controller @Controller
@RequestMapping("/schedule/planners-all-today") @RequestMapping("/schedule/planners-all-today")
public class PlanerAllTodayController { public class PlannerAllTodayController extends AbstractQueueController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public PlanerAllTodayController(IStateLoader stateLoader) { public PlannerAllTodayController(IStateLoader stateLoader, IOperator operator) {
super(operator);
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }

View file

@ -1,28 +1,38 @@
package ru.spcex.clearing.backendapi.controller.queue.scheduler; package ru.spcex.clearing.backendapi.controller.queue.scheduler;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.scheduler.Planner; import ru.clearing.classes.statics.data.scheduler.Planner;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerUpdateAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
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;
import ru.spcex.clearing.backendapi.service.IOperator;
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;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutionException;
@Controller @Controller
@RequestMapping("/schedule/planners") @RequestMapping("/schedule/planners")
public class PlannerController { public class PlannerController extends AbstractQueueController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public PlannerController(IStateLoader stateLoader) { public PlannerController(IOperator operator, IStateLoader stateLoader) {
super(operator);
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }
@ -36,4 +46,38 @@ public class PlannerController {
response.fromEntity(all); response.fromEntity(all);
return response; return response;
} }
@ApiOperation(value = "new planner.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse add(
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody PlannerNewAction plannerNewAction) throws ExecutionException, InterruptedException {
return processRequest(Consts.DESTINATION_PLANNER_NEW, plannerNewAction);
}
@ApiOperation(value = "update planner.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody PlannerUpdateAction plannerUpdateAction) throws ExecutionException, InterruptedException {
plannerUpdateAction.setId(id);
return processRequest(Consts.DESTINATION_PLANNER_UPDATE, plannerUpdateAction);
}
@ApiOperation(value = "delete planner.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
return processRequest(Consts.DESTINATION_PLANNER_DELETE, deleteAction);
}
} }

View file

@ -1,28 +1,38 @@
package ru.spcex.clearing.backendapi.controller.queue.scheduler; package ru.spcex.clearing.backendapi.controller.queue.scheduler;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import ru.clearing.classes.statics.data.scheduler.PlannerTemplate; import ru.clearing.classes.statics.data.scheduler.PlannerTemplate;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerTemplateNewAction;
import ru.spcex.clearing.backendapi.controller.request.cud.schedule.PlannerTemplateUpdateAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
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;
import ru.spcex.clearing.backendapi.service.IOperator;
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;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutionException;
@Controller @Controller
@RequestMapping("/schedule/planner-templates") @RequestMapping("/schedule/planner-templates")
public class PlannerTemplateController { public class PlannerTemplateController extends AbstractQueueController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
@Autowired @Autowired
public PlannerTemplateController(IStateLoader stateLoader) { public PlannerTemplateController(IStateLoader stateLoader, IOperator operator) {
super(operator);
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
} }
@ -36,4 +46,38 @@ public class PlannerTemplateController {
response.fromEntity(all); response.fromEntity(all);
return response; return response;
} }
@ApiOperation(value = "new planner template.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse add(
@ApiParam(value = "Параметры команды в JSON формате.", required = true)
@RequestBody PlannerTemplateNewAction plannerTemplateNewAction) throws ExecutionException, InterruptedException {
return processRequest(Consts.DESTINATION_PLANNER_TEMPLATE_NEW, plannerTemplateNewAction);
}
@ApiOperation(value = "update planner template.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@ApiParam(value = "Идентификатор изменяего объекта.", required = true, example = "1234")
@PathVariable("id") Long id,
@ApiParam(value = "Новые значения полей объекта.", required = true)
@RequestBody PlannerTemplateUpdateAction plannerTemplateUpdateAction) throws ExecutionException, InterruptedException {
plannerTemplateUpdateAction.setId(id);
return processRequest(Consts.DESTINATION_PLANNER_TEMPLATE_UPDATE, plannerTemplateUpdateAction);
}
@ApiOperation(value = "delete planner template.")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class)})
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseBody
public CudResponse delete(@ApiParam(value = "Идентификатор удаляемого объекта", required = true, example = "1234")
@PathVariable("id") Long id) throws ExecutionException, InterruptedException {
CommonDeleteAction deleteAction = new CommonDeleteAction();
deleteAction.setId(id);
return processRequest(Consts.DESTINATION_PLANNER_TEMPLATE_DELETE, deleteAction);
}
} }

View file

@ -4,26 +4,43 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
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.user.User; import ru.clearing.classes.statics.data.user.User;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.utilities.UserAuthAction;
import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
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;
import ru.spcex.clearing.backendapi.security.KeycloakUtils;
import ru.spcex.clearing.backendapi.service.IOperator;
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;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.Collection; import java.util.Collection;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ExecutionException;
@Controller @Controller
@RequestMapping("/users") @RequestMapping("/users")
public class UserController { public class UserController extends AbstractQueueController {
private final IStateLoader stateLoader; private final IStateLoader stateLoader;
private final Imdg<User> userImdg;
@Autowired @Autowired
public UserController(IStateLoader stateLoader) { public UserController(IOperator operator, IStateLoader stateLoader, ImdgProvider imdgProvider) {
super(operator);
this.stateLoader = stateLoader; this.stateLoader = stateLoader;
this.userImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_User, User.class);
} }
@ApiOperation(value = "get all users.") @ApiOperation(value = "get all users.")
@ -36,4 +53,22 @@ public class UserController {
response.fromEntity(all); response.fromEntity(all);
return response; return response;
} }
@ApiOperation(value = "update user")
@ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CudResponse.class), @ApiResponse(code = 400, message = "Ошибка валидации", response = BasicSpcexResponse.class)})
@RequestMapping(method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public CudResponse update(
@RequestBody UserAuthAction userAuthAction) throws ExecutionException, InterruptedException {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
String username = KeycloakUtils.getUserNameFromAuthentication(authentication);
User user = userImdg.getSingleObjectByFieldValues(Map.of("identifier", username));
if (user == null) {
return processRequest(Consts.USER_AUTH_SUCCESS, userAuthAction);
}
throw new IllegalStateException("cannot create user cause it is exists: " + username);
}
} }

View file

@ -39,9 +39,6 @@ public class BankAccountNewAction implements IAction<BankAccountNewRequest> {
@ApiModelProperty(value = "Код причины постановки (КПП)", example = "01") @ApiModelProperty(value = "Код причины постановки (КПП)", example = "01")
@JsonProperty @JsonProperty
private String taxRegistrationReasonCode; private String taxRegistrationReasonCode;
@ApiModelProperty(value = "Номер счета", example = "11111222223333344444")
@JsonProperty
private String account;
@Override @Override
public Collection<EnumMessage> validate() { public Collection<EnumMessage> validate() {
@ -67,9 +64,6 @@ public class BankAccountNewAction implements IAction<BankAccountNewRequest> {
if ("RUB".equalsIgnoreCase(this.currency) && !StringUtils.hasLength(taxRegistrationReasonCode)) { if ("RUB".equalsIgnoreCase(this.currency) && !StringUtils.hasLength(taxRegistrationReasonCode)) {
return List.of(new EnumMessage(BackEndError.ValidationError, "taxRegistrationReasonCode")); return List.of(new EnumMessage(BackEndError.ValidationError, "taxRegistrationReasonCode"));
} }
if (!StringUtils.hasLength(account)) {
return List.of(new EnumMessage(BackEndError.ValidationError, "account"));
}
return Collections.emptyList(); return Collections.emptyList();
} }
@ -85,7 +79,6 @@ public class BankAccountNewAction implements IAction<BankAccountNewRequest> {
req.setDestination(this.destination); req.setDestination(this.destination);
req.setTaxpayerIdentificationNumber(this.taxpayerIdentificationNumber); req.setTaxpayerIdentificationNumber(this.taxpayerIdentificationNumber);
req.setTaxRegistrationReasonCode(this.taxRegistrationReasonCode); req.setTaxRegistrationReasonCode(this.taxRegistrationReasonCode);
req.setAccount(this.account);
return req; return req;
} }
@ -158,12 +151,4 @@ public class BankAccountNewAction implements IAction<BankAccountNewRequest> {
public void setTaxRegistrationReasonCode(String taxRegistrationReasonCode) { public void setTaxRegistrationReasonCode(String taxRegistrationReasonCode) {
this.taxRegistrationReasonCode = taxRegistrationReasonCode; this.taxRegistrationReasonCode = taxRegistrationReasonCode;
} }
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
} }

View file

@ -38,9 +38,8 @@ public class BankAccountUpdateAction implements IAction<BankAccountUpdateRequest
@ApiModelProperty(value = "Код причины постановки (КПП)", example = "01") @ApiModelProperty(value = "Код причины постановки (КПП)", example = "01")
@JsonProperty @JsonProperty
private String taxRegistrationReasonCode; private String taxRegistrationReasonCode;
@ApiModelProperty(value = "Номер счета", example = "11111222223333344444") @ApiModelProperty(value = "Номер счета", example = "11111222223333344444")
@JsonProperty
private String account;
@Override @Override
public Collection<EnumMessage> validate() { public Collection<EnumMessage> validate() {
@ -59,7 +58,6 @@ public class BankAccountUpdateAction implements IAction<BankAccountUpdateRequest
req.setDestination(this.destination); req.setDestination(this.destination);
req.setTaxpayerIdentificationNumber(this.taxpayerIdentificationNumber); req.setTaxpayerIdentificationNumber(this.taxpayerIdentificationNumber);
req.setTaxRegistrationReasonCode(this.taxRegistrationReasonCode); req.setTaxRegistrationReasonCode(this.taxRegistrationReasonCode);
req.setAccount(this.account);
return req; return req;
} }
@ -140,12 +138,4 @@ public class BankAccountUpdateAction implements IAction<BankAccountUpdateRequest
public void setTaxRegistrationReasonCode(String taxRegistrationReasonCode) { public void setTaxRegistrationReasonCode(String taxRegistrationReasonCode) {
this.taxRegistrationReasonCode = taxRegistrationReasonCode; this.taxRegistrationReasonCode = taxRegistrationReasonCode;
} }
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
} }

View file

@ -0,0 +1,83 @@
package ru.spcex.clearing.backendapi.controller.request.cud.schedule;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.ClearingCalendarNewRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class ClearingCalendarNewAction implements IAction<ClearingCalendarNewRequest> {
@ApiModelProperty(value = "Дата", example = "2022-12-25")
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
public LocalDate clearingDate;
@ApiModelProperty(value = "Компания", example = "1000")
@JsonProperty
public Long companyId;
@ApiModelProperty(value = "Статус", example = "ABCD")
@JsonProperty
public String dayStatus;
@Override
public ClearingCalendarNewRequest toRequest() {
ClearingCalendarNewRequest clearingCalendarNewRequest = new ClearingCalendarNewRequest();
clearingCalendarNewRequest.setClearingDate(clearingDate);
clearingCalendarNewRequest.setCompanyId(companyId);
clearingCalendarNewRequest.setDayStatus(dayStatus);
return clearingCalendarNewRequest;
}
@Override
public ActionType getActionType() {
return ActionType.NEW;
}
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (clearingDate == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"clearingDate"));
}
if (TextUtil.isEmpty(dayStatus)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskStatus"));
}
return errors;
}
public LocalDate getClearingDate() {
return clearingDate;
}
public void setClearingDate(LocalDate clearingDate) {
this.clearingDate = clearingDate;
}
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public String getDayStatus() {
return dayStatus;
}
public void setDayStatus(String dayStatus) {
this.dayStatus = dayStatus;
}
}

View file

@ -0,0 +1,101 @@
package ru.spcex.clearing.backendapi.controller.request.cud.schedule;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.ClearingCalendarUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
import ru.spcex.platform.classes.base.interfaces.WithId;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class ClearingCalendarUpdateAction implements IAction<ClearingCalendarUpdateRequest>, WithId {
@ApiModelProperty(hidden = true)
@JsonProperty
public Long id;
@ApiModelProperty(value = "Дата", example = "2022-12-25")
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
public LocalDate clearingDate;
@ApiModelProperty(value = "Компания", example = "1000")
@JsonProperty
public Long companyId;
@ApiModelProperty(value = "Статус", example = "ABCD")
@JsonProperty
public String dayStatus;
@Override
public ClearingCalendarUpdateRequest toRequest() {
ClearingCalendarUpdateRequest clearingCalendarUpdateRequest = new ClearingCalendarUpdateRequest();
clearingCalendarUpdateRequest.setId(id);
clearingCalendarUpdateRequest.setClearingDate(clearingDate);
clearingCalendarUpdateRequest.setCompanyId(companyId);
clearingCalendarUpdateRequest.setDayStatus(dayStatus);
return clearingCalendarUpdateRequest;
}
@Override
public ActionType getActionType() {
return ActionType.UPDATE;
}
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (id == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"id"));
}
if (clearingDate == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"clearingDate"));
}
if (TextUtil.isEmpty(dayStatus)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskStatus"));
}
return errors;
}
@Override
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public LocalDate getClearingDate() {
return clearingDate;
}
public void setClearingDate(LocalDate clearingDate) {
this.clearingDate = clearingDate;
}
public Long getCompanyId() {
return companyId;
}
public void setCompanyId(Long companyId) {
this.companyId = companyId;
}
public String getDayStatus() {
return dayStatus;
}
public void setDayStatus(String dayStatus) {
this.dayStatus = dayStatus;
}
}

View file

@ -0,0 +1,135 @@
package ru.spcex.clearing.backendapi.controller.request.cud.schedule;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerNewRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalTimeDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class PlannerNewAction implements IAction<PlannerNewRequest> {
@ApiModelProperty(value = "Идентификатор задачи", example = "ABCD")
@JsonProperty
private String task;
@ApiModelProperty(value = "Время", example = "16:30:00")
@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalTimeDeserializer.class)
@JsonProperty
public LocalTime taskTime;
@ApiModelProperty(value = "Дата", example = "2022-12-25")
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
public LocalDate clearingDate;
@ApiModelProperty(value = "Секция", example = "ABCD")
@JsonProperty
public String market;
@ApiModelProperty(value = "Статус", example = "ABCD")
@JsonProperty
public String taskStatus;
@ApiModelProperty(value = "Инструмент", example = "1000")
@JsonProperty
public Long securityId;
@Override
public PlannerNewRequest toRequest() {
PlannerNewRequest plannerNewRequest = new PlannerNewRequest();
plannerNewRequest.setTask(task);
plannerNewRequest.setTaskTime(taskTime);
plannerNewRequest.setClearingDate(clearingDate);
plannerNewRequest.setMarket(market);
plannerNewRequest.setTaskStatus(taskStatus);
plannerNewRequest.setSecurityId(securityId);
return plannerNewRequest;
}
@Override
public ActionType getActionType() {
return ActionType.NEW;
}
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (TextUtil.isEmpty(task)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"task"));
}
if (taskTime == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskTime"));
}
if (clearingDate == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"clearingDate"));
}
if (TextUtil.isEmpty(taskStatus)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskStatus"));
}
return errors;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public LocalTime getTaskTime() {
return taskTime;
}
public void setTaskTime(LocalTime taskTime) {
this.taskTime = taskTime;
}
public LocalDate getClearingDate() {
return clearingDate;
}
public void setClearingDate(LocalDate clearingDate) {
this.clearingDate = clearingDate;
}
public String getMarket() {
return market;
}
public void setMarket(String market) {
this.market = market;
}
public String getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(String taskStatus) {
this.taskStatus = taskStatus;
}
public Long getSecurityId() {
return securityId;
}
public void setSecurityId(Long securityId) {
this.securityId = securityId;
}
}

View file

@ -0,0 +1,82 @@
package ru.spcex.clearing.backendapi.controller.request.cud.schedule;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateNewRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalTimeDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class PlannerTemplateNewAction implements IAction<PlannerTemplateNewRequest> {
@JsonProperty
public String task;
@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalTimeDeserializer.class)
@JsonProperty
public LocalTime taskTime;
@JsonProperty
public String taskStatus;
@Override
public PlannerTemplateNewRequest toRequest() {
PlannerTemplateNewRequest plannerTemplateNewRequest = new PlannerTemplateNewRequest();
plannerTemplateNewRequest.setTask(task);
plannerTemplateNewRequest.setTaskTime(taskTime);
plannerTemplateNewRequest.setTaskStatus(taskStatus);
return plannerTemplateNewRequest;
}
@Override
public ActionType getActionType() {
return ActionType.NEW;
}
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (TextUtil.isEmpty(task)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"task"));
}
if (taskTime == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskTime"));
}
if (TextUtil.isEmpty(taskStatus)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskStatus"));
}
return errors;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public LocalTime getTaskTime() {
return taskTime;
}
public void setTaskTime(LocalTime taskTime) {
this.taskTime = taskTime;
}
public String getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(String taskStatus) {
this.taskStatus = taskStatus;
}
}

View file

@ -0,0 +1,100 @@
package ru.spcex.clearing.backendapi.controller.request.cud.schedule;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerTemplateUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalTimeDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer;
import ru.spcex.platform.classes.base.interfaces.WithId;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class PlannerTemplateUpdateAction implements IAction<PlannerTemplateUpdateRequest>, WithId {
@ApiModelProperty(hidden = true)
@JsonProperty
public Long id;
@JsonProperty
public String task;
@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalTimeDeserializer.class)
@JsonProperty
public LocalTime taskTime;
@JsonProperty
public String taskStatus;
@Override
public PlannerTemplateUpdateRequest toRequest() {
PlannerTemplateUpdateRequest plannerTemplateUpdateRequest = new PlannerTemplateUpdateRequest();
plannerTemplateUpdateRequest.setId(id);
plannerTemplateUpdateRequest.setTask(task);
plannerTemplateUpdateRequest.setTaskTime(taskTime);
plannerTemplateUpdateRequest.setTaskStatus(taskStatus);
return plannerTemplateUpdateRequest;
}
@Override
public ActionType getActionType() {
return ActionType.UPDATE;
}
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (id == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"id"));
}
if (TextUtil.isEmpty(task)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"task"));
}
if (taskTime == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskTime"));
}
if (TextUtil.isEmpty(taskStatus)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskStatus"));
}
return errors;
}
@Override
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public LocalTime getTaskTime() {
return taskTime;
}
public void setTaskTime(LocalTime taskTime) {
this.taskTime = taskTime;
}
public String getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(String taskStatus) {
this.taskStatus = taskStatus;
}
}

View file

@ -0,0 +1,153 @@
package ru.spcex.clearing.backendapi.controller.request.cud.schedule;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.backendapi.errors.BackEndError;
import ru.spcex.clearing.platform.messaging.domain.ActionType;
import ru.spcex.clearing.platform.messaging.domain.cud.schedule.PlannerUpdateRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalDateDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.LocalTimeDeserializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalDateSerializer;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.LocalTimeSerializer;
import ru.spcex.platform.classes.base.interfaces.WithId;
import ru.spcex.platform.utils.enumeration.EnumMessage;
import ru.spcex.platform.utils.text.TextUtil;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class PlannerUpdateAction implements IAction<PlannerUpdateRequest>, WithId {
@ApiModelProperty(hidden = true)
@JsonProperty
public Long id;
@ApiModelProperty(value = "Идентификатор задачи", example = "ABCD")
@JsonProperty
private String task;
@ApiModelProperty(value = "Время", example = "16:30:00")
@JsonSerialize(using = LocalTimeSerializer.class)
@JsonDeserialize(using = LocalTimeDeserializer.class)
@JsonProperty
public LocalTime taskTime;
@ApiModelProperty(value = "Дата", example = "2022-12-25")
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonProperty
public LocalDate clearingDate;
@ApiModelProperty(value = "Секция", example = "ABCD")
@JsonProperty
public String market;
@ApiModelProperty(value = "Статус", example = "ABCD")
@JsonProperty
public String taskStatus;
@ApiModelProperty(value = "Инструмент", example = "1000")
@JsonProperty
public Long securityId;
@Override
public PlannerUpdateRequest toRequest() {
PlannerUpdateRequest plannerUpdateRequest = new PlannerUpdateRequest();
plannerUpdateRequest.setId(id);
plannerUpdateRequest.setTask(task);
plannerUpdateRequest.setTaskTime(taskTime);
plannerUpdateRequest.setClearingDate(clearingDate);
plannerUpdateRequest.setMarket(market);
plannerUpdateRequest.setTaskStatus(taskStatus);
plannerUpdateRequest.setSecurityId(securityId);
return plannerUpdateRequest;
}
@Override
public ActionType getActionType() {
return ActionType.UPDATE;
}
@Override
public Collection<EnumMessage> validate() {
List<EnumMessage> errors = new ArrayList<>();
if (id == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"id"));
}
if (TextUtil.isEmpty(task)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"task"));
}
if (taskTime == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskTime"));
}
if (clearingDate == null) {
errors.add(new EnumMessage(BackEndError.ValidationError,"clearingDate"));
}
if (TextUtil.isEmpty(taskStatus)) {
errors.add(new EnumMessage(BackEndError.ValidationError,"taskStatus"));
}
return errors;
}
@Override
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
public LocalTime getTaskTime() {
return taskTime;
}
public void setTaskTime(LocalTime taskTime) {
this.taskTime = taskTime;
}
public LocalDate getClearingDate() {
return clearingDate;
}
public void setClearingDate(LocalDate clearingDate) {
this.clearingDate = clearingDate;
}
public String getMarket() {
return market;
}
public void setMarket(String market) {
this.market = market;
}
public String getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(String taskStatus) {
this.taskStatus = taskStatus;
}
public Long getSecurityId() {
return securityId;
}
public void setSecurityId(Long securityId) {
this.securityId = securityId;
}
}

View file

@ -32,7 +32,7 @@ public class MoneyMarketSecurityNewAction implements IAction<MoneyMarketSecurity
public Double nominalValue; public Double nominalValue;
@ApiModelProperty(value = "Идентификатор валюты номинала", example = "1000") @ApiModelProperty(value = "Идентификатор валюты номинала", example = "1000")
@JsonProperty @JsonProperty
public Long nominalCurrencyId; public String nominalCurrency;
@ApiModelProperty(value = "Идентификатор типа инструмента", example = "ABCD") @ApiModelProperty(value = "Идентификатор типа инструмента", example = "ABCD")
@JsonProperty @JsonProperty
public String instrumentType; public String instrumentType;
@ -59,7 +59,7 @@ public class MoneyMarketSecurityNewAction implements IAction<MoneyMarketSecurity
req.setStartDate(this.getStartDate()); req.setStartDate(this.getStartDate());
req.setEndDate(this.getEndDate()); req.setEndDate(this.getEndDate());
req.setNominalValue(this.getNominalValue()); req.setNominalValue(this.getNominalValue());
req.setNominalCurrencyId(this.getNominalCurrencyId()); req.setNominalCurrency(this.getNominalCurrency());
req.setInstrumentType(this.getInstrumentType()); req.setInstrumentType(this.getInstrumentType());
req.setFullName(this.getFullName()); req.setFullName(this.getFullName());
req.setSecuritySymbol(this.getSecuritySymbol()); req.setSecuritySymbol(this.getSecuritySymbol());
@ -97,12 +97,12 @@ public class MoneyMarketSecurityNewAction implements IAction<MoneyMarketSecurity
this.nominalValue = nominalValue; this.nominalValue = nominalValue;
} }
public Long getNominalCurrencyId() { public String getNominalCurrency() {
return nominalCurrencyId; return nominalCurrency;
} }
public void setNominalCurrencyId(Long nominalCurrencyId) { public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrencyId = nominalCurrencyId; this.nominalCurrency = nominalCurrency;
} }
public String getInstrumentType() { public String getInstrumentType() {

View file

@ -24,9 +24,9 @@ public class MoneyMarketSecurityUpdateAction implements IAction<MoneyMarketSecur
@ApiModelProperty(value = "Номинал", example = "20.5") @ApiModelProperty(value = "Номинал", example = "20.5")
@JsonProperty @JsonProperty
public Double nominalValue; public Double nominalValue;
@ApiModelProperty(value = "Идентификатор валюты номинала", example = "1000") @ApiModelProperty(value = "Валюта номинала", example = "RUB")
@JsonProperty @JsonProperty
public Long nominalCurrencyId; public String nominalCurrency;
@ApiModelProperty(value = "Идентификатор типа инструмента", example = "ABCD") @ApiModelProperty(value = "Идентификатор типа инструмента", example = "ABCD")
@JsonProperty @JsonProperty
public String instrumentType; public String instrumentType;
@ -43,7 +43,7 @@ public class MoneyMarketSecurityUpdateAction implements IAction<MoneyMarketSecur
req.setId(this.getId()); req.setId(this.getId());
req.setEndDate(this.getEndDate()); req.setEndDate(this.getEndDate());
req.setNominalValue(this.getNominalValue()); req.setNominalValue(this.getNominalValue());
req.setNominalCurrencyId(this.getNominalCurrencyId()); req.setNominalCurrency(this.getNominalCurrency());
req.setInstrumentType(this.getInstrumentType()); req.setInstrumentType(this.getInstrumentType());
req.setFullName(this.getFullName()); req.setFullName(this.getFullName());
req.setLotSize(this.getLotSize()); req.setLotSize(this.getLotSize());
@ -73,12 +73,12 @@ public class MoneyMarketSecurityUpdateAction implements IAction<MoneyMarketSecur
this.nominalValue = nominalValue; this.nominalValue = nominalValue;
} }
public Long getNominalCurrencyId() { public String getNominalCurrency() {
return nominalCurrencyId; return nominalCurrency;
} }
public void setNominalCurrencyId(Long nominalCurrencyId) { public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrencyId = nominalCurrencyId; this.nominalCurrency = nominalCurrency;
} }
public String getInstrumentType() { public String getInstrumentType() {

View file

@ -39,8 +39,8 @@ public class CommonGetAllResponse extends BasicSpcexResponse {
public void fromEntity(Collection<Map<String, Object>> anyObjectFields) { public void fromEntity(Collection<Map<String, Object>> anyObjectFields) {
var payload = this.getPayload(); var payload = this.getPayload();
for (Map<String, Object> moneyMarketSecurity : anyObjectFields) { for (Map<String, Object> allObjFields : anyObjectFields) {
payload.getItems().add(moneyMarketSecurity); payload.getItems().add(allObjFields);
} }
} }
} }

View file

@ -20,18 +20,6 @@ public class BankAccountBackendGetAll extends BasicSpcexResponse {
@ApiModelProperty(value = "Полезная нагрузка") @ApiModelProperty(value = "Полезная нагрузка")
private BankAccountBackendPayload payload = new BankAccountBackendPayload(); private BankAccountBackendPayload payload = new BankAccountBackendPayload();
private static class BankAccountBackendPayload {
private List<BankAccountBackendGetFields> items = new ArrayList<>();
public List<BankAccountBackendGetFields> getItems() {
return items;
}
public void setItems(List<BankAccountBackendGetFields> items) {
this.items = items;
}
}
public BankAccountBackendPayload getPayload() { public BankAccountBackendPayload getPayload() {
return payload; return payload;
} }
@ -57,9 +45,20 @@ public class BankAccountBackendGetAll extends BasicSpcexResponse {
singleItem.setSwiftCode(bankAccount.getSwiftCode()); singleItem.setSwiftCode(bankAccount.getSwiftCode());
singleItem.setTaxpayerIdentificationNumber(bankAccount.getTaxpayerIdentificationNumber()); singleItem.setTaxpayerIdentificationNumber(bankAccount.getTaxpayerIdentificationNumber());
singleItem.setTaxRegistrationReasonCode(bankAccount.getTaxRegistrationReasonCode()); singleItem.setTaxRegistrationReasonCode(bankAccount.getTaxRegistrationReasonCode());
singleItem.setAccount(bankAccount.getAccount());
payload.getItems().add(singleItem); payload.getItems().add(singleItem);
} }
} }
private static class BankAccountBackendPayload {
private List<BankAccountBackendGetFields> items = new ArrayList<>();
public List<BankAccountBackendGetFields> getItems() {
return items;
}
public void setItems(List<BankAccountBackendGetFields> items) {
this.items = items;
}
}
} }

View file

@ -8,6 +8,7 @@ import ru.spcex.clearing.backendapi.controller.response.BasicSpcexResponse;
/** /**
* Банковские реквизиты для перечисления денежных средств * Банковские реквизиты для перечисления денежных средств
*
* @ApiModel(description = "Ответ в результате отправки операции в топик Kafka.") * @ApiModel(description = "Ответ в результате отправки операции в топик Kafka.")
* @ApiModelProperty(value = "Информация о принятом запросе") * @ApiModelProperty(value = "Информация о принятом запросе")
**/ **/
@ -42,7 +43,6 @@ public class BankAccountBackendGetById extends BasicSpcexResponse {
payload.setSwiftCode(bankAccount.getSwiftCode()); payload.setSwiftCode(bankAccount.getSwiftCode());
payload.setTaxpayerIdentificationNumber(bankAccount.getTaxpayerIdentificationNumber()); payload.setTaxpayerIdentificationNumber(bankAccount.getTaxpayerIdentificationNumber());
payload.setTaxRegistrationReasonCode(bankAccount.getTaxRegistrationReasonCode()); payload.setTaxRegistrationReasonCode(bankAccount.getTaxRegistrationReasonCode());
payload.setAccount(bankAccount.getAccount());
} }
} }

View file

@ -43,9 +43,6 @@ public class BankAccountBackendGetFields {
@JsonProperty @JsonProperty
@ApiModelProperty(value = "", example = "") @ApiModelProperty(value = "", example = "")
private String taxRegistrationReasonCode; private String taxRegistrationReasonCode;
@JsonProperty
@ApiModelProperty(value = "", example = "")
private String account;
public Long getId() { public Long getId() {
return id; return id;
@ -150,12 +147,4 @@ public class BankAccountBackendGetFields {
public void setTaxRegistrationReasonCode(String value) { public void setTaxRegistrationReasonCode(String value) {
this.taxRegistrationReasonCode = value; this.taxRegistrationReasonCode = value;
} }
public String getAccount() {
return account;
}
public void setAccount(String value) {
this.account = value;
}
} }

View file

@ -17,18 +17,6 @@ public class ClearingCalendarBackendGetAll extends BasicSpcexResponse {
@ApiModelProperty(value = "Полезная нагрузка") @ApiModelProperty(value = "Полезная нагрузка")
private ClearingCalendarBackendPayload payload = new ClearingCalendarBackendPayload(); private ClearingCalendarBackendPayload payload = new ClearingCalendarBackendPayload();
private static class ClearingCalendarBackendPayload {
private List<TradingCalendarBackendGetFields> items = new ArrayList<>();
public List<TradingCalendarBackendGetFields> getItems() {
return items;
}
public void setItems(List<TradingCalendarBackendGetFields> items) {
this.items = items;
}
}
public ClearingCalendarBackendPayload getPayload() { public ClearingCalendarBackendPayload getPayload() {
return payload; return payload;
} }
@ -44,11 +32,22 @@ public class ClearingCalendarBackendGetAll extends BasicSpcexResponse {
singleItem.setId(tradingCalendar.getId()); singleItem.setId(tradingCalendar.getId());
singleItem.setClearingDate(tradingCalendar.getClearingDate()); singleItem.setClearingDate(tradingCalendar.getClearingDate());
singleItem.setCompanyId(tradingCalendar.getCompanyId()); singleItem.setCompanyId(tradingCalendar.getCompanyId());
singleItem.setTradingStatus(tradingCalendar.getTradingStatus()); singleItem.setDayStatus(tradingCalendar.getDayStatus());
singleItem.setCreated(tradingCalendar.getCreated()); singleItem.setCreated(tradingCalendar.getCreated());
singleItem.setUpdated(tradingCalendar.getUpdated()); singleItem.setUpdated(tradingCalendar.getUpdated());
payload.getItems().add(singleItem); payload.getItems().add(singleItem);
} }
} }
private static class ClearingCalendarBackendPayload {
private List<TradingCalendarBackendGetFields> items = new ArrayList<>();
public List<TradingCalendarBackendGetFields> getItems() {
return items;
}
public void setItems(List<TradingCalendarBackendGetFields> items) {
this.items = items;
}
}
} }

View file

@ -17,18 +17,6 @@ public class SchedulerAllTodayBackendGetAll extends BasicSpcexResponse {
@ApiModelProperty(value = "Полезная нагрузка") @ApiModelProperty(value = "Полезная нагрузка")
private SchedulerAllTodayBackendPayload payload = new SchedulerAllTodayBackendPayload(); private SchedulerAllTodayBackendPayload payload = new SchedulerAllTodayBackendPayload();
private static class SchedulerAllTodayBackendPayload {
private List<SchedulerAllTodayBackendGetFields> items = new ArrayList<>();
public List<SchedulerAllTodayBackendGetFields> getItems() {
return items;
}
public void setItems(List<SchedulerAllTodayBackendGetFields> items) {
this.items = items;
}
}
public SchedulerAllTodayBackendPayload getPayload() { public SchedulerAllTodayBackendPayload getPayload() {
return payload; return payload;
} }
@ -48,10 +36,22 @@ public class SchedulerAllTodayBackendGetAll extends BasicSpcexResponse {
singleItem.setMarket(schedulerAllToday.getMarket()); singleItem.setMarket(schedulerAllToday.getMarket());
singleItem.setTaskStatus(schedulerAllToday.getTaskStatus()); singleItem.setTaskStatus(schedulerAllToday.getTaskStatus());
singleItem.setSecurityId(schedulerAllToday.getSecurityId()); singleItem.setSecurityId(schedulerAllToday.getSecurityId());
singleItem.setSource(schedulerAllToday.getSource()); singleItem.setSource(schedulerAllToday.getParent());
singleItem.setOrigId(schedulerAllToday.getOrigId()); singleItem.setOrigId(schedulerAllToday.getParentId());
payload.getItems().add(singleItem); payload.getItems().add(singleItem);
} }
} }
private static class SchedulerAllTodayBackendPayload {
private List<SchedulerAllTodayBackendGetFields> items = new ArrayList<>();
public List<SchedulerAllTodayBackendGetFields> getItems() {
return items;
}
public void setItems(List<SchedulerAllTodayBackendGetFields> items) {
this.items = items;
}
}
} }

View file

@ -17,7 +17,7 @@ public class TradingCalendarBackendGetFields {
@JsonProperty @JsonProperty
private Long companyId; private Long companyId;
@JsonProperty @JsonProperty
private String tradingStatus; private String dayStatus;
@JsonProperty @JsonProperty
@JsonSerialize(using = InstantSerializer.class) @JsonSerialize(using = InstantSerializer.class)
private Instant created; private Instant created;
@ -49,12 +49,12 @@ public class TradingCalendarBackendGetFields {
this.companyId = companyId; this.companyId = companyId;
} }
public String getTradingStatus() { public String getDayStatus() {
return tradingStatus; return dayStatus;
} }
public void setTradingStatus(String tradingStatus) { public void setDayStatus(String dayStatus) {
this.tradingStatus = tradingStatus; this.dayStatus = dayStatus;
} }
public Instant getCreated() { public Instant getCreated() {

View file

@ -18,18 +18,6 @@ public class MoneyMarketSecurityBackendGetAllOld extends BasicSpcexResponse {
@ApiModelProperty(value = "Полезная нагрузка") @ApiModelProperty(value = "Полезная нагрузка")
private MoneyMarketSecurityBackendPayload payload = new MoneyMarketSecurityBackendPayload(); private MoneyMarketSecurityBackendPayload payload = new MoneyMarketSecurityBackendPayload();
private static class MoneyMarketSecurityBackendPayload {
private List<MoneyMarketSecurityBackendGetFields> items = new ArrayList<>();
public List<MoneyMarketSecurityBackendGetFields> getItems() {
return items;
}
public void setItems(List<MoneyMarketSecurityBackendGetFields> items) {
this.items = items;
}
}
public MoneyMarketSecurityBackendPayload getPayload() { public MoneyMarketSecurityBackendPayload getPayload() {
return payload; return payload;
} }
@ -52,8 +40,21 @@ public class MoneyMarketSecurityBackendGetAllOld extends BasicSpcexResponse {
singleItem.setInstrumentType(moneyMarketSecurity.getInstrumentType()); singleItem.setInstrumentType(moneyMarketSecurity.getInstrumentType());
singleItem.setFullName(moneyMarketSecurity.getFullName()); singleItem.setFullName(moneyMarketSecurity.getFullName());
singleItem.setSecuritySymbol(moneyMarketSecurity.getSecuritySymbol()); singleItem.setSecuritySymbol(moneyMarketSecurity.getSecuritySymbol());
singleItem.setTermType(moneyMarketSecurity.getTermType());
payload.getItems().add(singleItem); payload.getItems().add(singleItem);
} }
} }
private static class MoneyMarketSecurityBackendPayload {
private List<MoneyMarketSecurityBackendGetFields> items = new ArrayList<>();
public List<MoneyMarketSecurityBackendGetFields> getItems() {
return items;
}
public void setItems(List<MoneyMarketSecurityBackendGetFields> items) {
this.items = items;
}
}
} }

View file

@ -23,13 +23,15 @@ public class MoneyMarketSecurityBackendGetFields {
@JsonProperty @JsonProperty
private BigDecimal nominalValue; private BigDecimal nominalValue;
@JsonProperty @JsonProperty
private Long nominalCurrency; // (linked to currencyCode) private String nominalCurrency; // (linked to currencyCode)
@JsonProperty @JsonProperty
private String instrumentType; // (linked to instrumentType) private String instrumentType; // (linked to instrumentType)
@JsonProperty @JsonProperty
private String fullName; private String fullName;
@JsonProperty @JsonProperty
private String securitySymbol; private String securitySymbol;
@JsonProperty
private String termType;
public Long getId() { public Long getId() {
return id; return id;
@ -79,11 +81,11 @@ public class MoneyMarketSecurityBackendGetFields {
this.nominalValue = nominalValue; this.nominalValue = nominalValue;
} }
public Long getNominalCurrency() { public String getNominalCurrency() {
return nominalCurrency; return nominalCurrency;
} }
public void setNominalCurrency(Long nominalCurrency) { public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrency = nominalCurrency; this.nominalCurrency = nominalCurrency;
} }
@ -110,4 +112,12 @@ public class MoneyMarketSecurityBackendGetFields {
public void setSecuritySymbol(String securitySymbol) { public void setSecuritySymbol(String securitySymbol) {
this.securitySymbol = securitySymbol; this.securitySymbol = securitySymbol;
} }
public String getTermType() {
return termType;
}
public void setTermType(String termType) {
this.termType = termType;
}
} }

View file

@ -40,7 +40,7 @@ public class AuthAuditSuccessLoginHandler implements AuthenticationSuccessHandle
.getPreferredUsername(); .getPreferredUsername();
Set<String> roles = details.getRoles(); Set<String> roles = details.getRoles();
if (roles.contains(Admin) || roles.contains(Security) || roles.contains(Superviser)) { if (roles.contains(Admin.getKey()) || roles.contains(Security.getKey()) || roles.contains(Superviser.getKey())) {
String clientIp = request != null ? request.getRemoteAddr() : null; String clientIp = request != null ? request.getRemoteAddr() : null;
String serverIp = request != null ? request.getLocalAddr() : null; String serverIp = request != null ? request.getLocalAddr() : null;
userAutoCreation.sendAuthSuccessEvent(username, roles, clientIp, serverIp); userAutoCreation.sendAuthSuccessEvent(username, roles, clientIp, serverIp);

View file

@ -5,20 +5,16 @@ server.ssl.key-store=classpath:keystore/client.p12
server.ssl.key-store-password=Aa123456 server.ssl.key-store-password=Aa123456
server.ssl.enabled=true server.ssl.enabled=true
spring.main.web-application-type=servlet spring.main.web-application-type=servlet
backend-api.example-setting=test backend-api.example-setting=test
backend-api.hazelcast.cluster-members=127.0.0.1:5701 backend-api.hazelcast.cluster-members=127.0.0.1:5701
backend-api.hazelcast.login=dev backend-api.hazelcast.login=dev
backend-api.hazelcast.password=dev-pass backend-api.hazelcast.password=dev-pass
backend-api.kafka-producer.bootstrap-servers=localhost:9092 backend-api.kafka-producer.bootstrap-servers=localhost:9092
backend-api.kafka-producer.acks=all backend-api.kafka-producer.acks=all
backend-api.kafka-producer.retries=0 backend-api.kafka-producer.retries=0
backend-api.kafka-producer.batch-size=16384 backend-api.kafka-producer.batch-size=16384
backend-api.kafka-producer.linger-ms=1 backend-api.kafka-producer.linger-ms=1
backend-api.kafka-producer.buffer-memory=33554432 backend-api.kafka-producer.buffer-memory=33554432
backend-api.kafka-consumer.bootstrap-servers=localhost:9092 backend-api.kafka-consumer.bootstrap-servers=localhost:9092
backend-api.kafka-consumer.group-id=dev-group-backend-api backend-api.kafka-consumer.group-id=dev-group-backend-api
backend-api.kafka-consumer.enable-auto-commit=true backend-api.kafka-consumer.enable-auto-commit=true
@ -26,10 +22,7 @@ backend-api.kafka-consumer.session-timeout-ms=30000
backend-api.kafka-consumer.auto-offset-reset=latest backend-api.kafka-consumer.auto-offset-reset=latest
backend-api.kafka-consumer.linger-ms=1 backend-api.kafka-consumer.linger-ms=1
backend-api.kafka-consumer.buffer-memory=33554432 backend-api.kafka-consumer.buffer-memory=33554432
backend-api.security.authorization-disabled=false backend-api.security.authorization-disabled=false
##keycloak ##keycloak
##keycloak.auth-server-url=http://10.200.200.147:8080/ ##keycloak.auth-server-url=http://10.200.200.147:8080/
##keycloak.realm=master ##keycloak.realm=master

View file

@ -112,7 +112,7 @@ public class Sdf09Executor extends AbstractExecutor<SDf09> {
statement.setSenderId(Sender.Prc.getId()); statement.setSenderId(Sender.Prc.getId());
statement.setCreated(Instant.now()); statement.setCreated(Instant.now());
statement.setClearingDate(LocalDate.now()); statement.setClearingDate(LocalDate.now());
statement.setStatementType(StatementType.full.getKey()); statement.setStatementType(StatementType.incr.getKey());
statement.setAccountId(account.getId()); statement.setAccountId(account.getId());
statement.setAccount(sdf09.getAccount()); statement.setAccount(sdf09.getAccount());
statement.setInOutDirection(InOutDirection.in.getKey()); statement.setInOutDirection(InOutDirection.in.getKey());

View file

@ -3,9 +3,6 @@ package ru.clearing.classes.statics.data.account;
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 ru.clearing.classes.ConstSerializable;
import ru.spcex.platform.classes.base.SpcexObjectBase;
/** /**
* Банковские реквизиты для перечисления денежных средств * Банковские реквизиты для перечисления денежных средств
* <p> * <p>
@ -26,7 +23,6 @@ public class BankAccount extends SpcexObjectBase {
private String swiftCode; private String swiftCode;
private String taxpayerIdentificationNumber; private String taxpayerIdentificationNumber;
private String taxRegistrationReasonCode; private String taxRegistrationReasonCode;
private String account;
public Long getAccountId() { public Long getAccountId() {
return accountId; return accountId;
@ -123,13 +119,4 @@ public class BankAccount extends SpcexObjectBase {
public void setTaxRegistrationReasonCode(String value) { public void setTaxRegistrationReasonCode(String value) {
this.taxRegistrationReasonCode = value; this.taxRegistrationReasonCode = value;
} }
public String getAccount() {
return account;
}
public void setAccount(String value) {
this.account = value;
}
} }

View file

@ -8,9 +8,9 @@ import java.time.Instant;
import java.time.LocalTime; import java.time.LocalTime;
/** /**
* Счета * Реестр сделок допущенных к клирингу
* <p> * <p>
* DB table: ADMITTED_DEAL * DB table: ADMITTED_DEAL_REGISTER
**/ **/
public class AdmittedDealRegister extends BusinessObject { public class AdmittedDealRegister extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;

View file

@ -16,7 +16,8 @@ public class MoneyMarketSecurity extends Security {
private LocalDate startDate; private LocalDate startDate;
private LocalDate endDate; private LocalDate endDate;
private BigDecimal nominalValue; private BigDecimal nominalValue;
private Long nominalCurrency; // (linked to currencyCode) private String nominalCurrency; // (linked to currencyCode)
private String termType;
public Long getSecurityId() { public Long getSecurityId() {
return securityId; return securityId;
@ -58,11 +59,19 @@ public class MoneyMarketSecurity extends Security {
this.nominalValue = nominalValue; this.nominalValue = nominalValue;
} }
public Long getNominalCurrency() { public String getNominalCurrency() {
return nominalCurrency; return nominalCurrency;
} }
public void setNominalCurrency(Long nominalCurrency) { public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrency = nominalCurrency; this.nominalCurrency = nominalCurrency;
} }
public String getTermType() {
return termType;
}
public void setTermType(String termType) {
this.termType = termType;
}
} }

View file

@ -8,14 +8,14 @@ import java.time.LocalDate;
/** /**
* Торговые и неторговые дни * Торговые и неторговые дни
* <p> * <p>
* DB table: TRADING_CALENDAR * DB table: CLEARING_CALENDAR
**/ **/
public class ClearingCalendar 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 dayStatus;
public LocalDate getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
@ -33,12 +33,12 @@ public class ClearingCalendar extends BusinessObject {
this.companyId = value; this.companyId = value;
} }
public String getTradingStatus() { public String getDayStatus() {
return tradingStatus; return dayStatus;
} }
public void setTradingStatus(String value) { public void setDayStatus(String value) {
this.tradingStatus = value; this.dayStatus = value;
} }
} }

View file

@ -6,7 +6,7 @@ import ru.clearing.classes.objects.BusinessObject;
/** /**
* Запуск задачи * Запуск задачи
* <p> * <p>
* DB table: TASK_RUNNER * DB table: LAUNCHER
**/ **/
public class Launcher extends BusinessObject { public class Launcher extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;

View file

@ -7,9 +7,9 @@ import java.time.LocalDate;
import java.time.LocalTime; import java.time.LocalTime;
/** /**
* Расписание планировщика * Расписание
* <p> * <p>
* DB table: SCHEDULER * DB table: PLANNER
**/ **/
public class Planner extends BusinessObject { public class Planner extends BusinessObject {
private static final long serialVersionUID = ConstSerializable.serialVersionUID; private static final long serialVersionUID = ConstSerializable.serialVersionUID;

View file

@ -20,8 +20,8 @@ public class PlannerAllToday extends SpcexObjectBase {
private String market; private String market;
private String taskStatus; private String taskStatus;
private Long securityId; private Long securityId;
private String source; private String parent;
private Long origId; private Long parentId;
public String getTask() { public String getTask() {
return task; return task;
@ -71,20 +71,20 @@ public class PlannerAllToday extends SpcexObjectBase {
this.securityId = value; this.securityId = value;
} }
public String getSource() { public String getParent() {
return source; return parent;
} }
public void setSource(String value) { public void setParent(String value) {
this.source = value; this.parent = value;
} }
public Long getOrigId() { public Long getParentId() {
return origId; return parentId;
} }
public void setOrigId(Long value) { public void setParentId(Long value) {
this.origId = value; this.parentId = value;
} }
} }

View file

@ -6,118 +6,33 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf03;
import ru.clearing.classes.statics.data.sdf.SDf11;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.SdfClearingRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.platform.enumeration.TransactionStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.AbstractMap;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@Service @Service
@EnableScheduling @EnableScheduling
public class ClearingService { public class ClearingService {
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<PaymentInstruction> paymentImdgs;
private final ExecutorService executor; private final ExecutorService executor;
private final ImdgId idGenerator; private final SdfCreatorBySTLDPayment sdfCreator;
private final PaymentInstructionSorter senderGroupSorter; private final PaymentUpdateBySdf04 paymentUpdater;
private final Imdg<SDf03> sdf03Imdg;
private final Imdg<SDf11> sdf11Imdg;
private final KafkaSender kafkaSender;
@Autowired @Autowired
public ClearingService(ImdgProvider imdgProvider, PaymentInstructionSorter senderGroupSorter, KafkaSender kafkaSender) { public ClearingService(SdfCreatorBySTLDPayment sdfCreator, PaymentUpdateBySdf04 paymentUpdater) {
this.paymentImdgs = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class); this.sdfCreator = sdfCreator;
this.sdf03Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf03, SDf03.class); this.paymentUpdater = paymentUpdater;
this.sdf11Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf11, SDf11.class);
this.idGenerator = imdgProvider.getImdgIdGenerator();
this.senderGroupSorter = senderGroupSorter;
this.kafkaSender = kafkaSender;
this.executor = Executors.newSingleThreadExecutor(); this.executor = Executors.newSingleThreadExecutor();
} }
@Scheduled(cron = "${clearing-service.scheduler.check-payment-instruction}") @Scheduled(cron = "${clearing-service.scheduler.check-payment-instruction}")
public void run() { public void sdfCreate() {
executor.execute(this::createSdfFromPaymentInstructionSTLD); log.info("creating sdf03/11 from STLD payments task added to queue");
executor.execute(sdfCreator::createSdfFromPaymentInstructionSTLD);
} }
private void createSdfFromPaymentInstructionSTLD() { public void paymentUpdateBySdf04(Long sdf04GroupId) {
final boolean[] anyError = {false}; log.info("adding sdf03/11 from STLD payments task to queue");
//generationId для созадаваемых Sdf03/Sdf11 executor.execute(() -> paymentUpdater.updatePayments(sdf04GroupId));
Long generationId = idGenerator.nextId();
//выгружаем PaymentInstructions с нужным статусом
Map<Long, PaymentBatchInfo> paymentBySender = paymentImdgs.getCollectionObjectsByFieldValues(
Map.of("transactionStatus", TransactionStatus.stld.getKey()))
.stream()
//группируем по компаниям (fixme sorted убрать?)
.sorted(Comparator.comparing(PaymentInstruction::getSenderId))
.collect(Collectors.groupingBy(PaymentInstruction::getSenderId))
.entrySet()
.stream()
//результатом работы senderGroupSorter будет Map<senderId -> PaymentBatchInfo>
//PaymentBatchInfo содержит возможную ошибку, при необходимости отсортированные Payment
//тип ClearingMemberCategory
.map(entry -> {
Long senderId = entry.getKey();
List<PaymentInstruction> pmtInstrcs = entry.getValue();
PaymentBatchInfo senderInfo = senderGroupSorter.sortCompanyPayments(generationId, senderId, pmtInstrcs);
if (senderInfo.getError() != null) {
anyError[0] = true;
}
return new AbstractMap.SimpleEntry<>(senderId, senderInfo);
})
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
//save SDF03/SDF11
for (var entry : paymentBySender.entrySet()) {
PaymentBatchInfo senderPayments = entry.getValue();
saveSdfAnSendToKafka(senderPayments, generationId);
}
//update PaymentInstruction.transactionStatus
for (var entry : paymentBySender.entrySet()) {
PaymentBatchInfo batch = entry.getValue();
//все PaymentInstruction.transactionStatus в batch с error != null
//уже проапдейтились в методе sortCompanyPayments
if (batch.getError() == null) {
TransactionStatus stat = anyError[0] ? TransactionStatus.notSent : TransactionStatus.sent;
batch.getOrderedPaymentInstructions()
.forEach(paymentInstruction -> {
paymentInstruction.setTransactionStatus(stat.getKey());
paymentImdgs.update(paymentInstruction);
});
}
}
}
private void saveSdfAnSendToKafka(PaymentBatchInfo batch, Long generationId) {
SdfClearingRequest kafkaMessage = new SdfClearingRequest();
kafkaMessage.setGroupId(generationId);
switch (batch.getCategoryD()) {
case I -> {
batch.getOrderedPaymentInstructions()
.map(paymentInstruction -> Sdf03Builder.buildSdf03(paymentInstruction, generationId))
.forEach(sdf03Imdg::insert);
kafkaSender.sendRequestToQueue(Consts.SDF03_PROCESS, kafkaMessage);
}
case B -> {
batch.getOrderedPaymentInstructions()
.map(paymentInstruction -> Sdf11Builder.buildSdf11(paymentInstruction, generationId))
.forEach(sdf11Imdg::insert);
kafkaSender.sendRequestToQueue(Consts.SDF11_PROCESS, kafkaMessage);
}
}
} }
} }

View file

@ -0,0 +1,47 @@
package ru.spcex.clearing.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf04;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.platform.enumeration.TransactionStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.Collection;
import java.util.Map;
@Component
public class PaymentUpdateBySdf04 {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<PaymentInstruction> paymentImdgs;
private final Imdg<SDf04> sdf04Imdg;
public PaymentUpdateBySdf04(ImdgProvider imdgProvider) {
this.paymentImdgs = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
this.sdf04Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf04, SDf04.class);
}
public void updatePayments(Long sdf04GroupId) {
Collection<SDf04> sDf04s = sdf04Imdg.getCollectionObjectsByFieldValues(Map.of("generationId", sdf04GroupId));
for (SDf04 sDf04 : sDf04s) {
String docnm_ref = sDf04.getDocnm_ref();
long paymentId;
try {
paymentId = Long.parseLong(docnm_ref);
} catch (NumberFormatException e) {
log.warn("sdf04.id={} cannot parse docnm_ref={} as payment id", sDf04.getId(), sDf04.getDocnm_ref());
continue;
}
PaymentInstruction payment = paymentImdgs.getSingleObjectByFieldValues(Map.of("id", paymentId));
if ("OK!".equals(sDf04.getImp_result())) {
payment.setTransactionStatus(TransactionStatus.ok.getKey());
} else {
payment.setTransactionStatus(TransactionStatus.fail.getKey());
}
paymentImdgs.update(payment);
}
}
}

View file

@ -0,0 +1,28 @@
package ru.spcex.clearing.service;
import org.apache.kafka.clients.consumer.Consumer;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.Sdf04Request;
import ru.spcex.clearing.platform.messaging.service.QueueConsumer;
@Service
public class Sdf04Receiver extends QueueConsumer implements InitializingBean {
private final ClearingService clearingService;
public Sdf04Receiver(Consumer<String, Object> kafkaQueue, ClearingService clearingService) {
super(kafkaQueue);
this.clearingService = clearingService;
}
@Override
public void afterPropertiesSet() {
callback(Sdf04Request.class)
.setConsumer(event -> {
Sdf04Request requestPayload = event.getRequestPayload();
clearingService.paymentUpdateBySdf04(requestPayload.getGroupId());
})
.forDestination(Consts.SDF04_PROCESS, callbacks::put);
init();
}
}

View file

@ -0,0 +1,112 @@
package ru.spcex.clearing.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf03;
import ru.clearing.classes.statics.data.sdf.SDf11;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.platform.messaging.domain.Consts;
import ru.spcex.clearing.platform.messaging.domain.cud.clearing.SdfClearingRequest;
import ru.spcex.clearing.platform.messaging.service.sender.KafkaSender;
import ru.spcex.clearing.service.order.PaymentBatchInfo;
import ru.spcex.clearing.service.order.PaymentInstructionSorter;
import ru.spcex.clearing.service.order.Sdf03Builder;
import ru.spcex.clearing.service.order.Sdf11Builder;
import ru.spcex.platform.enumeration.TransactionStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgId;
import ru.spcex.platform.imdg.api.ImdgProvider;
import java.util.AbstractMap;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Component
public class SdfCreatorBySTLDPayment {
private final Imdg<PaymentInstruction> paymentImdgs;
private final ImdgId idGenerator;
private final PaymentInstructionSorter senderGroupSorter;
private final Imdg<SDf03> sdf03Imdg;
private final Imdg<SDf11> sdf11Imdg;
private final KafkaSender kafkaSender;
@Autowired
public SdfCreatorBySTLDPayment(ImdgProvider imdgProvider, PaymentInstructionSorter senderGroupSorter, KafkaSender kafkaSender) {
this.paymentImdgs = imdgProvider.getImdg(IMDGDistributedNames.Map_PaymentInstruction, PaymentInstruction.class);
this.sdf03Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf03, SDf03.class);
this.sdf11Imdg = imdgProvider.getImdg(IMDGDistributedNames.Map_SDf11, SDf11.class);
this.idGenerator = imdgProvider.getImdgIdGenerator();
this.senderGroupSorter = senderGroupSorter;
this.kafkaSender = kafkaSender;
}
public void createSdfFromPaymentInstructionSTLD() {
final boolean[] anyError = {false};
//generationId для созадаваемых Sdf03/Sdf11
Long generationId = idGenerator.nextId();
//выгружаем PaymentInstructions с нужным статусом
Map<Long, PaymentBatchInfo> paymentBySender = paymentImdgs.getCollectionObjectsByFieldValues(
Map.of("transactionStatus", TransactionStatus.stld.getKey()))
.stream()
//группируем по компаниям (fixme sorted убрать?)
.sorted(Comparator.comparing(PaymentInstruction::getSenderId))
.collect(Collectors.groupingBy(PaymentInstruction::getSenderId))
.entrySet()
.stream()
//результатом работы senderGroupSorter будет Map<senderId -> PaymentBatchInfo>
//PaymentBatchInfo содержит возможную ошибку, при необходимости отсортированные Payment
//тип ClearingMemberCategory
.map(entry -> {
Long senderId = entry.getKey();
List<PaymentInstruction> pmtInstrcs = entry.getValue();
PaymentBatchInfo senderInfo = senderGroupSorter.sortCompanyPayments(generationId, senderId, pmtInstrcs);
if (senderInfo.getError() != null) {
anyError[0] = true;
}
return new AbstractMap.SimpleEntry<>(senderId, senderInfo);
})
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
//save SDF03/SDF11
for (var entry : paymentBySender.entrySet()) {
PaymentBatchInfo senderPayments = entry.getValue();
saveSdfAnSendToKafka(senderPayments, generationId);
}
//update PaymentInstruction.transactionStatus
for (var entry : paymentBySender.entrySet()) {
PaymentBatchInfo batch = entry.getValue();
//все PaymentInstruction.transactionStatus в batch с error != null
//уже проапдейтились в методе sortCompanyPayments
if (batch.getError() == null) {
TransactionStatus stat = anyError[0] ? TransactionStatus.notSent : TransactionStatus.sent;
batch.getOrderedPaymentInstructions()
.forEach(paymentInstruction -> {
paymentInstruction.setTransactionStatus(stat.getKey());
paymentImdgs.update(paymentInstruction);
});
}
}
}
private void saveSdfAnSendToKafka(PaymentBatchInfo batch, Long generationId) {
SdfClearingRequest kafkaMessage = new SdfClearingRequest();
kafkaMessage.setGroupId(generationId);
switch (batch.getCategoryD()) {
case I -> {
batch.getOrderedPaymentInstructions()
.map(paymentInstruction -> Sdf03Builder.buildSdf03(paymentInstruction, generationId))
.forEach(sdf03Imdg::insert);
kafkaSender.sendRequestToQueue(Consts.SDF03_PROCESS, kafkaMessage);
}
case B -> {
batch.getOrderedPaymentInstructions()
.map(paymentInstruction -> Sdf11Builder.buildSdf11(paymentInstruction, generationId))
.forEach(sdf11Imdg::insert);
kafkaSender.sendRequestToQueue(Consts.SDF11_PROCESS, kafkaMessage);
}
}
}
}

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.service; package ru.spcex.clearing.service.order;
import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.spcex.platform.enumeration.ClearingMemberCategoryD; import ru.spcex.platform.enumeration.ClearingMemberCategoryD;

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.service; package ru.spcex.clearing.service.order;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -40,7 +40,7 @@ public class PaymentInstructionSorter {
this.messageResolver = messageResolver; this.messageResolver = messageResolver;
} }
PaymentBatchInfo sortCompanyPayments(Long generationId, Long senderId, List<PaymentInstruction> payments) { public PaymentBatchInfo sortCompanyPayments(Long generationId, Long senderId, List<PaymentInstruction> payments) {
PaymentBatchInfo batchInfo = new PaymentBatchInfo(); PaymentBatchInfo batchInfo = new PaymentBatchInfo();
log.info("processing PaymentInstruction's generationId={} senderId={} size={}", generationId, senderId, payments.size()); log.info("processing PaymentInstruction's generationId={} senderId={} size={}", generationId, senderId, payments.size());
ClearingMemberCategory category = clrngMmbrImdg.getSingleObjectByFieldValues(Map.of("companyId", senderId)); ClearingMemberCategory category = clrngMmbrImdg.getSingleObjectByFieldValues(Map.of("companyId", senderId));

View file

@ -1,7 +1,8 @@
package ru.spcex.clearing.service; package ru.spcex.clearing.service.order;
import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf03; import ru.clearing.classes.statics.data.sdf.SDf03;
import ru.spcex.clearing.service.SpecifUtil;
import ru.spcex.platform.enumeration.Sender; import ru.spcex.platform.enumeration.Sender;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;

View file

@ -1,7 +1,8 @@
package ru.spcex.clearing.service; package ru.spcex.clearing.service.order;
import ru.clearing.classes.statics.data.payment.PaymentInstruction; import ru.clearing.classes.statics.data.payment.PaymentInstruction;
import ru.clearing.classes.statics.data.sdf.SDf11; import ru.clearing.classes.statics.data.sdf.SDf11;
import ru.spcex.clearing.service.SpecifUtil;
import ru.spcex.platform.enumeration.Sender; import ru.spcex.platform.enumeration.Sender;
import ru.spcex.platform.utils.time.TimeUtil; import ru.spcex.platform.utils.time.TimeUtil;

View file

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

View file

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

View file

@ -28,7 +28,7 @@ public class BankAccountHistoryMapStore extends TemplateEventMapStore<BankAccoun
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID", return new String[]{"ID", "EVENT_TIME", "EVENT_USER_ID",
"BANK_ACCOUNT_ID", "ACCOUNT_ID", "BANK_IDENTIFICATION_CODE", "BANK_NAME", "CORRESPONDENT_ACCOUNT", "CORRESPONDENT_ACCOUNT_NAME", "CURRENCY", "DESTINATION", "IBAN", "INTERNATIONAL_TRANSFER_SIGN", "SWIFT_CODE", "TAXPAYER_IDENTIFICATION_NUMBER", "TAX_REGISTRATION_REASON_CODE", "ACCOUNT" "BANK_ACCOUNT_ID", "ACCOUNT_ID", "BANK_IDENTIFICATION_CODE", "BANK_NAME", "CORRESPONDENT_ACCOUNT", "CORRESPONDENT_ACCOUNT_NAME", "CURRENCY", "DESTINATION", "IBAN", "INTERNATIONAL_TRANSFER_SIGN", "SWIFT_CODE", "TAXPAYER_IDENTIFICATION_NUMBER", "TAX_REGISTRATION_REASON_CODE"
}; };
} }
@ -53,7 +53,6 @@ public class BankAccountHistoryMapStore extends TemplateEventMapStore<BankAccoun
object.getSwiftCode(), object.getSwiftCode(),
object.getTaxpayerIdentificationNumber(), object.getTaxpayerIdentificationNumber(),
object.getTaxRegistrationReasonCode(), object.getTaxRegistrationReasonCode(),
object.getAccount()
}; };
return args; return args;
} }

View file

@ -30,7 +30,7 @@ public class ClearingCalendarMapStore extends TemplateMapStore<ClearingCalendar>
@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", "DAY_STATUS"
}; };
} }
@ -42,7 +42,7 @@ public class ClearingCalendarMapStore extends TemplateMapStore<ClearingCalendar>
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.setDayStatus(resultSet.getObject("DAY_STATUS", String.class));
return object; return object;
} }
@ -54,7 +54,7 @@ public class ClearingCalendarMapStore extends TemplateMapStore<ClearingCalendar>
TimeUtil.toDateFromInstant(object.getUpdated()), TimeUtil.toDateFromInstant(object.getUpdated()),
TimeUtil.toDateFromLocalDate(object.getClearingDate()), TimeUtil.toDateFromLocalDate(object.getClearingDate()),
object.getCompanyId(), object.getCompanyId(),
object.getTradingStatus() object.getDayStatus()
}; };
return args; return args;
} }

View file

@ -37,7 +37,8 @@ public class CompanyMapStore extends BusinessObjectMapStore<Company> {
return new String[]{ return new String[]{
"id", "company_id", "corporation_sole_type", "country_code", "description", "id", "company_id", "corporation_sole_type", "country_code", "description",
"professional_sign", "legal_kind", "organization_type", "residence", "professional_sign", "legal_kind", "organization_type", "residence",
"short_name_eng", "full_name_eng", "short_name_eng", "full_name_eng", "short_name", "full_name", "trading_code",
"clearing_code", "registration_code"
}; };
} }
@ -113,6 +114,11 @@ public class CompanyMapStore extends BusinessObjectMapStore<Company> {
companyInfo.setResidence(rs.getString("RESIDENCE")); companyInfo.setResidence(rs.getString("RESIDENCE"));
companyInfo.setShortNameEng(rs.getString("SHORT_NAME_ENG")); companyInfo.setShortNameEng(rs.getString("SHORT_NAME_ENG"));
companyInfo.setFullNameEng(rs.getString("FULL_NAME_ENG")); companyInfo.setFullNameEng(rs.getString("FULL_NAME_ENG"));
companyInfo.setShortName(rs.getString("SHORT_NAME"));
companyInfo.setFullName(rs.getString("FULL_NAME"));
companyInfo.setTradingCode(rs.getString("TRADING_CODE"));
companyInfo.setClearingCode(rs.getString("CLEARING_CODE"));
companyInfo.setRegistrationCode(rs.getString("REGISTRATION_CODE"));
return companyInfo; return companyInfo;
} }
); );
@ -144,7 +150,12 @@ public class CompanyMapStore extends BusinessObjectMapStore<Company> {
companyInfo.getOrganizationType(), companyInfo.getOrganizationType(),
companyInfo.getResidence(), companyInfo.getResidence(),
companyInfo.getShortNameEng(), companyInfo.getShortNameEng(),
companyInfo.getFullNameEng() companyInfo.getFullNameEng(),
companyInfo.getShortName(),
companyInfo.getFullName(),
companyInfo.getTradingCode(),
companyInfo.getClearingCode(),
companyInfo.getRegistrationCode()
)); ));
return companyInfoArgs; return companyInfoArgs;
} }

View file

@ -29,7 +29,7 @@ public class BankAccountMapStore extends TemplateMapStore<BankAccount> {
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{ return new String[]{
"ID", "ACCOUNT_ID", "BANK_IDENTIFICATION_CODE", "BANK_NAME", "CORRESPONDENT_ACCOUNT", "CORRESPONDENT_ACCOUNT_NAME", "CURRENCY", "DESTINATION", "IBAN", "INTERNATIONAL_TRANSFER_SIGN", "SWIFT_CODE", "TAXPAYER_IDENTIFICATION_NUMBER", "TAX_REGISTRATION_REASON_CODE", "ACCOUNT" "ID", "ACCOUNT_ID", "BANK_IDENTIFICATION_CODE", "BANK_NAME", "CORRESPONDENT_ACCOUNT", "CORRESPONDENT_ACCOUNT_NAME", "CURRENCY", "DESTINATION", "IBAN", "INTERNATIONAL_TRANSFER_SIGN", "SWIFT_CODE", "TAXPAYER_IDENTIFICATION_NUMBER", "TAX_REGISTRATION_REASON_CODE"
}; };
} }
@ -49,7 +49,6 @@ public class BankAccountMapStore extends TemplateMapStore<BankAccount> {
object.setSwiftCode(resultSet.getObject("SWIFT_CODE", String.class)); object.setSwiftCode(resultSet.getObject("SWIFT_CODE", String.class));
object.setTaxpayerIdentificationNumber(resultSet.getObject("TAXPAYER_IDENTIFICATION_NUMBER", String.class)); object.setTaxpayerIdentificationNumber(resultSet.getObject("TAXPAYER_IDENTIFICATION_NUMBER", String.class));
object.setTaxRegistrationReasonCode(resultSet.getObject("TAX_REGISTRATION_REASON_CODE", String.class)); object.setTaxRegistrationReasonCode(resultSet.getObject("TAX_REGISTRATION_REASON_CODE", String.class));
object.setAccount(resultSet.getObject("ACCOUNT", String.class));
return object; return object;
} }
@ -69,7 +68,6 @@ public class BankAccountMapStore extends TemplateMapStore<BankAccount> {
object.getSwiftCode(), object.getSwiftCode(),
object.getTaxpayerIdentificationNumber(), object.getTaxpayerIdentificationNumber(),
object.getTaxRegistrationReasonCode(), object.getTaxRegistrationReasonCode(),
object.getAccount()
}; };
return args; return args;
} }

View file

@ -17,13 +17,13 @@ import java.util.Map;
@Component @Component
public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSecurity> { public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSecurity> {
private final String insertToSecurityStatement = makeInsertSql("SECURITY",
getFieldsSecurity(), "id");
public MoneyMarketSecurityMapStore(JdbcTemplate jdbcTemplate) { public MoneyMarketSecurityMapStore(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate); super(jdbcTemplate);
} }
private final String insertToSecurityStatement = makeInsertSql("SECURITY",
getFieldsSecurity(), "id");
@Override @Override
public String getTableName() { public String getTableName() {
return "MONEY_MARKET_SECURITY"; return "MONEY_MARKET_SECURITY";
@ -41,7 +41,7 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
@Override @Override
public String[] getFields() { public String[] getFields() {
return new String[]{"ID", "SECURITY_ID", "DESCRIPTION", "START_DATE", "END_DATE", "NOMINAL_VALUE", "NOMINAL_CURRENCY"}; return new String[]{"ID", "SECURITY_ID", "DESCRIPTION", "START_DATE", "END_DATE", "NOMINAL_VALUE", "NOMINAL_CURRENCY", "TERM_TYPE"};
} }
public String[] getFieldsSecurity() { public String[] getFieldsSecurity() {
@ -70,7 +70,8 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
object.setStartDate(getLocalDateFromSqlDate(resultSet, "START_DATE")); object.setStartDate(getLocalDateFromSqlDate(resultSet, "START_DATE"));
object.setEndDate(getLocalDateFromSqlDate(resultSet, "END_DATE")); object.setEndDate(getLocalDateFromSqlDate(resultSet, "END_DATE"));
object.setNominalValue(resultSet.getObject("NOMINAL_VALUE", BigDecimal.class)); object.setNominalValue(resultSet.getObject("NOMINAL_VALUE", BigDecimal.class));
object.setNominalCurrency(resultSet.getObject("NOMINAL_CURRENCY", Long.class)); object.setNominalCurrency(resultSet.getObject("NOMINAL_CURRENCY", String.class));
object.setTermType(resultSet.getObject("TERM_TYPE", String.class));
fillBySecurity(object, object.getSecurityId()); fillBySecurity(object, object.getSecurityId());
return object; return object;
} }
@ -79,9 +80,16 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
List<MoneyMarketSecurity> resouts = jdbcTemplate.query( List<MoneyMarketSecurity> resouts = jdbcTemplate.query(
"SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId}, "SELECT * FROM SECURITY WHERE id = ?", new Object[]{securityId},
(rs, rowNum) -> { (rs, rowNum) -> {
object.setCreated(getInstantFromTimestamp(rs, "CREATED_AT"));
object.setUpdated(getInstantFromTimestamp(rs, "UPDATED_AT"));
object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class)); object.setInstrumentType(rs.getObject("INSTRUMENT_TYPE", String.class));
object.setIssuerId(rs.getObject("issuer_id", Long.class));
object.setShortName(rs.getObject("short_name", String.class));
object.setFullName(rs.getObject("FULL_NAME", String.class)); object.setFullName(rs.getObject("FULL_NAME", String.class));
object.setShortNameEng(rs.getObject("short_name_eng", String.class));
object.setFullNameEng(rs.getObject("full_name_eng", String.class));
object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", String.class)); object.setSecuritySymbol(rs.getObject("SECURITY_SYMBOL", String.class));
object.setWorkflowStatus(rs.getObject("workflow_status", String.class));
return object; return object;
} }
); );
@ -100,6 +108,7 @@ public class MoneyMarketSecurityMapStore extends TemplateMapStore<MoneyMarketSec
TimeUtil.toDateFromLocalDate(moneyMarketSecurity.getEndDate()), TimeUtil.toDateFromLocalDate(moneyMarketSecurity.getEndDate()),
moneyMarketSecurity.getNominalValue(), moneyMarketSecurity.getNominalValue(),
moneyMarketSecurity.getNominalCurrency(), moneyMarketSecurity.getNominalCurrency(),
moneyMarketSecurity.getTermType()
}; };
return args; return args;
} }

View file

@ -30,7 +30,7 @@ public class PlannerAllTodayMapStore extends TemplateMapStore<PlannerAllToday> {
@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", "PARENT", "PARENT_ID"
}; };
} }
@ -44,8 +44,8 @@ public class PlannerAllTodayMapStore extends TemplateMapStore<PlannerAllToday> {
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.setParent(resultSet.getObject("PARENT", String.class));
object.setOrigId(resultSet.getObject("ORIG_ID", Long.class)); object.setParentId(resultSet.getObject("PARENT_ID", Long.class));
return object; return object;
} }
@ -59,8 +59,8 @@ public class PlannerAllTodayMapStore extends TemplateMapStore<PlannerAllToday> {
object.getMarket(), object.getMarket(),
object.getTaskStatus(), object.getTaskStatus(),
object.getSecurityId(), object.getSecurityId(),
object.getSource(), object.getParent(),
object.getOrigId() object.getParentId()
}; };
return args; return args;
} }

View file

@ -36,10 +36,11 @@ public class UserRoleSessionMapStore extends TemplateMapStore<UserRoleSession> {
@Override @Override
public UserRoleSession objectReader(ResultSet resultSet) throws SQLException { public UserRoleSession objectReader(ResultSet resultSet) throws SQLException {
UserRoleSession object = new UserRoleSession(); UserRoleSession object = new UserRoleSession();
Long companyId = resultSet.getObject("COMPANY_ID", Long.class);
object.setId(resultSet.getObject("ID", Long.class)); object.setId(resultSet.getObject("ID", Long.class));
object.setUserId(resultSet.getObject("USER_ID", Long.class)); object.setUserId(resultSet.getObject("USER_ID", Long.class));
object.setUserRole(resultSet.getObject("USER_ROLE", String.class)); object.setUserRole(resultSet.getObject("USER_ROLE", String.class));
object.setCompanyId(resultSet.getObject("COMPANY_ID", Long.class)); object.setCompanyId(companyId.equals(0L) ? 1 : companyId);
object.setStatus(resultSet.getObject("STATUS", String.class)); object.setStatus(resultSet.getObject("STATUS", String.class));
return object; return object;
} }

View file

@ -4,4 +4,4 @@ imdg.hazelcast.password=dev-pass
imdg.hazelcast.cluster-members[0]=127.0.0.1 imdg.hazelcast.cluster-members[0]=127.0.0.1
imdg.database.login=clearing imdg.database.login=clearing
imdg.database.password=Aa111111 imdg.database.password=Aa111111
imdg.database.url=jdbc:postgresql://10.200.200.133:5432/postgres imdg.database.url=jdbc:postgresql://10.200.200.133:5432/postgres?currentSchema=clearing_prod

View file

@ -7,6 +7,7 @@ import org.apache.commons.lang3.exception.ExceptionUtils;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Assumptions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -16,12 +17,16 @@ import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.SqlTypeValue; import org.springframework.jdbc.core.SqlTypeValue;
import org.springframework.jdbc.core.StatementCreatorUtils; import org.springframework.jdbc.core.StatementCreatorUtils;
import org.springframework.lang.NonNull; import org.springframework.lang.NonNull;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import ru.clearing.classes.statics.data.company.Company; import ru.clearing.classes.statics.data.company.Company;
import ru.clearing.classes.statics.data.company.CompanyHistory; import ru.clearing.classes.statics.data.company.CompanyHistory;
import ru.clearing.classes.statics.data.profile.CompanyInfo; import ru.clearing.classes.statics.data.profile.CompanyInfo;
import ru.clearing.platform.dictionary.AbstractDictionary; import ru.clearing.platform.dictionary.AbstractDictionary;
import ru.clearing.platform.dictionary.CompanySymbolDictionary; import ru.clearing.platform.dictionary.CompanySymbolDictionary;
import ru.spcex.clearing.imdg.base.*; import ru.spcex.clearing.imdg.base.*;
import ru.spcex.clearing.imdg.config.DbTestConnectionConfig;
import ru.spcex.clearing.imdg.config.TestConfiguration; import ru.spcex.clearing.imdg.config.TestConfiguration;
import ru.spcex.clearing.imdg.structure.BusinessObjectAndBusinessEventForCheckMapStore; import ru.spcex.clearing.imdg.structure.BusinessObjectAndBusinessEventForCheckMapStore;
import ru.spcex.clearing.imdg.structure.DictionaryObjectForCheckMapStore; import ru.spcex.clearing.imdg.structure.DictionaryObjectForCheckMapStore;
@ -42,11 +47,11 @@ import static ru.spcex.clearing.imdg.structure.RunnableMapNamesForTesting.busine
import static ru.spcex.clearing.imdg.structure.RunnableMapNamesForTesting.dictionaryObjectForCheckMapStores; import static ru.spcex.clearing.imdg.structure.RunnableMapNamesForTesting.dictionaryObjectForCheckMapStores;
import static ru.spcex.clearing.imdg.utils.DbDataUtils.generatingRandomString; import static ru.spcex.clearing.imdg.utils.DbDataUtils.generatingRandomString;
//@ContextConfiguration(classes = { @ContextConfiguration(classes = {
// TestConfiguration.class, TestConfiguration.class,
// DbTestConnectionConfig.class}) DbTestConnectionConfig.class})
//@ExtendWith(SpringExtension.class) @ExtendWith(SpringExtension.class)
//@TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/imdg/src/main/resources") @TestPropertySource(properties = "spring.config.location=D:/repo/mfd/clearing/clearing-parent/imdg/src/main/resources")
public class AllMapStoreTest { public class AllMapStoreTest {
private static final Long ID = 1000000L; private static final Long ID = 1000000L;
private final Logger log = LoggerFactory.getLogger(this.getClass()); private final Logger log = LoggerFactory.getLogger(this.getClass());
@ -106,7 +111,7 @@ public class AllMapStoreTest {
} }
} }
// @Test // @Test
public void checkAllMapStoreCreatedTest() throws SQLException { public void checkAllMapStoreCreatedTest() throws SQLException {
Assumptions.assumeTrue(false, "todo удалить если будет не нужна, пока не работает из-за не все mapStore готовы"); Assumptions.assumeTrue(false, "todo удалить если будет не нужна, пока не работает из-за не все mapStore готовы");
//Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль //Поиск таблиц которым нужно добавить mapStore и вывод результата в консоль
@ -116,8 +121,8 @@ public class AllMapStoreTest {
ResultSet rs = md.getTables(null, "clearing_tester", "%", new String[]{"TABLE"}); ResultSet rs = md.getTables(null, "clearing_tester", "%", new String[]{"TABLE"});
while (rs.next()) { while (rs.next()) {
String tableName = rs.getString("TABLE_NAME"); String tableName = rs.getString("TABLE_NAME");
//сущности для company_info и company_info_history включены соответсвенно в company и company_history //сущности для company_info и company_info_history включены соответственно в company и company_history, security используется с money_market_security для хранения MoneyMarketSecurity
if (tableName.equals("company_info") || tableName.equals("company_info_history")) { if (tableName.equalsIgnoreCase("company_info") || tableName.equalsIgnoreCase("company_info_history") || tableName.equalsIgnoreCase("security")) {
continue; continue;
} }
nameTables.add(tableName); nameTables.add(tableName);
@ -152,7 +157,7 @@ public class AllMapStoreTest {
Assertions.assertEquals(0, nameTables.size()); Assertions.assertEquals(0, nameTables.size());
} }
// @Test @Test
public void checkSavingForAllMapStoreTest() { public void checkSavingForAllMapStoreTest() {
saveBusinessObjectAndBusinessEventToMaps(); saveBusinessObjectAndBusinessEventToMaps();
saveDictionaryObjectToMaps(); saveDictionaryObjectToMaps();

File diff suppressed because it is too large Load diff

View file

@ -1,9 +1,9 @@
package ru.spcex.clearing.reports_service; package ru.spcex.clearing.reports;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.builder.SpringApplicationBuilder;
import ru.spcex.clearing.reports_service.services.ReportsService; import ru.spcex.clearing.reports.services.ReportsService;
@SpringBootApplication @SpringBootApplication
public class ReportsServiceApplication { public class ReportsServiceApplication {

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.config; package ru.spcex.clearing.reports.config;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration;
@Configuration @Configuration
@EnableConfigurationProperties @EnableConfigurationProperties
@ComponentScan(basePackages = {"ru.spcex.clearing.reports_service"}) @ComponentScan(basePackages = {"ru.spcex.clearing.reports"})
public class ReportsServiceConfig { public class ReportsServiceConfig {
} }

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.controller; package ru.spcex.clearing.reports.controller;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.exceptions; package ru.spcex.clearing.reports.exceptions;
public class ConfigException extends RuntimeException { public class ConfigException extends RuntimeException {
public ConfigException(String msg) { super(msg); } public ConfigException(String msg) { super(msg); }

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.properties; package ru.spcex.clearing.reports.properties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View file

@ -0,0 +1,56 @@
package ru.spcex.clearing.reports.reports;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import ru.spcex.clearing.reports.xml_test.FormattedLocalDateConverter;
import java.time.LocalDate;
/**
* Общая шапка (атрибуты) для всех отчетов
*/
public abstract class AbstractReport {
@XStreamAsAttribute
@XStreamAlias("version")
protected String version;
@XStreamAsAttribute
@XStreamAlias("code")
protected String code;
@XStreamAsAttribute
@XStreamAlias("name")
protected String name;
@XStreamAsAttribute
@XStreamAlias("startDate")
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
protected LocalDate startDate;
@XStreamAsAttribute
@XStreamAlias("endDate")
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
protected LocalDate endDate;
@XStreamAsAttribute
@XStreamAlias("destination")
protected String destination;
public AbstractReport(String version,
String code,
String name,
LocalDate startDate,
LocalDate endDate,
String destination) {
this.version = version;
this.code = code;
this.name = name;
this.startDate = startDate;
this.endDate = endDate;
this.destination = destination;
}
}

View file

@ -0,0 +1,24 @@
package ru.spcex.clearing.reports.reports;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import java.time.LocalDate;
public abstract class ReportWithClearingStatus extends AbstractReport {
@XStreamAsAttribute
@XStreamAlias("clearingStatus")
protected String clearingStatus;
public ReportWithClearingStatus(String version,
String code,
String name,
LocalDate startDate,
LocalDate endDate,
String destination,
String clearingStatus) {
super(version, code, name, startDate, endDate, destination);
this.clearingStatus = clearingStatus;
}
}

View file

@ -0,0 +1,14 @@
package ru.spcex.clearing.reports.reports;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
public abstract class WithCompanyClearingCode {
@XStreamAsAttribute
@XStreamAlias("company_clearingCode")
protected String companyClearingCode;
public WithCompanyClearingCode(String companyClearingCode) {
this.companyClearingCode = companyClearingCode;
}
}

View file

@ -1,33 +1,41 @@
package ru.spcex.clearing.reports_service.reports.bt_17_1; package ru.spcex.clearing.reports.reports.bt_17_1;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@XStreamAlias("report") @XStreamAlias("clearedLiabilities")
public class ReportBR_0420315_P1 extends AbstractReport { public class ReportBR_0420315_P1 extends ReportWithClearingStatus {
@XStreamAsAttribute
@XStreamAlias("clearingMemberCategory")
private String clearingMemberCategory;
@XStreamAlias("rows") @XStreamAlias("rows")
private final List<Info_0420315_P1> rows = new ArrayList<>(); private final List<Info_0420315_P1> rows = new ArrayList<>();
public ReportBR_0420315_P1(LocalDate startDate, public ReportBR_0420315_P1(LocalDate startDate,
LocalDate endDate) { LocalDate endDate,
String clearingMemberCategory,
String clearingStatus) {
super("0.0.1", super("0.0.1",
"0420315", "0420315",
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период", "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 1",
startDate, startDate,
endDate); endDate,
"BR",
clearingStatus);
this.clearingMemberCategory = clearingMemberCategory;
} }
public List<Info_0420315_P1> getRows() { public List<Info_0420315_P1> getRows() {
return rows; return rows;
} }
@XStreamAlias("row") @XStreamAlias("row")
public static class Info_0420315_P1 { public static class Info_0420315_P1 {
@XStreamAlias("company_id") @XStreamAlias("company_id")

View file

@ -1,12 +1,12 @@
package ru.spcex.clearing.reports_service.reports.bt_17_1; package ru.spcex.clearing.reports.reports.bt_17_1;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearedLiabilitiesTotal")
public class ReportBR_0420315_P2 extends AbstractReport { public class ReportBR_0420315_P2 extends AbstractReport {
@XStreamAlias("total") @XStreamAlias("total")
@ -15,9 +15,10 @@ public class ReportBR_0420315_P2 extends AbstractReport {
public ReportBR_0420315_P2(LocalDate startDate, LocalDate endDate, String contractQty, String liabilitiesAmount) { public ReportBR_0420315_P2(LocalDate startDate, LocalDate endDate, String contractQty, String liabilitiesAmount) {
super("0.0.1", super("0.0.1",
"0420315", "0420315",
"Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период", "Сведения об исполненных обязательствах, допущенных к клирингу, за отчетный период, часть 2",
startDate, startDate,
endDate); endDate,
"BR");
total = new Info_0420315_P2(contractQty, liabilitiesAmount); total = new Info_0420315_P2(contractQty, liabilitiesAmount);
} }

View file

@ -1,35 +1,35 @@
package ru.spcex.clearing.reports_service.reports.bt_17_2; package ru.spcex.clearing.reports.reports.bt_17_2;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import ru.spcex.clearing.reports.reports.WithCompanyClearingCode;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@XStreamAlias("report") @XStreamAlias("clearingServiceStatus")
public class ReportBR_0420317 extends AbstractReport { public class ReportBR_0420317 extends AbstractReport {
@XStreamAlias("rows") @XStreamAlias("rows")
private final List<Info_0420317> rows = new ArrayList<>(); private final List<Info_0420317> rows = new ArrayList<>();
public ReportBR_0420317(LocalDate startDate, LocalDate endDate) { public ReportBR_0420317(LocalDate startDate,
LocalDate endDate) {
super("0.0.1", super("0.0.1",
"0420317", "0420317",
"Сведения о предоставлении, прекращении, приостановке," + "Сведения о предоставлении, прекращении, приостановке," +
" возобновлении допуска к клиринговому обслуживанию", " возобновлении допуска к клиринговому обслуживанию",
startDate, startDate,
endDate); endDate, "BR");
} }
public List<Info_0420317> getRows() { public List<Info_0420317> getRows() {
return rows; return rows;
} }
@XStreamAlias("row") @XStreamAlias("row")
public static class Info_0420317 { public static class Info_0420317 extends WithCompanyClearingCode {
@XStreamAsAttribute @XStreamAsAttribute
@XStreamAlias("relation_supplierId") @XStreamAlias("relation_supplierId")
private String relationSupplierId; private String relationSupplierId;
@ -62,7 +62,8 @@ public class ReportBR_0420317 extends AbstractReport {
@XStreamAlias("relation_comment") @XStreamAlias("relation_comment")
private String relationComment; private String relationComment;
public Info_0420317(String relationSupplierId, public Info_0420317(String companyClearingCode,
String relationSupplierId,
String relationServiceId, String relationServiceId,
String relationServiceStatus, String relationServiceStatus,
String relationUpdatedAt, String relationUpdatedAt,
@ -70,6 +71,7 @@ public class ReportBR_0420317 extends AbstractReport {
String companySymbolCode, String companySymbolCode,
String companyInfoCountryCode, String companyInfoCountryCode,
String relationComment) { String relationComment) {
super(companyClearingCode);
this.relationSupplierId = relationSupplierId; this.relationSupplierId = relationSupplierId;
this.relationServiceId = relationServiceId; this.relationServiceId = relationServiceId;
this.relationServiceStatus = relationServiceStatus; this.relationServiceStatus = relationServiceStatus;

View file

@ -1,25 +1,27 @@
package ru.spcex.clearing.reports_service.reports.bt_17_3; package ru.spcex.clearing.reports.reports.bt_17_3;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@XStreamAlias("report") @XStreamAlias("unfundedLiabilities")
public class ReportBR_0420318 extends AbstractReport { public class ReportBR_0420318 extends ReportWithClearingStatus {
@XStreamAlias("rows") @XStreamAlias("rows")
private final List<Info_0420318> rows = new ArrayList<>(); private final List<Info_0420318> rows = new ArrayList<>();
public ReportBR_0420318(LocalDate startDate, LocalDate endDate) { public ReportBR_0420318(LocalDate startDate, LocalDate endDate, String clearingStatus) {
super("0.0.3", super("0.0.1",
"0420318", "0420318",
"Сведения о неисполненных обязательствах", "Сведения о неисполненных обязательствах",
startDate, startDate,
endDate); endDate,
"BR",
clearingStatus);
} }
public List<Info_0420318> getRows() { public List<Info_0420318> getRows() {

View file

@ -1,25 +1,28 @@
package ru.spcex.clearing.reports_service.reports.bt_17_4; package ru.spcex.clearing.reports.reports.bt_17_4;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.ReportWithClearingStatus;
import ru.spcex.clearing.reports.reports.WithCompanyClearingCode;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@XStreamAlias("report") @XStreamAlias("accountTransactionLiabilities")
public class ReportBR_0420314_P1 extends AbstractReport { public class ReportBR_0420314_P1 extends ReportWithClearingStatus {
@XStreamAlias("rows") @XStreamAlias("rows")
private final List<Info_0420314_P1> rows = new ArrayList<>(); private final List<Info_0420314_P1> rows = new ArrayList<>();
public ReportBR_0420314_P1(LocalDate startDate, LocalDate endDate) { public ReportBR_0420314_P1(LocalDate startDate, LocalDate endDate, String clearingStatus) {
super("0.0.1", super("0.0.1",
"0420314", "0420314",
"Сведения об УК и операциях, проведенных по торговым счетам", "Сведения об УК и операциях, проведенных по торговым счетам, часть 1",
startDate, startDate,
endDate); endDate,
"BR",
clearingStatus);
} }
public List<Info_0420314_P1> getRows() { public List<Info_0420314_P1> getRows() {
@ -28,7 +31,7 @@ public class ReportBR_0420314_P1 extends AbstractReport {
@XStreamAlias("partOne") @XStreamAlias("partOne")
public static class Info_0420314_P1 { public static class Info_0420314_P1 extends WithCompanyClearingCode {
@XStreamAsAttribute @XStreamAsAttribute
@XStreamAlias("paymentInstruction_senderId") @XStreamAlias("paymentInstruction_senderId")
private String paymentInstructionSenderId; private String paymentInstructionSenderId;
@ -61,7 +64,8 @@ public class ReportBR_0420314_P1 extends AbstractReport {
@XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity") @XStreamAlias("liabilitiesClaimsAssets_liabilitiesQuantity")
private String liabilitiesClaimsAssetsLiabilitiesQuantity; private String liabilitiesClaimsAssetsLiabilitiesQuantity;
public Info_0420314_P1(String paymentInstructionSenderId, public Info_0420314_P1(String companyClearingCode,
String paymentInstructionSenderId,
String profileDocumentId, String profileDocumentId,
String companyFullName, String companyFullName,
String companySymbolCode, String companySymbolCode,
@ -69,6 +73,7 @@ public class ReportBR_0420314_P1 extends AbstractReport {
String clearingMemberCategoryClearingMemberCategory, String clearingMemberCategoryClearingMemberCategory,
String profileDocumentDocumentTypeAndValidFromDate, String profileDocumentDocumentTypeAndValidFromDate,
String liabilitiesClaimsAssetsLiabilitiesQuantity) { String liabilitiesClaimsAssetsLiabilitiesQuantity) {
super(companyClearingCode);
this.paymentInstructionSenderId = paymentInstructionSenderId; this.paymentInstructionSenderId = paymentInstructionSenderId;
this.profileDocumentId = profileDocumentId; this.profileDocumentId = profileDocumentId;
this.companyFullName = companyFullName; this.companyFullName = companyFullName;

View file

@ -1,25 +1,31 @@
package ru.spcex.clearing.reports_service.reports.bt_17_4; package ru.spcex.clearing.reports.reports.bt_17_4;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import ru.spcex.clearing.reports.reports.WithCompanyClearingCode;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@XStreamAlias("report") @XStreamAlias("accountTransactionTurnover")
public class ReportBR_0420314_P2 extends AbstractReport { public class ReportBR_0420314_P2 extends AbstractReport {
@XStreamAsAttribute
@XStreamAlias("transactionStatus")
protected String transactionStatus;
@XStreamAlias("rows") @XStreamAlias("rows")
private final List<Info_0420314_P2> rows = new ArrayList<>(); private final List<Info_0420314_P2> rows = new ArrayList<>();
public ReportBR_0420314_P2(LocalDate startDate, LocalDate endDate) { public ReportBR_0420314_P2(LocalDate startDate, LocalDate endDate, String transactionStatus) {
super("0.0.1", super("0.0.1",
"0420314", "0420314",
"Сведения об УК и операциях, проведенных по торговым счетам", "Сведения об УК и операциях, проведенных по торговым счетам, часть 2",
startDate, startDate,
endDate); endDate, "BR");
this.transactionStatus = transactionStatus;
} }
public List<Info_0420314_P2> getRows() { public List<Info_0420314_P2> getRows() {
@ -28,7 +34,7 @@ public class ReportBR_0420314_P2 extends AbstractReport {
@XStreamAlias("partTwo") @XStreamAlias("partTwo")
public static class Info_0420314_P2 { public static class Info_0420314_P2 extends WithCompanyClearingCode {
@XStreamAsAttribute @XStreamAsAttribute
@XStreamAlias("paymentInstruction_senderId") @XStreamAlias("paymentInstruction_senderId")
private String paymentInstructionSenderId; private String paymentInstructionSenderId;
@ -53,12 +59,14 @@ public class ReportBR_0420314_P2 extends AbstractReport {
@XStreamAlias("accountBalance_closeBalanceAmount") @XStreamAlias("accountBalance_closeBalanceAmount")
private String accountBalanceCloseBalanceAmount; private String accountBalanceCloseBalanceAmount;
public Info_0420314_P2(String paymentInstructionSenderId, public Info_0420314_P2(String companyClearingCode,
String paymentInstructionSenderId,
String profileDocumentId, String profileDocumentId,
String accountBalanceOpenBalanceAmount, String accountBalanceOpenBalanceAmount,
String paymentInstructionCreditLegAmount, String paymentInstructionCreditLegAmount,
String paymentInstructionDebitLegAmount, String paymentInstructionDebitLegAmount,
String accountBalanceCloseBalanceAmount) { String accountBalanceCloseBalanceAmount) {
super(companyClearingCode);
this.paymentInstructionSenderId = paymentInstructionSenderId; this.paymentInstructionSenderId = paymentInstructionSenderId;
this.profileDocumentId = profileDocumentId; this.profileDocumentId = profileDocumentId;
this.accountBalanceOpenBalanceAmount = accountBalanceOpenBalanceAmount; this.accountBalanceOpenBalanceAmount = accountBalanceOpenBalanceAmount;

View file

@ -1,31 +1,34 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import ru.spcex.clearing.reports.reports.WithCompanyClearingCode;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage1")
public class ReportBR_0420312_P1 extends AbstractReport { public class ReportBR_0420312_P1 extends AbstractReport {
@XStreamAlias("partOne") @XStreamAlias("part_1")
private final Info_0420312_P1 partOne; private final Info_0420312_P1 part_1;
public ReportBR_0420312_P1(LocalDate startDate, public ReportBR_0420312_P1(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String companyClearingCode,
String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsCompanyId,
String liabilitiesClaimsAssetsFullName, String liabilitiesClaimsAssetsFullName,
String companySymbolCode, String companySymbolCode,
String companySymbolValue, String companySymbolValue,
String companyInfoCountryCode, String companyInfoCountryCode,
String clearingMemberCategoryClearingMemberCategory) { String clearingMemberCategoryClearingMemberCategory) {
super("0.0.5", super("0.0.1",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 1",
startDate, startDate,
endDate); endDate, "BR");
partOne = new Info_0420312_P1(liabilitiesClaimsAssetsCompanyId, part_1 = new Info_0420312_P1(companyClearingCode,
liabilitiesClaimsAssetsCompanyId,
liabilitiesClaimsAssetsFullName, liabilitiesClaimsAssetsFullName,
companySymbolCode, companySymbolCode,
companySymbolValue, companySymbolValue,
@ -33,7 +36,7 @@ public class ReportBR_0420312_P1 extends AbstractReport {
clearingMemberCategoryClearingMemberCategory); clearingMemberCategoryClearingMemberCategory);
} }
public static class Info_0420312_P1 { public static class Info_0420312_P1 extends WithCompanyClearingCode {
@XStreamAsAttribute @XStreamAsAttribute
@XStreamAlias("liabilitiesClaimsAssets_companyId") @XStreamAlias("liabilitiesClaimsAssets_companyId")
private String liabilitiesClaimsAssetsCompanyId; private String liabilitiesClaimsAssetsCompanyId;
@ -59,12 +62,14 @@ public class ReportBR_0420312_P1 extends AbstractReport {
private String clearingMemberCategoryClearingMemberCategory; private String clearingMemberCategoryClearingMemberCategory;
public Info_0420312_P1(String liabilitiesClaimsAssetsCompanyId, public Info_0420312_P1(String companyClearingCode,
String liabilitiesClaimsAssetsCompanyId,
String liabilitiesClaimsAssetsFullName, String liabilitiesClaimsAssetsFullName,
String companySymbolCode, String companySymbolCode,
String companySymbolValue, String companySymbolValue,
String companyInfoCountryCode, String companyInfoCountryCode,
String clearingMemberCategoryClearingMemberCategory) { String clearingMemberCategoryClearingMemberCategory) {
super(companyClearingCode);
this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId; this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId;
this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName; this.liabilitiesClaimsAssetsFullName = liabilitiesClaimsAssetsFullName;
this.companySymbolCode = companySymbolCode; this.companySymbolCode = companySymbolCode;

View file

@ -0,0 +1,35 @@
package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate;
@XStreamAlias("report")
public class ReportBR_0420312_P10 extends AbstractReport {
@XStreamAlias("part_10")
private final Info_0420312_P10 part_10;
public ReportBR_0420312_P10(LocalDate startDate,
LocalDate endDate,
String liabilitiesAmount) {
super("0.0.5",
"0420312",
"Сведения о клиринговом обеспечении, часть 10",
startDate,
endDate, "BR");
part_10 = new Info_0420312_P10(liabilitiesAmount);
}
public static class Info_0420312_P10 {
@XStreamAsAttribute
@XStreamAlias("liabilities_amount")
private String liabilitiesAmount;
public Info_0420312_P10(String liabilitiesAmount) {
this.liabilitiesAmount = liabilitiesAmount;
}
}
}

View file

@ -1,16 +1,16 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("report")
public class ReportBR_0420312_P11 extends AbstractReport { public class ReportBR_0420312_P11 extends AbstractReport {
@XStreamAlias("partEleven") @XStreamAlias("part_11")
private final Info_0420312_P11 partEleven; private final Info_0420312_P11 part_11;
public ReportBR_0420312_P11(LocalDate startDate, public ReportBR_0420312_P11(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
@ -19,8 +19,8 @@ public class ReportBR_0420312_P11 extends AbstractReport {
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении",
startDate, startDate,
endDate); endDate, "BR");
partEleven = new Info_0420312_P11(liabilitiesAmount); part_11 = new Info_0420312_P11(liabilitiesAmount);
} }
public static class Info_0420312_P11 { public static class Info_0420312_P11 {

View file

@ -1,27 +1,27 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage2")
public class ReportBR_0420312_P2 extends AbstractReport { public class ReportBR_0420312_P2 extends AbstractReport {
@XStreamAlias("partTwo") @XStreamAlias("part_2")
private final Info_0420312_P2 partTwo; private final Info_0420312_P2 part_2;
public ReportBR_0420312_P2(LocalDate startDate, public ReportBR_0420312_P2(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsCompanyId,
String liabilitiesClaimsAssetsLiabilities) { String liabilitiesClaimsAssetsLiabilities) {
super("0.0.5", super("0.0.1",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 2",
startDate, startDate,
endDate); endDate, "BR");
partTwo = new Info_0420312_P2(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities); part_2 = new Info_0420312_P2(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities);
} }
public static class Info_0420312_P2 { public static class Info_0420312_P2 {

View file

@ -1,16 +1,16 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage3")
public class ReportBR_0420312_P3 extends AbstractReport { public class ReportBR_0420312_P3 extends AbstractReport {
@XStreamAlias("partThree") @XStreamAlias("part_3")
private final Info_0420312_P3 partThree; private final Info_0420312_P3 part_3;
public ReportBR_0420312_P3(LocalDate startDate, public ReportBR_0420312_P3(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
@ -18,10 +18,10 @@ public class ReportBR_0420312_P3 extends AbstractReport {
String liabilitiesClaimsAssetsLiabilities) { String liabilitiesClaimsAssetsLiabilities) {
super("0.0.5", super("0.0.5",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 3",
startDate, startDate,
endDate); endDate, "BR");
partThree = new Info_0420312_P3(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities); part_3 = new Info_0420312_P3(liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsLiabilities);
} }
public static class Info_0420312_P3 { public static class Info_0420312_P3 {

View file

@ -1,26 +1,26 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage4")
public class ReportBR_0420312_P4 extends AbstractReport { public class ReportBR_0420312_P4 extends AbstractReport {
@XStreamAlias("partFour") @XStreamAlias("part_4")
private final Info_0420312_P4 partFour; private final Info_0420312_P4 part_4;
public ReportBR_0420312_P4(LocalDate startDate, public ReportBR_0420312_P4(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String liabilitiesAmount) { String liabilitiesAmount) {
super("0.0.5", super("0.0.5",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 4",
startDate, startDate,
endDate); endDate, "BR");
partFour = new Info_0420312_P4(liabilitiesAmount); part_4 = new Info_0420312_P4(liabilitiesAmount);
} }
public static class Info_0420312_P4 { public static class Info_0420312_P4 {

View file

@ -1,26 +1,26 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage5")
public class ReportBR_0420312_P5 extends AbstractReport { public class ReportBR_0420312_P5 extends AbstractReport {
@XStreamAlias("partFive") @XStreamAlias("part_5")
private final Info_0420312_P5 partFive; private final Info_0420312_P5 part_5;
public ReportBR_0420312_P5(LocalDate startDate, public ReportBR_0420312_P5(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String liabilitiesAmount) { String liabilitiesAmount) {
super("0.0.5", super("0.0.5",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 5",
startDate, startDate,
endDate); endDate, "BR");
partFive = new Info_0420312_P5(liabilitiesAmount); part_5 = new Info_0420312_P5(liabilitiesAmount);
} }
public static class Info_0420312_P5 { public static class Info_0420312_P5 {

View file

@ -1,26 +1,26 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage6")
public class ReportBR_0420312_P6 extends AbstractReport { public class ReportBR_0420312_P6 extends AbstractReport {
@XStreamAlias("partSix") @XStreamAlias("part_6")
private final Info_0420312_P6 partSix; private final Info_0420312_P6 part_6;
public ReportBR_0420312_P6(LocalDate startDate, public ReportBR_0420312_P6(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String liabilitiesAmount) { String liabilitiesAmount) {
super("0.0.5", super("0.0.5",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 6",
startDate, startDate,
endDate); endDate, "BR");
partSix = new Info_0420312_P6(liabilitiesAmount); part_6 = new Info_0420312_P6(liabilitiesAmount);
} }
public static class Info_0420312_P6 { public static class Info_0420312_P6 {

View file

@ -1,34 +1,34 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage7")
public class ReportBR_0420312_P8 extends AbstractReport { public class ReportBR_0420312_P7 extends AbstractReport {
@XStreamAlias("partEight") @XStreamAlias("part_7")
private final Info_0420312_P8 partEight; private final Info_0420312_P7 part_7;
public ReportBR_0420312_P8(LocalDate startDate, public ReportBR_0420312_P7(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String liabilitiesAmount) { String liabilitiesAmount) {
super("0.0.5", super("0.0.5",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 7",
startDate, startDate,
endDate); endDate, "BR");
partEight = new Info_0420312_P8(liabilitiesAmount); part_7 = new Info_0420312_P7(liabilitiesAmount);
} }
public static class Info_0420312_P8 { public static class Info_0420312_P7 {
@XStreamAsAttribute @XStreamAsAttribute
@XStreamAlias("liabilities_amount") @XStreamAlias("liabilities_amount")
private String liabilitiesAmount; private String liabilitiesAmount;
public Info_0420312_P8(String liabilitiesAmount) { public Info_0420312_P7(String liabilitiesAmount) {
this.liabilitiesAmount = liabilitiesAmount; this.liabilitiesAmount = liabilitiesAmount;
} }
} }

View file

@ -1,18 +1,18 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("clearingCoverage8")
public class ReportBR_0420312_P9 extends AbstractReport { public class ReportBR_0420312_P8 extends AbstractReport {
@XStreamAlias("partNine") @XStreamAlias("part_8")
private final Info_0420312_P9 partNine; private final Info_0420312_P8 part_8;
public ReportBR_0420312_P9(LocalDate startDate, public ReportBR_0420312_P8(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String currencyId, String currencyId,
String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsCompanyId,
@ -23,10 +23,10 @@ public class ReportBR_0420312_P9 extends AbstractReport {
String clearingMemberCategoryClearingMemberCategory) { String clearingMemberCategoryClearingMemberCategory) {
super("0.0.5", super("0.0.5",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 8",
startDate, startDate,
endDate); endDate, "BR");
partNine = new Info_0420312_P9(currencyId, part_8 = new Info_0420312_P8(currencyId,
liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsCompanyId,
liabilitiesClaimsAssetsFullName, liabilitiesClaimsAssetsFullName,
companySymbolCode, companySymbolCode,
@ -35,7 +35,7 @@ public class ReportBR_0420312_P9 extends AbstractReport {
clearingMemberCategoryClearingMemberCategory); clearingMemberCategoryClearingMemberCategory);
} }
public static class Info_0420312_P9 { public static class Info_0420312_P8 {
@XStreamAsAttribute @XStreamAsAttribute
@XStreamAlias("currency_id") @XStreamAlias("currency_id")
private String currencyId; private String currencyId;
@ -64,8 +64,7 @@ public class ReportBR_0420312_P9 extends AbstractReport {
@XStreamAlias("clearingMemberCategory_clearingMemberCategory") @XStreamAlias("clearingMemberCategory_clearingMemberCategory")
private String clearingMemberCategoryClearingMemberCategory; private String clearingMemberCategoryClearingMemberCategory;
public Info_0420312_P8(String currencyId,
public Info_0420312_P9(String currencyId,
String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsCompanyId,
String liabilitiesClaimsAssetsFullName, String liabilitiesClaimsAssetsFullName,
String companySymbolCode, String companySymbolCode,

View file

@ -1,35 +1,36 @@
package ru.spcex.clearing.reports_service.reports.bt_17_5; package ru.spcex.clearing.reports.reports.bt_17_5;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import ru.spcex.clearing.reports_service.reports.AbstractReport; import ru.spcex.clearing.reports.reports.AbstractReport;
import java.time.LocalDate; import java.time.LocalDate;
@XStreamAlias("report") @XStreamAlias("report")
public class ReportBR_0420312_P10 extends AbstractReport { public class ReportBR_0420312_P9 extends AbstractReport {
@XStreamAlias("partTen") @XStreamAlias("part_9")
private final Info_0420312_P10 partTen; private final Info_0420312_P9 part_9;
public ReportBR_0420312_P10(LocalDate startDate, public ReportBR_0420312_P9(LocalDate startDate,
LocalDate endDate, LocalDate endDate,
String currencyId, String currencyId,
String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsCompanyId,
String liabilitiesClaimsMoneyCurrencyCode, String liabilitiesClaimsMoneyCurrencyCode,
String liabilitiesClaimsAssetsLiabilities) { String liabilitiesClaimsAssetsLiabilities) {
super("0.0.5", super("0.0.5",
"0420312", "0420312",
"Сведения о клиринговом обеспечении", "Сведения о клиринговом обеспечении, часть 9",
startDate, startDate,
endDate); endDate,
partTen = new Info_0420312_P10(currencyId, "BR");
part_9 = new Info_0420312_P9(currencyId,
liabilitiesClaimsAssetsCompanyId, liabilitiesClaimsAssetsCompanyId,
liabilitiesClaimsMoneyCurrencyCode, liabilitiesClaimsMoneyCurrencyCode,
liabilitiesClaimsAssetsLiabilities); liabilitiesClaimsAssetsLiabilities);
} }
public static class Info_0420312_P10 { public static class Info_0420312_P9 {
@XStreamAsAttribute @XStreamAsAttribute
@XStreamAlias("currency_id") @XStreamAlias("currency_id")
private String currencyId; private String currencyId;
@ -46,10 +47,10 @@ public class ReportBR_0420312_P10 extends AbstractReport {
@XStreamAlias("liabilitiesClaimsAssets_liabilities") @XStreamAlias("liabilitiesClaimsAssets_liabilities")
private String liabilitiesClaimsAssetsLiabilities; private String liabilitiesClaimsAssetsLiabilities;
public Info_0420312_P10(String currencyId, public Info_0420312_P9(String currencyId,
String liabilitiesClaimsAssetsCompanyId, String liabilitiesClaimsAssetsCompanyId,
String liabilitiesClaimsMoneyCurrencyCode, String liabilitiesClaimsMoneyCurrencyCode,
String liabilitiesClaimsAssetsLiabilities) { String liabilitiesClaimsAssetsLiabilities) {
this.currencyId = currencyId; this.currencyId = currencyId;
this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId; this.liabilitiesClaimsAssetsCompanyId = liabilitiesClaimsAssetsCompanyId;
this.liabilitiesClaimsMoneyCurrencyCode = liabilitiesClaimsMoneyCurrencyCode; this.liabilitiesClaimsMoneyCurrencyCode = liabilitiesClaimsMoneyCurrencyCode;

View file

@ -1,15 +1,15 @@
package ru.spcex.clearing.reports_service.services; package ru.spcex.clearing.reports.services;
import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder; import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.XppDriver; import com.thoughtworks.xstream.io.xml.XppDriver;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ru.spcex.clearing.reports_service.reports.bt_17_1.ReportBR_0420315_P1; import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P1;
import ru.spcex.clearing.reports_service.reports.bt_17_1.ReportBR_0420315_P2; import ru.spcex.clearing.reports.reports.bt_17_1.ReportBR_0420315_P2;
import ru.spcex.clearing.reports_service.reports.bt_17_2.ReportBR_0420317; import ru.spcex.clearing.reports.reports.bt_17_2.ReportBR_0420317;
import ru.spcex.clearing.reports_service.reports.bt_17_3.ReportBR_0420318; import ru.spcex.clearing.reports.reports.bt_17_3.ReportBR_0420318;
import ru.spcex.clearing.reports_service.reports.bt_17_4.ReportBR_0420314_P1; import ru.spcex.clearing.reports.reports.bt_17_4.ReportBR_0420314_P1;
import java.time.LocalDate; import java.time.LocalDate;
@ -25,7 +25,10 @@ public class ReportsService {
xStream.processAnnotations(ReportBR_0420318.class); xStream.processAnnotations(ReportBR_0420318.class);
xStream.processAnnotations(ReportBR_0420314_P1.class); xStream.processAnnotations(ReportBR_0420314_P1.class);
ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(), LocalDate.now()); ReportBR_0420315_P1 reportBR_0420315_p1 = new ReportBR_0420315_P1(LocalDate.now(),
LocalDate.now(),
"clearingMemberCategory",
"clearingStatus");
ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId", ReportBR_0420315_P1.Info_0420315_P1 info_0420315_p1 = new ReportBR_0420315_P1.Info_0420315_P1("companyId",
"companyFullName", "companyFullName",
"listingMarket", "listingMarket",
@ -41,7 +44,8 @@ public class ReportsService {
log.info("ReportBR_0420315_P2:\n{}\n", xStream.toXML(reportBR_0420315_p2)); log.info("ReportBR_0420315_P2:\n{}\n", xStream.toXML(reportBR_0420315_p2));
ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(LocalDate.now(), LocalDate.now()); ReportBR_0420317 reportBR_0420317 = new ReportBR_0420317(LocalDate.now(), LocalDate.now());
ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317("relationSupplierId", ReportBR_0420317.Info_0420317 info_0420317 = new ReportBR_0420317.Info_0420317("companyClearingCode",
"relationSupplierId",
"relationServiceId", "relationServiceId",
"relationServiceStatus", "relationServiceStatus",
"relationUpdatedAt", "relationUpdatedAt",
@ -52,7 +56,7 @@ public class ReportsService {
reportBR_0420317.getRows().add(info_0420317); reportBR_0420317.getRows().add(info_0420317);
log.info("ReportBR_0420317:\n{}\n", xStream.toXML(reportBR_0420317)); log.info("ReportBR_0420317:\n{}\n", xStream.toXML(reportBR_0420317));
ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now()); ReportBR_0420318 reportBR_0420318 = new ReportBR_0420318(LocalDate.now(), LocalDate.now(), "clearingStatus");
ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318( ReportBR_0420318.Info_0420318 info_0420318 = new ReportBR_0420318.Info_0420318(
"liabilitiesClaimsAssetsFullName", "liabilitiesClaimsAssetsFullName",
"companySymbolsCode", "companySymbolsCode",
@ -70,8 +74,8 @@ public class ReportsService {
reportBR_0420318.getRows().add(info_0420318); reportBR_0420318.getRows().add(info_0420318);
log.info("ReportBR_0420318:\n{}\n", xStream.toXML(reportBR_0420318)); log.info("ReportBR_0420318:\n{}\n", xStream.toXML(reportBR_0420318));
ReportBR_0420314_P1 reportBR_0420314P1 = new ReportBR_0420314_P1(LocalDate.now(), LocalDate.now()); ReportBR_0420314_P1 reportBR_0420314P1 = new ReportBR_0420314_P1(LocalDate.now(), LocalDate.now(), "clearingStatus");
ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1( ReportBR_0420314_P1.Info_0420314_P1 info_0420314P1 = new ReportBR_0420314_P1.Info_0420314_P1("companyClearingCode",
"paymentInstructionSenderId", "paymentInstructionSenderId",
"profileDocumentId", "profileDocumentId",
"companyFullName", "companyFullName",

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.xml_test; package ru.spcex.clearing.reports.xml_test;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.xml_test; package ru.spcex.clearing.reports.xml_test;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.xml_test; package ru.spcex.clearing.reports.xml_test;
import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter; import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter;

View file

@ -1,4 +1,4 @@
package ru.spcex.clearing.reports_service.xml_test; package ru.spcex.clearing.reports.xml_test;
import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter; import com.thoughtworks.xstream.annotations.XStreamConverter;

View file

@ -1,85 +0,0 @@
package ru.spcex.clearing.reports_service.reports;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import ru.spcex.clearing.reports_service.xml_test.FormattedLocalDateConverter;
import java.time.LocalDate;
/**
* Общая шапка (атрибуты) для всех отчетов
*/
public class AbstractReport {
@XStreamAsAttribute
@XStreamAlias("version")
private String version;
@XStreamAsAttribute
@XStreamAlias("code")
private String code;
@XStreamAsAttribute
@XStreamAlias("name")
private String name;
@XStreamAsAttribute
@XStreamAlias("startDate")
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
private LocalDate startDate;
@XStreamAsAttribute
@XStreamAlias("endDate")
@XStreamConverter(value = FormattedLocalDateConverter.class, strings = {"dd.MM.yyyy"})
private LocalDate endDate;
public AbstractReport(String version, String code, String name, LocalDate startDate, LocalDate endDate) {
this.version = version;
this.code = code;
this.name = name;
this.startDate = startDate;
this.endDate = endDate;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDate getStartDate() {
return startDate;
}
public void setStartDate(LocalDate startDate) {
this.startDate = startDate;
}
public LocalDate getEndDate() {
return endDate;
}
public void setEndDate(LocalDate endDate) {
this.endDate = endDate;
}
}

View file

@ -50,7 +50,7 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi
ClearingCalendar clearingCalendar = new ClearingCalendar(); ClearingCalendar clearingCalendar = new ClearingCalendar();
clearingCalendar.setClearingDate(req.getClearingDate()); clearingCalendar.setClearingDate(req.getClearingDate());
clearingCalendar.setCompanyId(req.getCompanyId()); clearingCalendar.setCompanyId(req.getCompanyId());
clearingCalendar.setTradingStatus(req.getTradingStatus()); clearingCalendar.setDayStatus(req.getDayStatus());
clearingCalendarMap.insert(clearingCalendar); clearingCalendarMap.insert(clearingCalendar);
log.debug("successfully processed, new id {}", clearingCalendar.getId()); log.debug("successfully processed, new id {}", clearingCalendar.getId());
} }
@ -61,7 +61,7 @@ public class ClearingCalendarService extends QueueConsumer implements Initializi
ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId()); ClearingCalendar clearingCalendar = clearingCalendarMap.getSingleObjectByID(req.getId());
clearingCalendar.setClearingDate(req.getClearingDate()); clearingCalendar.setClearingDate(req.getClearingDate());
clearingCalendar.setCompanyId(req.getCompanyId()); clearingCalendar.setCompanyId(req.getCompanyId());
clearingCalendar.setTradingStatus(req.getTradingStatus()); clearingCalendar.setDayStatus(req.getDayStatus());
clearingCalendarMap.update(clearingCalendar); clearingCalendarMap.update(clearingCalendar);
log.debug("successfully processed, new id {}", clearingCalendar.getId()); log.debug("successfully processed, new id {}", clearingCalendar.getId());
} }

View file

@ -82,7 +82,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
mms.setStartDate(req.getStartDate()); mms.setStartDate(req.getStartDate());
mms.setEndDate(req.getEndDate()); mms.setEndDate(req.getEndDate());
mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null); mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null);
mms.setNominalCurrency(req.getNominalCurrencyId()); mms.setNominalCurrency(req.getNominalCurrency());
mms.setInstrumentType(req.getInstrumentType()); mms.setInstrumentType(req.getInstrumentType());
mms.setFullName(req.getFullName()); mms.setFullName(req.getFullName());
mms.setSecuritySymbol(req.getSecuritySymbol()); mms.setSecuritySymbol(req.getSecuritySymbol());
@ -114,7 +114,7 @@ public class MoneyMarketSecurityService extends QueueConsumer implements Initial
mms.setUpdated(Instant.now()); mms.setUpdated(Instant.now());
mms.setEndDate(req.getEndDate()); mms.setEndDate(req.getEndDate());
mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null); mms.setNominalValue(req.getNominalValue() != null ? BigDecimal.valueOf(req.getNominalValue()) : null);
mms.setNominalCurrency(req.getNominalCurrencyId()); mms.setNominalCurrency(req.getNominalCurrency());
mms.setInstrumentType(req.getInstrumentType()); mms.setInstrumentType(req.getInstrumentType());
mms.setFullName(req.getFullName()); mms.setFullName(req.getFullName());
moneyMarketSecurityMap.update(mms); moneyMarketSecurityMap.update(mms);

View file

@ -10,6 +10,7 @@ import java.time.LocalDate;
class MoneyMarketSecurityFactory { class MoneyMarketSecurityFactory {
private String nominalCurrency = "RUB"; // (linked to currencyCode)
private Long id = 0L; private Long id = 0L;
private Long securityId = 0L;// (linked to security) private Long securityId = 0L;// (linked to security)
private String description = "tsetse"; private String description = "tsetse";
@ -17,12 +18,8 @@ class MoneyMarketSecurityFactory {
private LocalDate startDate = LocalDate.ofEpochDay(0); private LocalDate startDate = LocalDate.ofEpochDay(0);
private LocalDate endDate = LocalDate.ofEpochDay(0); private LocalDate endDate = LocalDate.ofEpochDay(0);
private BigDecimal nominalValue = BigDecimal.valueOf(1.0); private BigDecimal nominalValue = BigDecimal.valueOf(1.0);
private Long nominalCurrency = 1L; // (linked to currencyCode)
private String instrumentType = "sdgaga"; // (linked to instrumentType) private String instrumentType = "sdgaga"; // (linked to instrumentType)
private String fullName = "estat"; private String fullName = "estat";
private Long nominalCurrencyId = 1L;
private String securitySymbol = "sdfafd"; private String securitySymbol = "sdfafd";
public MoneyMarketSecurityFactory setLotSize(Double lotSize) { public MoneyMarketSecurityFactory setLotSize(Double lotSize) {
@ -30,8 +27,7 @@ class MoneyMarketSecurityFactory {
return this; return this;
} }
public MoneyMarketSecurityFactory setNominalCurrencyId(Long nominalCurrencyId) { public MoneyMarketSecurityFactory setNominalCurrency(String nominalCurrencyId) {
this.nominalCurrencyId = nominalCurrencyId;
this.nominalCurrency = nominalCurrencyId; this.nominalCurrency = nominalCurrencyId;
return this; return this;
} }
@ -66,12 +62,6 @@ class MoneyMarketSecurityFactory {
return this; return this;
} }
public MoneyMarketSecurityFactory setNominalCurrency(Long nominalCurrency) {
this.nominalCurrency = nominalCurrency;
this.nominalCurrencyId = nominalCurrency;
return this;
}
public MoneyMarketSecurityFactory setInstrumentType(String instrumentType) { public MoneyMarketSecurityFactory setInstrumentType(String instrumentType) {
this.instrumentType = instrumentType; this.instrumentType = instrumentType;
return this; return this;
@ -111,7 +101,7 @@ class MoneyMarketSecurityFactory {
moneyMarketSecurityUpdateRequest.setId(id); moneyMarketSecurityUpdateRequest.setId(id);
moneyMarketSecurityUpdateRequest.setEndDate(endDate); moneyMarketSecurityUpdateRequest.setEndDate(endDate);
moneyMarketSecurityUpdateRequest.setNominalValue(nominalValue.doubleValue()); moneyMarketSecurityUpdateRequest.setNominalValue(nominalValue.doubleValue());
moneyMarketSecurityUpdateRequest.setNominalCurrencyId(nominalCurrencyId); moneyMarketSecurityUpdateRequest.setNominalCurrency(nominalCurrency);
moneyMarketSecurityUpdateRequest.setInstrumentType(instrumentType); moneyMarketSecurityUpdateRequest.setInstrumentType(instrumentType);
moneyMarketSecurityUpdateRequest.setFullName(fullName); moneyMarketSecurityUpdateRequest.setFullName(fullName);
@ -131,7 +121,7 @@ class MoneyMarketSecurityFactory {
keyRequest.setStartDate(startDate); keyRequest.setStartDate(startDate);
keyRequest.setEndDate(endDate); keyRequest.setEndDate(endDate);
keyRequest.setNominalValue(nominalValue.doubleValue()); keyRequest.setNominalValue(nominalValue.doubleValue());
keyRequest.setNominalCurrencyId(nominalCurrencyId); keyRequest.setNominalCurrency(nominalCurrency);
keyRequest.setInstrumentType(instrumentType); keyRequest.setInstrumentType(instrumentType);
keyRequest.setFullName(fullName); keyRequest.setFullName(fullName);
keyRequest.setSecuritySymbol(securitySymbol); keyRequest.setSecuritySymbol(securitySymbol);

View file

@ -45,11 +45,11 @@ public class MoneyMarketSecurityServiceDisabled {
private final int TIMEOUT = 1000; private final int TIMEOUT = 1000;
boolean isUsed; boolean isUsed;
private MockConsumer<String, Object> kafkaMockQueue; private MockConsumer<String, Object> kafkaMockQueue;
private MockProducer<String, Object> mockProducer = new MockProducer<>(); private final MockProducer<String, Object> mockProducer = new MockProducer<>();
// @Autowired // @Autowired
// @Qualifier("hazelcastServiceTest") // @Qualifier("hazelcastServiceTest")
private HazelcastService hazelcastService; private HazelcastService hazelcastService;
// @Autowired // @Autowired
// @Qualifier("hazelcastInstance") // @Qualifier("hazelcastInstance")
private HazelcastInstance hz; private HazelcastInstance hz;
@ -96,7 +96,7 @@ public class MoneyMarketSecurityServiceDisabled {
* {@link MoneyMarketSecurityNewRequest#startDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br> * {@link MoneyMarketSecurityNewRequest#startDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br>
* {@link MoneyMarketSecurityNewRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br> * {@link MoneyMarketSecurityNewRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z.<br>
* {@link MoneyMarketSecurityNewRequest#nominalValue} - 1.0<br> * {@link MoneyMarketSecurityNewRequest#nominalValue} - 1.0<br>
* {@link MoneyMarketSecurityNewRequest#nominalCurrencyId} - 1L<br> * {@link MoneyMarketSecurityNewRequest#nominalCurrency} - 1L<br>
* {@link MoneyMarketSecurityNewRequest#instrumentType} - "sdgaga"<br> * {@link MoneyMarketSecurityNewRequest#instrumentType} - "sdgaga"<br>
* {@link MoneyMarketSecurityNewRequest#fullName} - "estat"<br> * {@link MoneyMarketSecurityNewRequest#fullName} - "estat"<br>
*/ */
@ -236,7 +236,7 @@ public class MoneyMarketSecurityServiceDisabled {
* Входной запрос {@link MoneyMarketSecurityUpdateRequest}:<br> * Входной запрос {@link MoneyMarketSecurityUpdateRequest}:<br>
* {@link MoneyMarketSecurityUpdateRequest#fullName} - sfgsdfg<br> * {@link MoneyMarketSecurityUpdateRequest#fullName} - sfgsdfg<br>
* {@link MoneyMarketSecurityUpdateRequest#instrumentType} - qwerqwe<br> * {@link MoneyMarketSecurityUpdateRequest#instrumentType} - qwerqwe<br>
* {@link MoneyMarketSecurityUpdateRequest#nominalCurrencyId} - 2L<br> * {@link MoneyMarketSecurityUpdateRequest#nominalCurrency} - RUB<br>
* {@link MoneyMarketSecurityUpdateRequest#nominalValue} - 2.0<br> * {@link MoneyMarketSecurityUpdateRequest#nominalValue} - 2.0<br>
* {@link MoneyMarketSecurityUpdateRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z + (24 * 3600)<br> * {@link MoneyMarketSecurityUpdateRequest#endDate} - текущее колличество секунд с 1970-01-01T00:00:00Z + (24 * 3600)<br>
*/ */
@ -260,7 +260,7 @@ public class MoneyMarketSecurityServiceDisabled {
moneyMarketSecurityFactory moneyMarketSecurityFactory
.setFullName("sfgsdfg") .setFullName("sfgsdfg")
.setInstrumentType("qwerqwe") .setInstrumentType("qwerqwe")
.setNominalCurrencyId(2L) .setNominalCurrency("RUB")
.setNominalValue(BigDecimal.valueOf(2.0)) .setNominalValue(BigDecimal.valueOf(2.0))
.setEndDate(LocalDate.ofEpochDay(24 * 3600)); .setEndDate(LocalDate.ofEpochDay(24 * 3600));

View file

@ -47,7 +47,7 @@ public class KeyRateService extends QueueConsumer implements InitializingBean {
private void newKeyRate(BaseRequest<KeyRateNewRequest> userRequest) { private void newKeyRate(BaseRequest<KeyRateNewRequest> userRequest) {
KeyRateNewRequest req = userRequest.getRequestPayload(); KeyRateNewRequest req = userRequest.getRequestPayload();
log.debug("MoneyMarketSecurityNewRequest received"); log.debug("KeyRateNewRequest received");
KeyRate keyRate = new KeyRate(); KeyRate keyRate = new KeyRate();
keyRate.setEndDate(req.getEndDate()); keyRate.setEndDate(req.getEndDate());
keyRate.setDocument(req.getDocument()); keyRate.setDocument(req.getDocument());
@ -60,7 +60,7 @@ public class KeyRateService extends QueueConsumer implements InitializingBean {
private void updateKeyRate(BaseRequest<KeyRateUpdateRequest> userRequest) { private void updateKeyRate(BaseRequest<KeyRateUpdateRequest> userRequest) {
KeyRateUpdateRequest req = userRequest.getRequestPayload(); KeyRateUpdateRequest req = userRequest.getRequestPayload();
log.debug("MoneyMarketSecurityUpdateRequest received id = {}", req.getId()); log.debug("KeyRateUpdateRequest received id = {}", req.getId());
KeyRate keyRate = keyRateMap.getSingleObjectByID(req.getId()); KeyRate keyRate = keyRateMap.getSingleObjectByID(req.getId());
keyRate.setEndDate(req.getEndDate()); keyRate.setEndDate(req.getEndDate());
keyRate.setDocument(req.getDocument()); keyRate.setDocument(req.getDocument());

View file

@ -3,7 +3,7 @@ package ru.spcex.platform.enumeration;
import ru.spcex.platform.utils.enumeration.IEnumKey; import ru.spcex.platform.utils.enumeration.IEnumKey;
public enum TransactionStatus implements IEnumKey { public enum TransactionStatus implements IEnumKey {
stld("STLD"), notSent("NSNT"), cher("CHER"), sent("SENT"); stld("STLD"), notSent("NSNT"), cher("CHER"), sent("SENT"), ok("OK"), fail("FAIL");
private final String key; private final String key;

View file

@ -16,7 +16,7 @@ public class ClearingCalendarNewRequest {
@JsonProperty @JsonProperty
public Long companyId; public Long companyId;
@JsonProperty @JsonProperty
public String tradingStatus; public String dayStatus;
public LocalDate getClearingDate() { public LocalDate getClearingDate() {
return clearingDate; return clearingDate;
@ -34,11 +34,11 @@ public class ClearingCalendarNewRequest {
this.companyId = companyId; this.companyId = companyId;
} }
public String getTradingStatus() { public String getDayStatus() {
return tradingStatus; return dayStatus;
} }
public void setTradingStatus(String tradingStatus) { public void setDayStatus(String dayStatus) {
this.tradingStatus = tradingStatus; this.dayStatus = dayStatus;
} }
} }

View file

@ -19,7 +19,7 @@ public class ClearingCalendarUpdateRequest {
@JsonProperty @JsonProperty
public Long companyId; public Long companyId;
@JsonProperty @JsonProperty
public String tradingStatus; public String dayStatus;
public Long getId() { public Long getId() {
return id; return id;
@ -45,11 +45,11 @@ public class ClearingCalendarUpdateRequest {
this.companyId = companyId; this.companyId = companyId;
} }
public String getTradingStatus() { public String getDayStatus() {
return tradingStatus; return dayStatus;
} }
public void setTradingStatus(String tradingStatus) { public void setDayStatus(String dayStatus) {
this.tradingStatus = tradingStatus; this.dayStatus = dayStatus;
} }
} }

View file

@ -20,7 +20,7 @@ public class MoneyMarketSecurityNewRequest {
@JsonProperty @JsonProperty
public Double nominalValue; public Double nominalValue;
@JsonProperty @JsonProperty
public Long nominalCurrencyId; public String nominalCurrency;
@JsonProperty @JsonProperty
public String instrumentType; public String instrumentType;
@JsonProperty @JsonProperty
@ -54,12 +54,12 @@ public class MoneyMarketSecurityNewRequest {
this.nominalValue = nominalValue; this.nominalValue = nominalValue;
} }
public Long getNominalCurrencyId() { public String getNominalCurrency() {
return nominalCurrencyId; return nominalCurrency;
} }
public void setNominalCurrencyId(Long nominalCurrencyId) { public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrencyId = nominalCurrencyId; this.nominalCurrency = nominalCurrency;
} }
public String getInstrumentType() { public String getInstrumentType() {

View file

@ -20,7 +20,7 @@ public class MoneyMarketSecurityUpdateRequest {
@JsonProperty @JsonProperty
public Double nominalValue; public Double nominalValue;
@JsonProperty @JsonProperty
public Long nominalCurrencyId; public String nominalCurrency;
@JsonProperty @JsonProperty
public String instrumentType; public String instrumentType;
@JsonProperty @JsonProperty
@ -52,12 +52,12 @@ public class MoneyMarketSecurityUpdateRequest {
this.nominalValue = nominalValue; this.nominalValue = nominalValue;
} }
public Long getNominalCurrencyId() { public String getNominalCurrency() {
return nominalCurrencyId; return nominalCurrency;
} }
public void setNominalCurrencyId(Long nominalCurrencyId) { public void setNominalCurrency(String nominalCurrency) {
this.nominalCurrencyId = nominalCurrencyId; this.nominalCurrency = nominalCurrency;
} }
public String getInstrumentType() { public String getInstrumentType() {

View file

@ -50,6 +50,12 @@ public class QueueConsumer implements AutoCloseable {
this.supportStartOffsetTimeWindow = false; this.supportStartOffsetTimeWindow = false;
} }
/**
* используем этот конструктор, если хотим класть
* в кафку "ответ" - информацию о статусе обработки команд
* @param kafkaQueue
* @param kafkaResponseQueue
*/
public QueueConsumer(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaResponseQueue) { public QueueConsumer(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaResponseQueue) {
this(kafkaQueue); this(kafkaQueue);
this.producer = kafkaResponseQueue; this.producer = kafkaResponseQueue;

Some files were not shown because too many files have changed in this diff Show more