From 63ec986491e6353f65b1233e020087499364659c Mon Sep 17 00:00:00 2001 From: etreschenkov Date: Wed, 22 Apr 2026 12:05:05 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-943http://jira.mfd.msk:8088/browse/CLS-973 --- .../queue/account/AccountController.java | 46 +++++++++++++---- .../queue/company/CompanyController.java | 43 ++++++++++++---- .../TradingClearingRegistryController.java | 49 +++++++++++++++---- .../ru/spcex/platform/enumeration/Status.java | 1 + 4 files changed, 111 insertions(+), 28 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountController.java index 1cebcb051..7eb62784d 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/account/AccountController.java @@ -4,10 +4,22 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.server.ResponseStatusException; import ru.clearing.classes.statics.data.account.Account; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.request.cud.account.AccountNewAction; @@ -20,30 +32,46 @@ import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; - -import java.util.Collection; -import java.util.Map; -import java.util.concurrent.ExecutionException; +import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @Controller @RequestMapping("/accounting/accounts") public class AccountController extends AbstractQueueController { private final IStateLoader stateLoader; + private final ImdgPredicateBuilder predicateBuilder; @Autowired - public AccountController(IOperator operator, IStateLoader stateLoader) { + public AccountController(IOperator operator, + IStateLoader stateLoader, + ImdgProvider imdgProvider) { super(operator); this.stateLoader = stateLoader; + this.predicateBuilder = imdgProvider + .getImdg(IMDGDistributedNames.Map_Account, Account.class) + .predicateBuilder(); } @ApiOperation(value = "get all accounts.") @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @RequestMapping(method = RequestMethod.GET) @ResponseBody - public CommonGetAllResponse getAll() { - Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Account, Account.class); + public CommonGetAllResponse getAll(@RequestParam(name = "kind", required = false) String kind) { CommonGetAllResponse response = new CommonGetAllResponse(); - response.fromEntity(all); + if (StringUtils.isEmpty(kind)) { + Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Account, Account.class); + response.fromEntity(all); + } else if (kind.equals("BLKD")) { + ImdgPredicate predicate = predicateBuilder.in("status", + Arrays.asList(Status.Blocked.getKey(), Status.Close.getKey()).toArray(new String[0])); + Collection> allByStatus = stateLoader.getAllMetaTransform( + IMDGDistributedNames.Map_Account, Account.class, predicate); + response.fromEntity(allByStatus); + } else { + throw new ResponseStatusException(HttpStatus.NOT_ACCEPTABLE, "Kind is not supported: " + kind); + } return response; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyController.java index f75928320..aa2615fbd 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/company/CompanyController.java @@ -4,10 +4,21 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import java.util.Collection; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.server.ResponseStatusException; import ru.clearing.classes.statics.data.company.Company; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction; @@ -19,21 +30,26 @@ import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; - -import java.util.Collection; -import java.util.Map; -import java.util.concurrent.ExecutionException; +import ru.spcex.platform.enumeration.WorkflowStatus; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @Controller @RequestMapping("/companies") public class CompanyController extends AbstractQueueController { private final IStateLoader stateLoader; + private final ImdgPredicateBuilder predicateBuilder; @Autowired public CompanyController(IOperator operator, - IStateLoader stateLoader) { + IStateLoader stateLoader, + ImdgProvider imdgProvider) { super(operator); this.stateLoader = stateLoader; + this.predicateBuilder = imdgProvider + .getImdg(IMDGDistributedNames.Map_Company, Company.class) + .predicateBuilder(); } @ApiOperation(value = "delete company.") @@ -51,10 +67,19 @@ public class CompanyController extends AbstractQueueController { @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @RequestMapping(method = RequestMethod.GET) @ResponseBody - public CommonGetAllResponse getAll() { - Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Company, Company.class); + public CommonGetAllResponse getAll(@RequestParam(name = "kind", required = false) String kind) { CommonGetAllResponse response = new CommonGetAllResponse(); - response.fromEntity(all); + if (StringUtils.isEmpty(kind)) { + Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Company, Company.class); + response.fromEntity(all); + } else if (kind.equals("BLKD")){ + ImdgPredicate predicate = predicateBuilder.equals("workflowStatus", WorkflowStatus.Blocked.getKey()); + Collection> allByStatus = stateLoader.getAllMetaTransform( + IMDGDistributedNames.Map_Company, Company.class, predicate); + response.fromEntity(allByStatus); + } else { + throw new ResponseStatusException(HttpStatus.NOT_ACCEPTABLE, "Kind is not supported: " + kind); + } return response; } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryController.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryController.java index 50c5984ab..385ab50e6 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryController.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/controller/queue/registry/TradingClearingRegistryController.java @@ -4,10 +4,23 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ExecutionException; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.server.ResponseStatusException; import ru.clearing.classes.statics.data.registry.TradingClearingRegistry; import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController; import ru.spcex.clearing.backendapi.controller.request.cud.common.CommonDeleteAction; @@ -21,21 +34,26 @@ import ru.spcex.clearing.backendapi.service.IOperator; import ru.spcex.clearing.backendapi.service.IStateLoader; import ru.spcex.clearing.imdg.IMDGDistributedNames; import ru.spcex.clearing.platform.messaging.domain.Consts; - -import java.util.Collection; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ExecutionException; +import ru.spcex.platform.enumeration.Status; +import ru.spcex.platform.imdg.api.ImdgProvider; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicate; +import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder; @Controller @RequestMapping("/trading-clearing-registries") public class TradingClearingRegistryController extends AbstractQueueController { private final IStateLoader stateLoader; + private final ImdgPredicateBuilder predicateBuilder; @Autowired - public TradingClearingRegistryController(IOperator operator, IStateLoader stateLoader) { + public TradingClearingRegistryController(IOperator operator, + IStateLoader stateLoader, + ImdgProvider imdgProvider) { super(operator); this.stateLoader = stateLoader; + this.predicateBuilder = imdgProvider + .getImdg(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class) + .predicateBuilder(); } @ApiOperation(value = "create TradingClearingRegistry.") @@ -88,10 +106,21 @@ public class TradingClearingRegistryController extends AbstractQueueController { @ApiResponses(value = {@ApiResponse(code = 200, message = "OK", response = CommonGetAllResponse.class)}) @RequestMapping(method = RequestMethod.GET) @ResponseBody - public CommonGetAllResponse getAll() { - Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + public CommonGetAllResponse getAll(@RequestParam(name = "kind", required = false) String kind) { CommonGetAllResponse response = new CommonGetAllResponse(); - response.fromEntity(all); + + if (StringUtils.isEmpty(kind)) { + Collection> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class); + response.fromEntity(all); + } else if (kind.equals("BLKD")) { + ImdgPredicate predicate = predicateBuilder.in("status", + Arrays.asList(Status.Blocked.getKey(), Status.Close.getKey()).toArray(new String[0])); + Collection> allByStatus = stateLoader.getAllMetaTransform( + IMDGDistributedNames.Map_TradingClearingRegistry, TradingClearingRegistry.class, predicate); + response.fromEntity(allByStatus); + } else { + throw new ResponseStatusException(HttpStatus.NOT_ACCEPTABLE, "Kind is not supported: " + kind); + } return response; } } diff --git a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Status.java b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Status.java index 182a00fed..e1f60c20b 100644 --- a/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Status.java +++ b/platform-parent/platform-enum/src/main/java/ru/spcex/platform/enumeration/Status.java @@ -5,6 +5,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey; public enum Status implements IEnumKey { Active("ACTV"), Blocked("BLKD"), + Close("CLOS"), Cancel("CNCL"); private final String key;