新增待办信息

This commit is contained in:
2025-12-20 18:21:54 +08:00
parent ba7bcc3da9
commit ae42fe87ed
45 changed files with 1644 additions and 2383 deletions

View File

@@ -45,4 +45,22 @@ public class MyFileUtils {
logger.error(e.getMessage());
}
}
public static String getIcon(String ext) {
switch (ext) {
case "doc", "docx":
return "icons/file-word-line.svg";
case "xls", "xlsx":
return "icons/file-excel-line.svg";
case "ppt", "pptx":
return "icons/file-ppt-line.svg";
case "pdf":
return "icons/file-pdf-line.svg";
case "zip", "gz":
return "icons/folder-zip-line.svg";
default:
return "icons/file-text-line.svg";
}
}
}

View File

@@ -0,0 +1,34 @@
package com.jeesite.modules.app.utils;
import com.jeesite.modules.biz.entity.BizFolders;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class MyUtils {
public static Map<String, Object> convertToTreeNode(BizFolders folder, String parentName) {
Map<String, Object> node = new HashMap<>();
node.put("folderId", folder.getFolderId());
node.put("folderName", folder.getFolderName());
node.put("parentId", folder.getParentId());
node.put("parentName", parentName);
node.put("userName", folder.getUserName());
node.put("loginCode", folder.getLoginCode());
node.put("children", new ArrayList<>());
return node;
}
public static Map<String, Object> convertToTreeNode(BizFolders folder, boolean isDisabled) {
Map<String, Object> node = new HashMap<>();
node.put("id", folder.getFolderId()); // folderId → id
node.put("name", folder.getFolderName()); // folderName → name
node.put("children", new ArrayList<>()); // 初始化children空数组
if (isDisabled) {
node.put("disabled", true);
}
return node;
}
}

View File

@@ -2,6 +2,7 @@ package com.jeesite.modules.biz.entity;
import java.io.Serializable;
import java.util.Date;
import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.fasterxml.jackson.annotation.JsonFormat;
@@ -25,91 +26,95 @@ import java.io.Serial;
/**
* 文件信息Entity
*
* @author gaoxq
* @version 2025-12-18
*/
@EqualsAndHashCode(callSuper = true)
@Table(name="biz_myfiles", alias="a", label="文件信息信息", columns={
@Column(name="create_time", attrName="createTime", label="记录时间", isUpdate=false, isUpdateForce=true),
@Column(name="id", attrName="tid", label="文件标识", isPK=true),
@Column(name="file_name", attrName="fileName", label="原始名称", queryType=QueryType.LIKE),
@Column(name="file_path", attrName="filePath", label="存储路径", isQuery=false),
@Column(name="file_hash", attrName="fileHash", label="文件MD5"),
@Column(name="file_size", attrName="fileSize", label="文件大小", isQuery=false),
@Column(name="file_ext", attrName="fileExt", label="文件扩展名", isQuery=false),
@Column(name="mime_type", attrName="mimeType", label="文件类型", isQuery=false),
@Column(name="folder_id", attrName="folderId", label="文件夹标识"),
@Column(name="user_name", attrName="userName", label="用户姓名", isUpdate=false, isQuery=false),
@Column(name="login_code", attrName="loginCode", label="用户名称", isUpdate=false),
@Column(name="download_count", attrName="downloadCount", label="下载次数", isUpdate=false, isQuery=false, isUpdateForce=true),
@Column(name="view_count", attrName="viewCount", label="查看次数", isUpdate=false, isQuery=false, isUpdateForce=true),
@Column(name="expire_time", attrName="expireTime", label="过期时间", isQuery=false, isUpdateForce=true),
@Column(name="is_delete", attrName="isDelete", label="是否删除", isUpdateForce=true),
@Column(name="update_time", attrName="updateTime", label="更新时间", isQuery=false, isUpdateForce=true),
}, orderBy="a.create_time DESC"
@Table(name = "biz_myfiles", alias = "a", label = "文件信息信息", columns = {
@Column(name = "create_time", attrName = "createTime", label = "记录时间", isUpdate = false, isUpdateForce = true),
@Column(name = "id", attrName = "id", label = "文件标识", isPK = true),
@Column(name = "file_name", attrName = "fileName", label = "原始名称", queryType = QueryType.LIKE),
@Column(name = "file_path", attrName = "filePath", label = "存储路径", isQuery = false),
@Column(name = "file_hash", attrName = "fileHash", label = "文件MD5"),
@Column(name = "file_size", attrName = "fileSize", label = "文件大小", isQuery = false),
@Column(name = "file_ext", attrName = "fileExt", label = "文件扩展名", isQuery = false),
@Column(name = "mime_type", attrName = "mimeType", label = "文件类型", isQuery = false),
@Column(name = "folder_id", attrName = "folderId", label = "文件夹标识"),
@Column(name = "user_name", attrName = "userName", label = "用户姓名", isUpdate = false, isQuery = false),
@Column(name = "login_code", attrName = "loginCode", label = "用户名称", isUpdate = false),
@Column(name = "download_count", attrName = "downloadCount", label = "下载次数", isUpdate = false, isQuery = false, isUpdateForce = true),
@Column(name = "view_count", attrName = "viewCount", label = "查看次数", isUpdate = false, isQuery = false, isUpdateForce = true),
@Column(name = "expire_time", attrName = "expireTime", label = "过期时间", isQuery = false, isUpdateForce = true),
@Column(name = "is_delete", attrName = "isDelete", label = "是否删除", isUpdateForce = true),
@Column(name = "update_time", attrName = "updateTime", label = "更新时间", isQuery = false, isUpdateForce = true),
@Column(name = "svg_icon", attrName = "svgIcon", label = "文件夹标识"),
}, orderBy = "a.create_time DESC"
)
@Data
public class BizMyfiles extends DataEntity<BizMyfiles> implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private Date createTime; // 记录时间
private Long tid; // 文件标识
private String fileName; // 原始名称
private String filePath; // 存储路径
private String fileHash; // 文件MD5
private String fileSize; // 文件大小
private String fileExt; // 文件扩展名
private String mimeType; // 文件类型
private String folderId; // 文件夹标识
private String userName; // 用户姓名
private String loginCode; // 用户名称
private Integer downloadCount; // 下载次数
private Integer viewCount; // 查看次数
private Date expireTime; // 过期时间
private Integer isDelete; // 是否删除
private Date updateTime; // 更新时间
@ExcelFields({
@ExcelField(title="记录时间", attrName="createTime", align=Align.CENTER, sort=10, dataFormat="yyyy-MM-dd hh:mm"),
@ExcelField(title="文件标识", attrName="tid", align=Align.CENTER, sort=20),
@ExcelField(title="原始名称", attrName="fileName", align=Align.CENTER, sort=30),
@ExcelField(title="存储路径", attrName="filePath", align=Align.CENTER, sort=40),
@ExcelField(title="文件MD5", attrName="fileHash", align=Align.CENTER, sort=50),
@ExcelField(title="文件大小", attrName="fileSize", align=Align.CENTER, sort=60),
@ExcelField(title="文件扩展名", attrName="fileExt", align=Align.CENTER, sort=70),
@ExcelField(title="文件类型", attrName="mimeType", align=Align.CENTER, sort=80),
@ExcelField(title="文件夹标识", attrName="folderId", align=Align.CENTER, sort=90),
@ExcelField(title="用户姓名", attrName="userName", align=Align.CENTER, sort=100),
@ExcelField(title="用户名称", attrName="loginCode", align=Align.CENTER, sort=110),
@ExcelField(title="下载次数", attrName="downloadCount", align=Align.CENTER, sort=120),
@ExcelField(title="查看次数", attrName="viewCount", align=Align.CENTER, sort=130),
@ExcelField(title="过期时间", attrName="expireTime", align=Align.CENTER, sort=140, dataFormat="yyyy-MM-dd hh:mm"),
@ExcelField(title="是否删除", attrName="isDelete", dictType="sys_yes_no", align=Align.CENTER, sort=150),
@ExcelField(title="更新时间", attrName="updateTime", align=Align.CENTER, sort=160, dataFormat="yyyy-MM-dd hh:mm"),
})
public BizMyfiles() {
this(null);
}
public BizMyfiles(String id){
super(id);
}
public Date getCreateTime_gte() {
return sqlMap.getWhere().getValue("create_time", QueryType.GTE);
}
@Serial
private static final long serialVersionUID = 1L;
private Date createTime; // 记录时间
private String id; // 文件标识
private String fileName; // 原始名称
private String filePath; // 存储路径
private String fileHash; // 文件MD5
private String fileSize; // 文件大小
private String fileExt; // 文件扩展名
private String mimeType; // 文件类型
private String folderId; // 文件夹标识
private String userName; // 用户姓名
private String loginCode; // 用户名称
private Integer downloadCount; // 下载次数
private Integer viewCount; // 查看次数
private Date expireTime; // 过期时间
private Integer isDelete; // 是否删除
private Date updateTime; // 更新时间
private String svgIcon; //文件图标
public void setCreateTime_gte(Date createTime) {
sqlMap.getWhere().and("create_time", QueryType.GTE, createTime);
}
public Date getCreateTime_lte() {
return sqlMap.getWhere().getValue("create_time", QueryType.LTE);
}
@ExcelFields({
@ExcelField(title = "记录时间", attrName = "createTime", align = Align.CENTER, sort = 10, dataFormat = "yyyy-MM-dd hh:mm"),
@ExcelField(title = "文件标识", attrName = "id", align = Align.CENTER, sort = 20),
@ExcelField(title = "原始名称", attrName = "fileName", align = Align.CENTER, sort = 30),
@ExcelField(title = "存储路径", attrName = "filePath", align = Align.CENTER, sort = 40),
@ExcelField(title = "文件MD5", attrName = "fileHash", align = Align.CENTER, sort = 50),
@ExcelField(title = "文件大小", attrName = "fileSize", align = Align.CENTER, sort = 60),
@ExcelField(title = "文件扩展名", attrName = "fileExt", align = Align.CENTER, sort = 70),
@ExcelField(title = "文件类型", attrName = "mimeType", align = Align.CENTER, sort = 80),
@ExcelField(title = "文件夹标识", attrName = "folderId", align = Align.CENTER, sort = 90),
@ExcelField(title = "用户姓名", attrName = "userName", align = Align.CENTER, sort = 100),
@ExcelField(title = "用户名称", attrName = "loginCode", align = Align.CENTER, sort = 110),
@ExcelField(title = "下载次数", attrName = "downloadCount", align = Align.CENTER, sort = 120),
@ExcelField(title = "查看次数", attrName = "viewCount", align = Align.CENTER, sort = 130),
@ExcelField(title = "过期时间", attrName = "expireTime", align = Align.CENTER, sort = 140, dataFormat = "yyyy-MM-dd hh:mm"),
@ExcelField(title = "是否删除", attrName = "isDelete", dictType = "sys_yes_no", align = Align.CENTER, sort = 150),
@ExcelField(title = "更新时间", attrName = "updateTime", align = Align.CENTER, sort = 160, dataFormat = "yyyy-MM-dd hh:mm"),
})
public BizMyfiles() {
this(null);
}
public BizMyfiles(String id) {
super(id);
}
public Date getCreateTime_gte() {
return sqlMap.getWhere().getValue("create_time", QueryType.GTE);
}
public void setCreateTime_gte(Date createTime) {
sqlMap.getWhere().and("create_time", QueryType.GTE, createTime);
}
public Date getCreateTime_lte() {
return sqlMap.getWhere().getValue("create_time", QueryType.LTE);
}
public void setCreateTime_lte(Date createTime) {
sqlMap.getWhere().and("create_time", QueryType.LTE, createTime);
}
public void setCreateTime_lte(Date createTime) {
sqlMap.getWhere().and("create_time", QueryType.LTE, createTime);
}
}

View File

@@ -1,9 +1,13 @@
package com.jeesite.modules.biz.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.jeesite.modules.app.dao.file.FolderItem;
import com.jeesite.modules.app.utils.MyUtils;
import com.jeesite.modules.app.utils.vDate;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@@ -86,8 +90,9 @@ public class BizFoldersController extends BaseController {
@PostMapping(value = "save")
@ResponseBody
public String save(@Validated BizFolders bizFolders) {
bizFolders.setUpdateTime(vDate.getUpdateTime(bizFolders.getIsNewRecord()));
bizFoldersService.save(bizFolders);
return renderResult(Global.TRUE, text("保存文件夹信息成功!"));
return renderResult(Global.TRUE, text("操作文件夹成功!"));
}
/**
@@ -136,29 +141,114 @@ public class BizFoldersController extends BaseController {
@ResponseBody
public String delete(BizFolders bizFolders) {
bizFoldersService.delete(bizFolders);
return renderResult(Global.TRUE, text("删除文件夹信息成功!"));
return renderResult(Global.TRUE, text("删除文件夹成功!"));
}
@RequestMapping(value = "listAll")
@ResponseBody
public List<BizFolders> listAll(BizFolders bizFolders) {
return bizFoldersService.findList(bizFolders);
List<BizFolders> originalList = bizFoldersService.findList(bizFolders);
List<BizFolders> newList = new ArrayList<>();
BizFolders fixedFolder = new BizFolders();
fixedFolder.setFolderId("0");
fixedFolder.setFolderName("根目录");
newList.add(fixedFolder);
newList.addAll(originalList);
return newList;
}
@RequestMapping(value = "foldersAll")
@ResponseBody
public List<FolderItem> foldersAll(BizFolders bizFolders) {
List<FolderItem> folderItems = new ArrayList<>();
List<BizFolders> foldersList = bizFoldersService.findList(bizFolders);
for (BizFolders folder : foldersList) {
if (folder.getParentId().equals("0")) {
BizFolders childFolder = new BizFolders();
childFolder.setParentId(folder.getFolderId());
List<BizFolders> childFolders = bizFoldersService.findList(childFolder);
folderItems.add(new FolderItem(folder.getFolderId(), folder.getFolderName(), false, "folder", childFolders));
public List<Map<String, Object>> foldersAll(BizFolders bizFolders) {
List<Map<String, Object>> treeData = new ArrayList<>();
Map<String, Object> rootNode = new HashMap<>();
rootNode.put("id", "0");
rootNode.put("name", "根目录");
rootNode.put("disabled", false);
rootNode.put("children", new ArrayList<>());
bizFolders.setParentId("0");
bizFolders.setIsDeleted(0);
List<BizFolders> firstLevelFolders = bizFoldersService.findList(bizFolders);
List<Map<String, Object>> firstNodeList = new ArrayList<>();
for (BizFolders firstFolder : firstLevelFolders) {
Map<String, Object> firstNode = MyUtils.convertToTreeNode(firstFolder, "根目录");
BizFolders secondQuery = new BizFolders();
secondQuery.setParentId(firstFolder.getFolderId());
secondQuery.setIsDeleted(0);
List<BizFolders> secondLevelFolders = bizFoldersService.findList(secondQuery);
List<Map<String, Object>> secondNodeList = new ArrayList<>();
for (BizFolders secondFolder : secondLevelFolders) {
Map<String, Object> secondNode = MyUtils.convertToTreeNode(secondFolder, firstFolder.getFolderName());
BizFolders thirdQuery = new BizFolders();
thirdQuery.setParentId(secondFolder.getFolderId());
thirdQuery.setIsDeleted(0);
List<BizFolders> thirdLevelFolders = bizFoldersService.findList(thirdQuery);
List<Map<String, Object>> thirdNodeList = new ArrayList<>();
for (BizFolders thirdFolder : thirdLevelFolders) {
Map<String, Object> thirdNode = MyUtils.convertToTreeNode(thirdFolder, secondFolder.getFolderName());
BizFolders fourthQuery = new BizFolders();
fourthQuery.setParentId(thirdFolder.getFolderId());
fourthQuery.setIsDeleted(0);
List<BizFolders> fourthLevelFolders = bizFoldersService.findList(fourthQuery);
List<Map<String, Object>> fourthNodeList = new ArrayList<>();
for (BizFolders fourthFolder : fourthLevelFolders) {
Map<String, Object> fourthNode = MyUtils.convertToTreeNode(fourthFolder, thirdFolder.getFolderName());
fourthNodeList.add(fourthNode);
}
thirdNode.put("children", fourthNodeList);
thirdNodeList.add(thirdNode);
}
secondNode.put("children", thirdNodeList);
secondNodeList.add(secondNode);
}
firstNode.put("children", secondNodeList);
firstNodeList.add(firstNode);
}
return folderItems;
rootNode.put("children", firstNodeList);
treeData.add(rootNode);
return treeData;
}
@RequestMapping(value = "treeData")
@ResponseBody
public List<Map<String, Object>> treeFoldersData(BizFolders bizFolders) {
List<Map<String, Object>> treeData = new ArrayList<>();
Map<String, Object> rootNode = new HashMap<>();
rootNode.put("id", "0");
rootNode.put("name", "根目录");
rootNode.put("disabled", false);
rootNode.put("children", new ArrayList<>());
bizFolders.setParentId("0");
bizFolders.setIsDeleted(0);
List<BizFolders> firstLevelFolders = bizFoldersService.findList(bizFolders);
List<Map<String, Object>> firstNodeList = new ArrayList<>();
for (BizFolders firstFolder : firstLevelFolders) {
Map<String, Object> firstNode = MyUtils.convertToTreeNode(firstFolder, false);
BizFolders secondQuery = new BizFolders();
secondQuery.setParentId(firstFolder.getFolderId());
secondQuery.setIsDeleted(0);
List<BizFolders> secondLevelFolders = bizFoldersService.findList(secondQuery);
List<Map<String, Object>> secondNodeList = new ArrayList<>();
for (BizFolders secondFolder : secondLevelFolders) {
Map<String, Object> secondNode = MyUtils.convertToTreeNode(secondFolder, false);
BizFolders thirdQuery = new BizFolders();
thirdQuery.setParentId(secondFolder.getFolderId());
thirdQuery.setIsDeleted(0);
List<BizFolders> thirdLevelFolders = bizFoldersService.findList(thirdQuery);
List<Map<String, Object>> thirdNodeList = new ArrayList<>();
for (BizFolders thirdFolder : thirdLevelFolders) {
Map<String, Object> thirdNode = MyUtils.convertToTreeNode(thirdFolder, false);
thirdNodeList.add(thirdNode);
}
secondNode.put("children", thirdNodeList);
secondNodeList.add(secondNode);
}
firstNode.put("children", secondNodeList);
firstNodeList.add(firstNode);
}
rootNode.put("children", firstNodeList);
treeData.add(rootNode);
return treeData;
}
}

View File

@@ -4,8 +4,10 @@ import java.util.Date;
import java.util.List;
import cn.hutool.core.net.multipart.UploadFile;
import com.jeesite.modules.app.utils.FileDownloadUtils;
import com.jeesite.modules.app.utils.MyFileUtils;
import com.jeesite.modules.app.utils.vId;
import com.jeesite.modules.biz.entity.BizMailAttachments;
import com.jeesite.modules.file.entity.FileUpload;
import com.jeesite.modules.file.utils.FileUploadUtils;
import jakarta.servlet.http.HttpServletRequest;
@@ -96,13 +98,14 @@ public class BizMyfilesController extends BaseController {
List<FileUpload> fileList = FileUploadUtils.findFileUpload(bizMyfiles.getId(), "bizMyfiles_file");
for (FileUpload fileUpload : fileList) {
bizMyfiles.setCreateTime(new Date());
bizMyfiles.setTid(vId.getLongId());
bizMyfiles.setId(vId.getCid());
bizMyfiles.setFileName(fileUpload.getFileName());
bizMyfiles.setFilePath(FILE_PATH + fileUpload.getFileUrl());
bizMyfiles.setFileHash(fileUpload.getFileEntity().getFileMd5());
bizMyfiles.setFileSize(MyFileUtils.formatFileSize(fileUpload.getFileEntity().getFileSize(), 2));
bizMyfiles.setFileExt(fileUpload.getFileEntity().getFileExtension());
bizMyfiles.setMimeType(fileUpload.getFileEntity().getFileContentType());
bizMyfiles.setSvgIcon(MyFileUtils.getIcon(fileUpload.getFileEntity().getFileExtension()));
bizMyfilesService.save(bizMyfiles);
}
return renderResult(Global.TRUE, text("保存文件信息成功!"));
@@ -154,7 +157,7 @@ public class BizMyfilesController extends BaseController {
@ResponseBody
public String delete(BizMyfiles bizMyfiles) {
bizMyfilesService.delete(bizMyfiles);
return renderResult(Global.TRUE, text("删除文件信息成功!"));
return renderResult(Global.TRUE, text("删除文件成功!"));
}
@RequestMapping(value = "listAll")
@@ -163,4 +166,15 @@ public class BizMyfilesController extends BaseController {
return bizMyfilesService.findList(bizMyfiles);
}
@PostMapping(value = "downloadFile")
public void downloadFile(BizMyfiles bizMyfiles, HttpServletResponse response) {
try {
BizMyfiles myfiles = bizMyfilesService.get(bizMyfiles);
FileDownloadUtils.downloadFile(myfiles.getFilePath(), myfiles.getFileName(), response);
} catch (Exception e) {
System.out.print(e.getMessage());
}
}
}