backend-api "/registries" добавил фильтрацию, а то очень много лишних записей (из 77000 нужных около 3000).

This commit is contained in:
AKurakin 2024-06-04 18:41:56 +03:00
parent 5f2dcba539
commit 3c0cc05d28

View file

@ -4,10 +4,13 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import ru.clearing.classes.statics.data.execution.ExecutionDeposit;
import ru.clearing.classes.statics.data.registry.Registry;
import ru.spcex.clearing.backendapi.controller.queue.AbstractQueueController;
import ru.spcex.clearing.backendapi.controller.request.cud.registry.*;
@ -18,7 +21,12 @@ 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 ru.spcex.platform.enumeration.RegistryDesignation;
import ru.spcex.platform.imdg.api.ImdgProvider;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicate;
import ru.spcex.platform.imdg.api.predicate.ImdgPredicateBuilder;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ExecutionException;
@ -26,12 +34,17 @@ import java.util.concurrent.ExecutionException;
@Controller
@RequestMapping("/registries")
public class RegistryController extends AbstractQueueController {
protected final Logger log = LoggerFactory.getLogger(getClass());
private final IStateLoader stateLoader;
private final ImdgPredicateBuilder predicateBuilder;
@Autowired
public RegistryController(IOperator operator, IStateLoader stateLoader) {
public RegistryController(IOperator operator, IStateLoader stateLoader, ImdgProvider imdgProvider) {
super(operator);
this.stateLoader = stateLoader;
this.predicateBuilder = imdgProvider
.getImdg(IMDGDistributedNames.Map_ExecutionDeposit, ExecutionDeposit.class)
.predicateBuilder();
}
@ApiOperation(value = "get all registries.")
@ -39,9 +52,25 @@ public class RegistryController extends AbstractQueueController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public CommonGetAllResponse getAll() {
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Registry, Registry.class);
// long t1 = System.currentTimeMillis();
ImdgPredicate filter = predicateBuilder.or(
predicateBuilder.equals("registryDesignation", RegistryDesignation.A.getKey()),
predicateBuilder.equals("registryDesignation", RegistryDesignation.D.getKey()),
predicateBuilder.and(
predicateBuilder.or(
predicateBuilder.equals("registryDesignation", RegistryDesignation.O.getKey()),
predicateBuilder.equals("registryDesignation", RegistryDesignation.T.getKey())
),
predicateBuilder.greatEqual("settlementDate", LocalDate.now())
)
);
Collection<Map<String, Object>> all = stateLoader.getAllMetaTransform(IMDGDistributedNames.Map_Registry, Registry.class,
filter);
// long t2 = System.currentTimeMillis();
// log.info("Info select and format {} data {}", all.size(), t2 - t1);
CommonGetAllResponse response = new CommonGetAllResponse();
response.fromEntity(all);
// log.info("Info select and format {} data {}", all.size(), System.currentTimeMillis() - t2);
return response;
}