欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java目錄樹的創(chuàng)建與獲取

 更新時間:2024年03月31日 09:06:54   作者:Java中的戰(zhàn)斗機  
在Java開發(fā)中,經(jīng)常會涉及到生成目錄樹的需求,本文主要介紹了Java目錄樹的創(chuàng)建與獲取,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧

在Java開發(fā)中,經(jīng)常會涉及到生成目錄樹的需求,目錄樹是一種樹狀結(jié)構(gòu),用于表示文件系統(tǒng)中的目錄和文件之間的層次關(guān)系。下面就來介紹一下Java目錄樹的創(chuàng)建與獲取,具體如下:

邏輯代碼

    /**
     * @描述 應(yīng)用目錄樹添加
     * @作者 梁偉浩
     * @日期 2024/3/29 15:30
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R saveApplyContent(ApplyDirContentRequest request) {
        BiProjectDir projectDir = new BiProjectDir();
        BeanUtil.copyProperties(request, projectDir);
        projectDir.setCreateUser(request.getUserId());
        projectDir.setCreateTime(new Date());
        projectDir.setUpdateUser(request.getUserId());
        projectDir.setUpdateTime(new Date());
        // 參數(shù)沒傳父級ID,則進入方法查詢是否有父級目錄,有則取其ID作為父ID無則創(chuàng)建根節(jié)點配置
        if (ObjectUtil.isEmpty(request.getParentId())) {
            BiProjectDir rootContent = this.getRootContent(request.getProjectId());
            //獲取父級ID
            projectDir.setParentId(rootContent.getId());
        }
        biProjectDirMapper.insert(projectDir);
        return R.data(projectDir);
    }


    private BiProjectDir getRootContent(Long projectId) {
      //查出同一項目下的所有目錄與文件
        BiProjectDir rootContent = biProjectDirMapper.selectOne(new LambdaQueryWrapper<BiProjectDir>().eq(BiProjectDir::getProjectId,projectId).eq(BiProjectDir::getName,"根節(jié)點配置"));
        if (rootContent == null) {
            // 如果沒有根節(jié)點配置,則自動新建根節(jié)點配置
            rootContent = new BiProjectDir();
            rootContent.setName("根節(jié)點配置");
            rootContent.setProjectId(projectId);
            rootContent.setSort(1);
            biProjectDirMapper.insert(rootContent);
        }
        return rootContent;
    }

    /**
     * @param projectId 項目ID
     * @描述 獲取應(yīng)用目錄樹
     * @作者 梁偉浩
     * @日期 2024/3/30 14:20 星期六
     */
    @Override
    public R<List<ApplyContentResponse>> getApplyContent(Long projectId) {
        List<BiProjectDir> biProjectDirs = biProjectDirMapper.selectList(new LambdaQueryWrapper<BiProjectDir>().eq(BiProjectDir::getProjectId, projectId));
        if (!biProjectDirs.isEmpty()){
            //構(gòu)建目錄樹
            List<ApplyContentResponse> list = ListTreeUtil.build(biProjectDirs, "id", "parentId", null, ApplyContentResponse.class, Comparator.comparing(ApplyContentResponse::getSort));
            System.out.println(list);
            return R.data(list);
        }
        return null;
    }

實體

package com.guodi.bi.dmp.entiy;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.util.Date;

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 項目專題目錄圖層表
 */
@Data
@ApiModel(value = "項目專題目錄圖層表", description = "項目專題目錄圖層表")
@TableName("bi_project_dir")
public class BiProjectDir {
    /**
     * 主鍵ID
     */
    @ApiModelProperty(value = "主鍵ID")
    private Long id;

    /**
     * 名稱
     */
    @ApiModelProperty(value = "名稱")
    private String name;

    /**
     * 上級ID
     */
    @ApiModelProperty(value = "上級ID")
    private Long parentId;


    /**
     * 備注
     */
    @ApiModelProperty(value = "備注")
    private String remark;

    /**
     * 目錄/圖層(1.目錄,2圖層)
     */
    @ApiModelProperty(value = "目錄/圖層(1.目錄,2圖層)")
    private Integer type;

    /**
     * 顯示順序
     */
    @ApiModelProperty(value = "顯示順序")
    private Integer sort;

    /**
     * 項目ID
     */
    @ApiModelProperty(value = "項目ID")
    private Long projectId;

    /**
     * 項目數(shù)據(jù)頁面ID
     */
    @ApiModelProperty(value = "項目數(shù)據(jù)頁面ID")
    private Long projectDataId;

    /**
     * 創(chuàng)建人
     */
    @ApiModelProperty(value = "創(chuàng)建人")
    private Long createUser;

    /**
     * 創(chuàng)建時間
     */
    @ApiModelProperty(value = "創(chuàng)建時間")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 更新人
     */
    @ApiModelProperty(value = "更新人")
    private Long updateUser;

    /**
     * 更新時間
     */
    @ApiModelProperty(value = "更新時間")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 是否已刪除
     */
    @TableLogic
    @ApiModelProperty(value = "是否已刪除")
    private Integer isDeleted = 0;
}

響應(yīng)實體

package com.guodi.bi.dmp.vo.response;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.guodi.bi.dmp.entiy.BiProjectDir;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * @author 梁偉浩
 * @description 應(yīng)用目錄樹返回實體
 * @date 2024/3/30 14:15
 * @study 星期六
 */
@Data
public class ApplyContentResponse  extends BiProjectDir {

    /**
     * 子孫節(jié)點
     */
    @ApiModelProperty(value = "子節(jié)點")
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<BiProjectDir> children;

}

到此這篇關(guān)于Java目錄樹的創(chuàng)建與獲取的文章就介紹到這了,更多相關(guān)Java目錄樹創(chuàng)建與獲取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評論