Bugfix: user supplier "source"-type bugfix

This commit is contained in:
Jan 2025-10-19 14:55:54 +02:00
parent c573d7647f
commit 3d3a4dbfab
7 changed files with 30 additions and 14 deletions

View file

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

View file

@ -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,11 +108,12 @@ 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<NodeDTO> searchNode(String filter, int limit, NodeType nodeType, boolean includeUserNode) { List<NodeDTO> nodes = new ArrayList<>();
public List<NodeDTO> searchNode(String filter, int limit, NodeType nodeType, boolean includeUserNode) {
List<NodeDTO> 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());
nodes.addAll(userNodeRepository.searchNode(filter, limit, userId, true).stream().map(nodeTransformer::toUserNodeDTO).toList());
nodes.forEach(node -> node.setUserNode(true));
limit -= nodes.size();
}

View file

@ -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());
}
}

View file

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

View file

@ -39,7 +39,7 @@ public class ReportingService {
var nodes = new ArrayList<List<NodeDTO>>();
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.

View file

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

View file

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