You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fu-hsi-service/src/main/java/com/supervision/police/dto/EvidenceDirectoryDTO.java

191 lines
5.2 KiB
Java

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<EvidenceDirectoryDTO> child;
/**
* id
*/
private List<String> fileIdList = new ArrayList<>();
/**
*
*/
private List<EvidenceFileDTO> 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<String> findDirectoryIdList(String categoryId){
List<String> 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<String> listAllFileId(){
List<String> 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<EvidenceDirectoryDTO> listAllDirectory(){
List<EvidenceDirectoryDTO> 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<String,List<EvidenceFileDTO>> fileMap){
List<EvidenceFileDTO> 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);
}
}
}
}
}