etreschenkov 2026-04-22 12:05:05 +03:00
parent a88dd57857
commit 63ec986491
4 changed files with 111 additions and 28 deletions

View file

@ -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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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;
}

View file

@ -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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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;
}

View file

@ -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<Map<String, Object>> 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<Map<String, Object>> 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<Map<String, Object>> 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;
}
}

View file

@ -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;