From 3d3a4dbfab31253742c71664e393d202a560d7d7 Mon Sep 17 00:00:00 2001 From: Jan Date: Sun, 19 Oct 2025 14:55:54 +0200 Subject: [PATCH] Bugfix: user supplier "source"-type bugfix --- .../lcc/service/access/DestinationService.java | 2 +- .../avatic/lcc/service/access/NodeService.java | 18 +++++++++--------- .../lcc/service/access/UserNodeService.java | 2 +- .../PremiseSearchStringAnalyzerService.java | 2 +- .../lcc/service/report/ReportingService.java | 2 +- .../transformer/generic/NodeTransformer.java | 16 ++++++++++++++++ .../premise/PremiseTransformer.java | 2 +- 7 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/main/java/de/avatic/lcc/service/access/DestinationService.java b/src/main/java/de/avatic/lcc/service/access/DestinationService.java index dde17cf..a27f091 100644 --- a/src/main/java/de/avatic/lcc/service/access/DestinationService.java +++ b/src/main/java/de/avatic/lcc/service/access/DestinationService.java @@ -195,7 +195,7 @@ public class DestinationService { userNodes.put(premise.getUserSupplierNodeId(), userNodeRepository.getById(premise.getUserSupplierNodeId()).orElseThrow()); } - routes.put(ids, routingService.findRoutes(nodes.get(destinationId), nodes.get(premise.getSupplierNodeId()), isUserSupplierNode)); + routes.put(ids, routingService.findRoutes(nodes.get(destinationId), isUserSupplierNode ? userNodes.get(premise.getUserSupplierNodeId()) : nodes.get(premise.getSupplierNodeId()), isUserSupplierNode)); } } diff --git a/src/main/java/de/avatic/lcc/service/access/NodeService.java b/src/main/java/de/avatic/lcc/service/access/NodeService.java index 02fd7a4..4b10b9d 100644 --- a/src/main/java/de/avatic/lcc/service/access/NodeService.java +++ b/src/main/java/de/avatic/lcc/service/access/NodeService.java @@ -1,17 +1,16 @@ package de.avatic.lcc.service.access; -import de.avatic.lcc.dto.generic.NodeDTO; -import de.avatic.lcc.dto.configuration.nodes.view.NodeDetailDTO; import de.avatic.lcc.dto.configuration.nodes.update.NodeUpdateDTO; +import de.avatic.lcc.dto.configuration.nodes.view.NodeDetailDTO; +import de.avatic.lcc.dto.generic.NodeDTO; import de.avatic.lcc.dto.generic.NodeType; import de.avatic.lcc.repositories.NodeRepository; -import de.avatic.lcc.repositories.country.CountryRepository; import de.avatic.lcc.repositories.pagination.SearchQueryPagination; import de.avatic.lcc.repositories.pagination.SearchQueryResult; import de.avatic.lcc.repositories.users.UserNodeRepository; -import de.avatic.lcc.service.transformer.nodes.NodeUpdateDTOTransformer; -import de.avatic.lcc.service.transformer.nodes.NodeDetailTransformer; import de.avatic.lcc.service.transformer.generic.NodeTransformer; +import de.avatic.lcc.service.transformer.nodes.NodeDetailTransformer; +import de.avatic.lcc.service.transformer.nodes.NodeUpdateDTOTransformer; import de.avatic.lcc.service.users.AuthorizationService; import de.avatic.lcc.util.exception.badrequest.NodeNotFoundException; import de.avatic.lcc.util.exception.badrequest.NotFoundException; @@ -109,16 +108,17 @@ public class NodeService { * @param includeUserNode if true, includes user-specific nodes in the search results. * @return a list of {@link NodeDTO} objects representing the search results. */ - public List searchNode(String filter, int limit, NodeType nodeType, boolean includeUserNode) { List nodes = new ArrayList<>(); + public List searchNode(String filter, int limit, NodeType nodeType, boolean includeUserNode) { + List nodes = new ArrayList<>(); int userId = authorizationService.getUserId(); - if( includeUserNode && NodeType.SOURCE.equals(nodeType)) { - nodes.addAll(userNodeRepository.searchNode(filter, limit, userId, true).stream().map(nodeTransformer::toNodeDTO).toList()); + if (includeUserNode && NodeType.SOURCE.equals(nodeType)) { + nodes.addAll(userNodeRepository.searchNode(filter, limit, userId, true).stream().map(nodeTransformer::toUserNodeDTO).toList()); nodes.forEach(node -> node.setUserNode(true)); limit -= nodes.size(); } - if(limit > 0) { + if (limit > 0) { nodes.addAll(nodeRepository.searchNode(filter, limit, nodeType, true).stream().map(nodeTransformer::toNodeDTO).toList()); } diff --git a/src/main/java/de/avatic/lcc/service/access/UserNodeService.java b/src/main/java/de/avatic/lcc/service/access/UserNodeService.java index e6598df..fc81548 100644 --- a/src/main/java/de/avatic/lcc/service/access/UserNodeService.java +++ b/src/main/java/de/avatic/lcc/service/access/UserNodeService.java @@ -64,6 +64,6 @@ public class UserNodeService { var id = userNodeRepository.add(userId, node); - return nodeTransformer.toNodeDTO(userNodeRepository.getById(id).orElseThrow()); + return nodeTransformer.toUserNodeDTO(userNodeRepository.getById(id).orElseThrow()); } } diff --git a/src/main/java/de/avatic/lcc/service/calculation/PremiseSearchStringAnalyzerService.java b/src/main/java/de/avatic/lcc/service/calculation/PremiseSearchStringAnalyzerService.java index 5a450c1..2dab252 100644 --- a/src/main/java/de/avatic/lcc/service/calculation/PremiseSearchStringAnalyzerService.java +++ b/src/main/java/de/avatic/lcc/service/calculation/PremiseSearchStringAnalyzerService.java @@ -83,7 +83,7 @@ public class PremiseSearchStringAnalyzerService { dto.setMaterials(material.stream().map(materialTransformer::toMaterialDTO).toList()); dto.setSupplier(nodeRepository.getByIds(supplierIds).stream().map(nodeTransformer::toNodeDTO).toList()); - dto.setUserSupplier(userNodeRepository.getByIds(userSupplierIds).stream().map(nodeTransformer::toNodeDTO).toList()); + dto.setUserSupplier(userNodeRepository.getByIds(userSupplierIds).stream().map(nodeTransformer::toUserNodeDTO).toList()); return dto; } diff --git a/src/main/java/de/avatic/lcc/service/report/ReportingService.java b/src/main/java/de/avatic/lcc/service/report/ReportingService.java index e485d21..f33cffd 100644 --- a/src/main/java/de/avatic/lcc/service/report/ReportingService.java +++ b/src/main/java/de/avatic/lcc/service/report/ReportingService.java @@ -39,7 +39,7 @@ public class ReportingService { var nodes = new ArrayList>(); for (var periodId : periodIds) { var periodNodes = new ArrayList<>(nodeRepository.findNodeListsForReportingByPeriodId(materialId, periodId).stream().map(nodeTransformer::toNodeDTO).toList()); - periodNodes.addAll(userNodeRepository.findNodeListsForReportingByPeriodId(materialId, periodId).stream().map(nodeTransformer::toNodeDTO).peek(n -> n.setUserNode(true)).toList()); + periodNodes.addAll(userNodeRepository.findNodeListsForReportingByPeriodId(materialId, periodId).stream().map(nodeTransformer::toUserNodeDTO).peek(n -> n.setUserNode(true)).toList()); //TODO destinations have to match. diff --git a/src/main/java/de/avatic/lcc/service/transformer/generic/NodeTransformer.java b/src/main/java/de/avatic/lcc/service/transformer/generic/NodeTransformer.java index f01db86..eec5e08 100644 --- a/src/main/java/de/avatic/lcc/service/transformer/generic/NodeTransformer.java +++ b/src/main/java/de/avatic/lcc/service/transformer/generic/NodeTransformer.java @@ -50,6 +50,22 @@ public class NodeTransformer { return dto; } + public NodeDTO toUserNodeDTO(Node entity) { + NodeDTO dto = new NodeDTO(); + + dto.setId(entity.getId()); + dto.setName(entity.getName()); + dto.setAddress(entity.getAddress()); + dto.setCountry(countryTransformerService.toCountryDTO(countryRepository.getById(entity.getCountryId()).orElseThrow())); + dto.setTypes(List.of(NodeType.SOURCE)); + dto.setDeprecated(entity.getDeprecated()); + dto.setLocation(locationTransformer.toLocationDTO(entity)); + dto.setUserNode(true); + dto.setExternalMappingId(entity.getExternalMappingId()); + + return dto; + } + public NodeDTO toNodeDTO(RouteNode entity) { NodeDTO dto = new NodeDTO(); diff --git a/src/main/java/de/avatic/lcc/service/transformer/premise/PremiseTransformer.java b/src/main/java/de/avatic/lcc/service/transformer/premise/PremiseTransformer.java index 17574d7..1db79c2 100644 --- a/src/main/java/de/avatic/lcc/service/transformer/premise/PremiseTransformer.java +++ b/src/main/java/de/avatic/lcc/service/transformer/premise/PremiseTransformer.java @@ -102,7 +102,7 @@ public class PremiseTransformer { dto.setSupplier(nodeRepository.getById(entity.getSupplierNodeId()).map(nodeTransformer::toNodeDTO).orElseThrow()); if (entity.getUserSupplierNodeId() != null) { - dto.setSupplier(userNodeRepository.getById(entity.getUserSupplierNodeId()).map(nodeTransformer::toNodeDTO).orElseThrow()); + dto.setSupplier(userNodeRepository.getById(entity.getUserSupplierNodeId()).map(nodeTransformer::toUserNodeDTO).orElseThrow()); dto.getSupplier().setUserNode(true); }