|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|