Skip to content
Snippets Groups Projects
Commit 8fb69c15 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4994 OZG-5068 Vorgänge filtern

parent 5e376f92
No related branches found
No related tags found
No related merge requests found
......@@ -11,9 +11,9 @@ import org.springframework.stereotype.Service;
import de.ozgcloud.alfa.AlfaProperties;
import de.ozgcloud.alfa.common.GrpcUtil;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import de.ozgcloud.vorgang.common.GrpcQueryOperator;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery.GroupMethod;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery.Operator;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticRequest;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResponse;
import de.ozgcloud.vorgang.statistic.StatisticServiceGrpc.StatisticServiceBlockingStub;
......@@ -62,7 +62,7 @@ class StatisticRemoteService {
.setResultName(buildCountByStatusResultName(vorgangStatus))
.setPath(STATUS_PATH)
.setGroupMethod(GroupMethod.COUNT)
.setOperator(Operator.EQUAL)
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandStringValue(vorgangStatus.name())
.build();
}
......@@ -72,7 +72,7 @@ class StatisticRemoteService {
.setResultName(COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME)
.setPath(String.format(WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, alfaProperties.getApplicationName()))
.setGroupMethod(GroupMethod.COUNT)
.setOperator(Operator.UNEQUAL)
.setOperator(GrpcQueryOperator.UNEQUAL)
.build();
}
......@@ -81,7 +81,7 @@ class StatisticRemoteService {
.setResultName(EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME)
.setPath(String.format(WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, alfaProperties.getApplicationName()))
.setGroupMethod(GroupMethod.EXISTS)
.setOperator(Operator.LESS_THEN_OR_EQUAL_TO)
.setOperator(GrpcQueryOperator.LESS_THEN_OR_EQUAL_TO)
.setOperandStringValue(OPERAND_TODAY_DATE)
.build();
}
......@@ -102,7 +102,7 @@ class StatisticRemoteService {
.setResultName(COUNT_VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_RESULT_NAME)
.setPath(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH)
.setGroupMethod(GroupMethod.COUNT)
.setOperator(Operator.EQUAL)
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandBoolValue(true)
.build();
}
......
......@@ -22,4 +22,5 @@ class FilterCriteria {
@Builder.Default
private Optional<UserId> assignedTo = Optional.empty();
private boolean hasNextWiedervorlageFrist;
private boolean hasUngeleseneNachrichten;
}
package de.ozgcloud.alfa.vorgang;
import lombok.Builder;
import lombok.Getter;
@Builder(toBuilder = true)
@Getter
public class ResultPageRequestCriteria {
private int page;
private int limit;
private OrderBy orderBy;
}
......@@ -25,8 +25,6 @@ package de.ozgcloud.alfa.vorgang;
import java.util.Optional;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.hateoas.EntityModel;
......@@ -46,6 +44,7 @@ import de.ozgcloud.alfa.common.clientattribute.ClientAttributeService;
import de.ozgcloud.alfa.common.user.UserId;
import de.ozgcloud.alfa.statistic.StatisticController;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import jakarta.servlet.http.HttpServletResponse;
@RestController
@RequestMapping(VorgangController.PATH)
......@@ -195,12 +194,23 @@ public class VorgangController {
@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_NACHRICHTEN })
public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByUngeleseneNachrichten(@RequestParam int page, @RequestParam Integer limit,
@RequestParam String nachrichten) {
return EntityModel.of(EnhancedVorgang.builder().build());
var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
.filterCriteria(FilterCriteria.builder().hasUngeleseneNachrichten(PARAM_NACHRICHTEN_UNGELESENE.equals(nachrichten)).build())
.build();
return handleGetAllRequest(requestCriteria);
}
@GetMapping(params = { PARAM_PAGE, PARAM_LIMIT, PARAM_ASSIGNED_TO, PARAM_NACHRICHTEN })
public RepresentationModel<EntityModel<EnhancedVorgang>> getAllByAssignedToAndUngeleseneNachrichten(@RequestParam int page,
@RequestParam Integer limit, @RequestParam UserId assignedTo, @RequestParam String nachrichten) {
return EntityModel.of(EnhancedVorgang.builder().build());
var requestCriteria = FindVorgaengeHeaderRequestCriteria.builder().page(page).limit(limit)
.filterCriteria(FilterCriteria.builder()
.filterByAssignedTo(true).assignedTo(asOptional(assignedTo))
.hasUngeleseneNachrichten(PARAM_NACHRICHTEN_UNGELESENE.equals(nachrichten))
.build())
.build();
return handleGetAllRequest(requestCriteria);
}
}
\ No newline at end of file
......@@ -29,12 +29,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.ozgcloud.alfa.common.GrpcUtil;
import de.ozgcloud.vorgang.common.GrpcQueryOperator;
import de.ozgcloud.vorgang.vorgang.GrpcFilterBy;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest.GrpcOrderBy;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangRequest;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangResponse;
import de.ozgcloud.vorgang.vorgang.GrpcQuery;
import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression;
import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
import net.devh.boot.grpc.client.inject.GrpcClient;
......@@ -59,18 +62,36 @@ class VorgangRemoteService {
GrpcFindVorgangRequest buildFindVorgangRequest(FindVorgaengeHeaderRequestCriteria requestCriteria, FilterCriteria filterCriteria) {
var requestBuilder = createFindVorgangRequestBuilder(requestCriteria, filterCriteria);
requestCriteria.getSearchBy().ifPresent(requestBuilder::setSearchBy);
// requestCriteria.getSearchBy().ifPresent(requestBuilder::setSearchBy);
requestCriteria.getSearchBy().ifPresentOrElse(
requestBuilder::setSearchBy,
() -> requestBuilder.setQuery(mapToGrpcQuery(filterCriteria)));
return requestBuilder.build();
}
private GrpcFindVorgangRequest.Builder createFindVorgangRequestBuilder(FindVorgaengeHeaderRequestCriteria requestCriteria,
FilterCriteria filterCriteria) {
return createFindVorgangRequestBuilder(requestCriteria).setFilterBy(mapFilterCriteria(filterCriteria));
}
private GrpcFindVorgangRequest.Builder createFindVorgangRequestBuilder(FindVorgaengeHeaderRequestCriteria requestCriteria) {
return GrpcFindVorgangRequest.newBuilder()
.setOrderBy(GrpcOrderBy.valueOf(requestCriteria.getOrderBy().name()))
.setLimit(requestCriteria.getLimit())
.setOffset(requestCriteria.getPage() * requestCriteria.getLimit())
.setFilterBy(mapFilterCriteria(filterCriteria));
.setOffset(requestCriteria.getPage() * requestCriteria.getLimit());
}
private GrpcQuery mapToGrpcQuery(FilterCriteria filterCriteria) {
var queryBuilder = GrpcQuery.newBuilder();
if (filterCriteria.isHasUngeleseneNachrichten()) {
queryBuilder.addExpressions(GrpcVorgangQueryExpression.newBuilder()
.setPath("ClientAttribute.OzgCloud_NachrichtenManager.hasNewPostfachNachricht")
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandBoolValue(true)
.build());
}
return queryBuilder.build();
}
VorgaengeHeaderResponse buildVorgaengeHeaderResponse(GrpcFindVorgangResponse response) {
......
......@@ -25,9 +25,9 @@ import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.alfa.AlfaProperties;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import de.ozgcloud.vorgang.common.GrpcQueryOperator;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery.GroupMethod;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticQuery.Operator;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticRequest;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResponse;
import de.ozgcloud.vorgang.statistic.GrpcVorgangStatisticResult;
......@@ -82,7 +82,7 @@ class StatisticRemoteServiceTest {
void shouldContainOperator(VorgangStatus vorgangStatus) {
var query = service.buildCountByVorgangStatusQuery(vorgangStatus);
assertThat(query.getOperator()).isEqualTo(Operator.EQUAL);
assertThat(query.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
}
@ParameterizedTest
......@@ -129,7 +129,7 @@ class StatisticRemoteServiceTest {
.contains(
COUNT_WIEDERVORLAGE_NEXT_FRIST_RESULT_NAME,
String.format(StatisticRemoteService.WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, applicationName),
Operator.UNEQUAL,
GrpcQueryOperator.UNEQUAL,
GroupMethod.COUNT
);
}
......@@ -170,7 +170,7 @@ class StatisticRemoteServiceTest {
void shouldContainOperator() {
var query = service.buildExistsWiedervorlageOverdueQuery();
assertThat(query.getOperator()).isEqualTo(Operator.LESS_THEN_OR_EQUAL_TO);
assertThat(query.getOperator()).isEqualTo(GrpcQueryOperator.LESS_THEN_OR_EQUAL_TO);
}
@Test
......@@ -325,7 +325,7 @@ class StatisticRemoteServiceTest {
void shouldHaveOperator() {
var query = callService();
assertThat(query.getOperator()).isEqualTo(Operator.EQUAL);
assertThat(query.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
}
@Test
......
......@@ -50,7 +50,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<vorgang-manager.version>2.3.0</vorgang-manager.version>
<vorgang-manager.version>2.4.0-SNAPSHOT</vorgang-manager.version>
<ozgcloud-common-pdf.version>3.0.1</ozgcloud-common-pdf.version>
<user-manager.version>2.2.0</user-manager.version>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment