Java后端实现-元素拖动排序

Java后端实现-元素拖动排序ApiOperation value 板块拖动排序 ApiImplicitP ApiImplicitP name plateId1 value 拖拽体 ApiImplicitP name plateId2 value 参照体 ApiImplicitP name type value 实现类型 1 交换位置 2 挤压位置

@ApiOperation(value = "板块拖动排序") @ApiImplicitParams({ @ApiImplicitParam(name = "plateId1", value = "拖拽体"), @ApiImplicitParam(name = "plateId2", value = "参照体"), @ApiImplicitParam(name = "type", value = "实现类型1交换位置2挤压位置") }) @PostMapping("plateSort") public ServiceResult  plateSort(@RequestParam @NotNull Integer plateId1, @RequestParam @NotNull Integer plateId2, @RequestParam @NotNull @Max(2) @Min(1) Integer type) { //元素原地拖动 if (plateId1.equals(plateId2)) { return success(); } LambdaQueryWrapper 
   
     wrapper = new LambdaQueryWrapper<>(); if (type == 1) { //两个元素交换位置 wrapper .eq(TiebaPlate::getId, plateId1) .or() .eq(TiebaPlate::getId, plateId2); List 
    
      list = tiebaPlateService.list(wrapper); int x = list.get(0).getOrderNum(); int y = list.get(1).getOrderNum(); list.get(0).setOrderNum(y); list.get(1).setOrderNum(x); //将collect更新到数据库 boolean result = tiebaPlateService.updateBatchById(list); Assert.isTrue(result, "服务器异常"); return success(); } else if (type == 2) { if (plateId1 < plateId2) { //将plateId1位置拖到plateId2位置下面 wrapper .between(TiebaPlate::getId, plateId1, plateId2); List 
     
       list = tiebaPlateService.list(wrapper); List 
      
        collect = list.stream().sorted(Comparator.comparingInt(TiebaPlate::getOrderNum)).collect(Collectors.toList()); //排序标记 int[] orderNums = collect.stream().mapToInt(TiebaPlate::getOrderNum).toArray(); //将首位元素挪到末尾 TiebaPlate first = collect.get(0); collect.remove(first); collect.add(first); //将集合元素和排序标记绑定 for (int i = 0; i < orderNums.length; i++) { collect.get(i).setOrderNum(orderNums[i]); } //将collect更新到数据库 boolean result = tiebaPlateService.updateBatchById(collect); Assert.isTrue(result, "服务器异常"); return success(); } else { //将plateId2位置拖到plateId1前面 wrapper .between(TiebaPlate::getId, plateId2, plateId1); List 
       
         list = tiebaPlateService.list(wrapper); List 
        
          collect = list.stream().sorted(Comparator.comparingInt(TiebaPlate::getOrderNum)).collect(Collectors.toList()); //排序标记 int[] orderNums = collect.stream().mapToInt(TiebaPlate::getOrderNum).toArray(); //将末尾元素追加到首位 TiebaPlate last = collect.get(collect.size() - 1); collect.remove(last); Collections.reverse(collect); collect.add(last); Collections.reverse(collect); //将集合元素和排序标记绑定 for (int i = 0; i < orderNums.length; i++) { collect.get(i).setOrderNum(orderNums[i]); } //将collect更新到数据库 boolean result = tiebaPlateService.updateBatchById(collect); Assert.isTrue(result, "服务器异常"); return success(); } } return failure(); } 
         
        
       
      
     
    

思路:如何优雅的实现数据置顶、置尾、交换、拖动排序? – 简书

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219047.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:55
下一篇 2026年3月17日 下午10:55


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号