箭头上下排序

该博客展示了如何使用箭头符号在Java后端实现同级别节点的上下位置互换功能。通过提供的代码示例,可以理解具体实现逻辑,尽管代码可能基于特定公司框架进行封装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图

效果说明:同级别节点可以用上下 ↑ ↓ 箭头进行位置互换

在这里插入图片描述

java后端代码如下:此代码用了公司框架封装,如有不明白的可留言
package com.hndfsj.test;

import com.alibaba.fastjson.JSONObject;
import com.hndfsj.app.monitoring.domain.MonitoringNode;
import com.hndfsj.app.monitoring.service.IMonitoringNodeService;
import com.hndfsj.framework.common.MReturnObject;
import com.hndfsj.framework.pager.PageModel;
import com.hndfsj.framework.pager.PageRequest;
import com.hndfsj.framework.pager.SearchCondition;
import com.hndfsj.framework.utils.MessageUtils;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.annotation.Resource;
import java.util.List;

/**
 * <pre>
 * TODO:点击上下箭头进行排序
 * </pre>
 *
 * @author zhangjunchao
 * @date 2019/7/4
 */
public class 上下箭头排序 {

    @Resource
    private IMonitoringNodeService monitoringNodeService;

    // 上下箭头排序
    @ApiOperation("排序接口")
    @GetMapping("/sortNode")
    public JSONObject sortNode(@RequestParam String nodeId, @RequestParam String upOrDown) {
        MonitoringNode lineNode = monitoringNodeService.getById(nodeId);
        PageRequest pageRequest = new PageRequest();
        pageRequest.addAndCondition(MonitoringNode.PARENT_ID, SearchCondition.EQUAL, lineNode.getParentId());
        pageRequest.addSortConditions(MonitoringNode.SORT, PageRequest.ORDER_ASC);
        List<MonitoringNode> list = monitoringNodeService.findAll(pageRequest);

        for (MonitoringNode lineNodeExchanged : list) {
            if (lineNode.getId().equals(lineNodeExchanged.getId())) {
                int index = list.indexOf(lineNodeExchanged);
                // 如果是向上,就和上一个,两个对象互换sort属性
                if ("up".equals(upOrDown)) {
                    if (index != 0) {
                        MonitoringNode lineNodeBeExchanged = list.get(index - 1);
                        sortNode(lineNodeBeExchanged, lineNodeExchanged);
                        MReturnObject mReturnObject = new MReturnObject(MReturnObject.SUCCESS, MessageUtils.OPERA_SUCCESS);
                        return PageModel.getInstance().excludePage(mReturnObject);
                    } else {
                        MReturnObject mReturnObject = new MReturnObject(MReturnObject.ERROR, "该节点已经排在最前,无法继续上移");
                        return PageModel.getInstance().excludePage(mReturnObject);
                    }
                } else if ("down".equals(upOrDown)) {
                    // 如果是向下,就和下一个,两个对象互换sort属性
                    if (index != list.size() - 1) {
                        MonitoringNode lineNodeBeExchanged = list.get(index + 1);
                        sortNode(lineNodeBeExchanged, lineNodeExchanged);
                        MReturnObject mReturnObject = new MReturnObject(MReturnObject.SUCCESS, MessageUtils.OPERA_SUCCESS);
                        return PageModel.getInstance().excludePage(mReturnObject);
                    } else {
                        MReturnObject mReturnObject = new MReturnObject(MReturnObject.ERROR, "该节点已经排在后,无法继续下移");
                        return PageModel.getInstance().excludePage(mReturnObject);
                    }
                } else {
                    MReturnObject mReturnObject = new MReturnObject(MReturnObject.ERROR, MessageUtils.OPERATING_PARAMETERS_ERROR);
                    return PageModel.getInstance().excludePage(mReturnObject);
                }
            }
        }
        return null;
    }

    private void sortNode(MonitoringNode lineNodeBeExchanged, MonitoringNode lineNodeExchanged) {

        if (lineNodeExchanged.getSort() == null) {
            initSort(lineNodeExchanged);
            lineNodeExchanged = monitoringNodeService.getById(lineNodeExchanged.getId());
        }
        if (lineNodeBeExchanged.getSort() == null) {
            initSort(lineNodeBeExchanged);
            lineNodeBeExchanged = monitoringNodeService.getById(lineNodeBeExchanged.getId());
        }
        if (lineNodeExchanged.getSort().equals(lineNodeBeExchanged.getSort())) {
            initSort(lineNodeBeExchanged);
            lineNodeBeExchanged = monitoringNodeService.getById(lineNodeBeExchanged.getId());
            lineNodeExchanged = monitoringNodeService.getById(lineNodeExchanged.getId());
        }
        int be = lineNodeBeExchanged.getSort();
        int ex = lineNodeExchanged.getSort();

        lineNodeBeExchanged.setSort(ex);
        lineNodeExchanged.setSort(be);

        monitoringNodeService.update(lineNodeBeExchanged);
        monitoringNodeService.update(lineNodeExchanged);

    }
    private void initSort(MonitoringNode monitoringNode) {
        if (StringUtils.isNotBlank(monitoringNode.getParentId())) {
            PageRequest pageRequest = new PageRequest();
            pageRequest.addAndCondition(MonitoringNode.PARENT_ID, SearchCondition.EQUAL, monitoringNode.getParentId());
            pageRequest.addSortConditions(MonitoringNode.SORT, PageRequest.ORDER_ASC);
            /* pageRequest.addSortConditions(LineNode.NAME, PageRequest.ORDER_ASC); */
            List<MonitoringNode> nodeslist = monitoringNodeService.findAll(pageRequest);
            if (nodeslist.size() > 0) {
                for (MonitoringNode child : nodeslist) {
                    child.setSort(nodeslist.indexOf(child));
                    monitoringNodeService.update(child);
                }
            }
        } else {
            monitoringNode.setSort(0);
            monitoringNodeService.update(monitoringNode);
        }

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值