gpt4 book ai didi

java - 实现订单排序

转载 作者:行者123 更新时间:2023-11-30 01:49:27 26 4
gpt4 key购买 nike

我想在拖动一个过滤器时对分配给 Spring 端点中的终端的过滤器列表进行排序,并再次计算所有过滤器的顺序。我试过这个:

DTO:

public class FilterNewDTO {

private Integer id;

private Integer terminal_id;

private Integer position;

private Integer parent_id;
}

端点:

@PostMapping("filter/updated_position/{id}")
public ResponseEntity<?> saveFilterPosition(@PathVariable Integer id, @RequestBody FilterNewDTO dto) {

List<Filters> list = filterService.findFiltersByTerminalId(dto.getTerminal_id());

for (int i=0; i<list.size(); i++) {
Filters filter = list.get(i);

int current_position = 0;
current_position = filter.getPosition();

filter.setPosition(current_position + 1);
filter.update(risk_mapper.toFilter(dto));

filterService.save(filter);
}

return ok().build();
}

但正如您所看到的,我只是按终端 ID 迭代过滤器列表。如果我将过滤器位置从 3 更改为 5 会发生什么?我认为第 1-3 部分不应增加。您能给我一些如何实现的指导吗?

最佳答案

不要将过滤器视为单独的过滤器,而是将它们视为一个整体。您将获得过滤器列表,并将它们重新排列在新列表中。您对订单感到满意,然后更新所有订单,而不是逐一更新。您不必担心此操作的性能,因为 hibernate 将设法区分已更改的过滤器和未更改的过滤器。

类似于:

    List<Filter> originalList;
List<Filter> newlyOrderedList;

//do your ordering here

filterRepository.saveAll(newlyOrderedList);

关于java - 实现订单排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56575968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com