package com.supervision.police.dto; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.supervision.police.domain.EvidenceDirectory; import lombok.Data; import java.awt.*; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 案件证据目录 */ @Data public class EvidenceDirectoryDTO { /** * 目录id */ private String id; /** * 目录名 */ private String directoryName; /** * 父级目录id */ private String parentId; /** * 目录分类 */ private String categoryId; /** * 子目录 */ private List child; /** * 文件id,接收前端传入的参数 */ private List fileIdList = new ArrayList<>(); /** * 文件信息 */ private List fileInfoList = new ArrayList<>(); private int level = -1; public EvidenceDirectoryDTO() { } public EvidenceDirectoryDTO(EvidenceDirectory directory){ if (directory == null){ return; } this.id = directory.getId(); this.directoryName = directory.getDirectoryName(); this.categoryId = directory.getCategoryId(); this.parentId = directory.getParentId(); this.child = new ArrayList<>(); } public EvidenceDirectoryDTO findDirectory(String directoryId){ if (StrUtil.isEmpty(directoryId)){ return null; } if (StrUtil.equals(this.id, directoryId)){ return this; } if (CollUtil.isNotEmpty(this.getChild())){ for (EvidenceDirectoryDTO evidenceDirectoryDTO : this.getChild()) { EvidenceDirectoryDTO directoryDTO = evidenceDirectoryDTO.findDirectory(directoryId); if (directoryDTO != null){ return directoryDTO; } } } return null; } public List findDirectoryIdList(String categoryId){ List list = new ArrayList<>(); if (StrUtil.equals(this.categoryId, categoryId)){ list.add(this.id); } if (CollUtil.isNotEmpty(this.child)){ for (EvidenceDirectoryDTO directoryDTO : this.child) { if (StrUtil.equals(directoryDTO.getCategoryId(), categoryId)){ list.addAll(directoryDTO.findDirectoryIdList(categoryId)); } } } return list; } public List listAllFileId(){ List fileIdList = new ArrayList<>(); if (CollUtil.isNotEmpty(this.fileIdList)){ fileIdList.addAll(this.fileIdList); } if (CollUtil.isNotEmpty(this.child)){ for (EvidenceDirectoryDTO child : this.getChild()) { fileIdList.addAll(child.listAllFileId()); } } return fileIdList; } public List listAllDirectory(){ List directoryList = new ArrayList<>(); directoryList.add(this); if (CollUtil.isNotEmpty(this.child)){ for (EvidenceDirectoryDTO child : this.getChild()) { directoryList.addAll(child.listAllDirectory()); } } return directoryList; } public int evalLevel(String id, int currentLevel) { if (StrUtil.isEmpty(id)){ return -1; } if (StrUtil.equals(this.id, id)){ return currentLevel; } if (CollUtil.isNotEmpty(this.child)){ for (EvidenceDirectoryDTO evidenceCategoryDTO : child) { int level = evidenceCategoryDTO.evalLevel(id, currentLevel + 1); if (level != -1){ return level; } } } return -1; } public void setDirectoryLevel(int currentLevel){ this.level = currentLevel; if (CollUtil.isNotEmpty(this.child)){ for (EvidenceDirectoryDTO directoryDTO : this.getChild()) { directoryDTO.setDirectoryLevel(currentLevel + 1); } } } public void appendChildDirectory(){ if (CollUtil.isNotEmpty(this.child)){ for (EvidenceDirectoryDTO directoryDTO : child) { EvidenceFileDTO evidenceFileDTO = new EvidenceFileDTO(); evidenceFileDTO.setFileId(directoryDTO.getId()); evidenceFileDTO.setDirectoryId(this.id); evidenceFileDTO.setDirectoryFlag("1"); evidenceFileDTO.setFileName(directoryDTO.getDirectoryName()); this.fileInfoList.add(evidenceFileDTO); // 递归子级目录 directoryDTO.appendChildDirectory(); } } } public void appendChildFile(Map> fileMap){ List evidenceFileDTOS = fileMap.get(this.id); if (CollUtil.isNotEmpty(evidenceFileDTOS)){ this.fileInfoList.addAll(evidenceFileDTOS); }else { if (CollUtil.isNotEmpty(this.getChild())){ for (EvidenceDirectoryDTO directoryDTO : this.child) { directoryDTO.appendChildFile(fileMap); } } } } }