From e404f57cd16e068c83299079da3e7f608870da38 Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Wed, 17 Sep 2025 17:38:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../archive/FileManagementController.java | 45 +++++++++++++++++-- .../web/domain/DaKyProFilesContentsDto.java | 9 ++++ .../web/domain/vo/DaKyProFilesContentsVo.java | 11 ++++- .../bonus/web/mapper/FileManageMapper.java | 2 + .../bonus/web/service/FileManageService.java | 2 + .../service/impl/FileManageServiceImpl.java | 5 +++ .../resources/mapper/FileManageMapper.xml | 21 +++++++-- .../bonus/common/utils/file/FileUtils.java | 16 +++++-- 8 files changed, 100 insertions(+), 11 deletions(-) diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java index e7381de..7012257 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/archive/FileManagementController.java @@ -3,6 +3,7 @@ package com.bonus.web.controller.archive; import com.bonus.common.annotation.RequiresPermissions; import com.bonus.common.annotation.SysLog; import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.AjaxResult; import com.bonus.common.core.domain.R; import com.bonus.common.core.page.TableDataInfo; import com.bonus.common.enums.OperaType; @@ -17,15 +18,26 @@ import com.bonus.web.domain.vo.DaKyProFilesContentsVo; import com.bonus.web.mapper.FileManageMapper; import com.bonus.web.service.FileManageService; import com.bonus.web.service.ProjectService; +import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.hibernate.validator.constraints.Length; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import javax.validation.ConstraintViolation; +import javax.validation.Validation; +import javax.validation.Validator; +import javax.validation.ValidatorFactory; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; import static com.bonus.common.utils.SecurityUtils.getLoginUser; @@ -111,12 +123,37 @@ public class FileManagementController extends BaseController { } } + @ApiOperation(value = "获取当前节点数据") + @GetMapping("getFileManageById") + @SysLog(title = "获取当前节点数据", module = "档案管理->档案右侧列表", businessType = OperaType.QUERY, details = "获取当前节点数据", logType = 1) + @RequiresPermissions("file:manage:query") + public AjaxResult getFileManageById(DaKyProFilesContentsDto dto) { + return AjaxResult.success(fileManageService.getFileManageById(dto)); + } + @ApiOperation(value = "新增右侧档案树") @PostMapping("addFileManageRight") @SysLog(title = "新增右侧档案树", module = "档案管理->档案目录管理", businessType = OperaType.INSERT, details = "新增右侧档案树", logType = 1) @RequiresPermissions("file:manage:add") - public R saveArchivalCatalogue(@ModelAttribute @Validated DaKyProFilesContentsVo dto, @RequestParam("file") MultipartFile file) { + public R saveArchivalCatalogue(@RequestPart("file") MultipartFile file, + @RequestParam("params") String params) { try { + // 手动解析JSON + ObjectMapper objectMapper = new ObjectMapper(); + DaKyProFilesContentsVo dto = objectMapper.readValue(params, DaKyProFilesContentsVo.class); + + // 手动验证 + ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); + Validator validator = factory.getValidator(); + Set> violations = validator.validate(dto); + + if (!violations.isEmpty()) { + // 处理验证错误 + List errors = violations.stream() + .map(ConstraintViolation::getMessage) + .collect(Collectors.toList()); + return R.fail(400, "参数验证失败: " + String.join(", ", errors)); + } if (dto.getParentId() == null) { return R.fail("父级有误"); } @@ -148,11 +185,13 @@ public class FileManagementController extends BaseController { dto.setUpdateUserName(getLoginUser().getUsername()); dto.setCreateUserId(getLoginUser().getUserId()); dto.setCreateUserName(getLoginUser().getUsername()); - fileManageMapper.saveFileSource(dto); } else if (file == null || file.isEmpty()) { return R.fail("请上传文件"); } - return fileManageService.saveFileManage(dto); + R r = fileManageService.saveFileManage(dto); + dto.setBusinessId(dto.getId()); + fileManageMapper.saveFileSource(dto); + return r; } catch (Exception e) { log.error(e.toString(), e); return R.fail("请求出错了"); diff --git a/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java b/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java index 42157c4..a19594c 100644 --- a/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java +++ b/bonus-admin/src/main/java/com/bonus/web/domain/DaKyProFilesContentsDto.java @@ -38,6 +38,15 @@ public class DaKyProFilesContentsDto { private String parentId; private String parentName; + /** + * 所属专业 + */ + private String major; + + /** + * 文件分类标记 + */ + private String classifyMark; /** * 层级 diff --git a/bonus-admin/src/main/java/com/bonus/web/domain/vo/DaKyProFilesContentsVo.java b/bonus-admin/src/main/java/com/bonus/web/domain/vo/DaKyProFilesContentsVo.java index 7444527..463c156 100644 --- a/bonus-admin/src/main/java/com/bonus/web/domain/vo/DaKyProFilesContentsVo.java +++ b/bonus-admin/src/main/java/com/bonus/web/domain/vo/DaKyProFilesContentsVo.java @@ -57,6 +57,16 @@ public class DaKyProFilesContentsVo { * 案卷期限 */ private String term; + /** + * 所属专业 + */ + private String major; + + /** + * 文件分类标记 + */ + private String classifyMark; + /** * 归档责任单位 @@ -118,7 +128,6 @@ public class DaKyProFilesContentsVo { /** * 文件地址 */ - @NotBlank(message = "请上传文件") private String filePath; /** * 文件名称 diff --git a/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java b/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java index 5600c97..4b2f9ca 100644 --- a/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java +++ b/bonus-admin/src/main/java/com/bonus/web/mapper/FileManageMapper.java @@ -43,4 +43,6 @@ public interface FileManageMapper { Integer getMaxSort(DaKyProFilesContentsDto dto); Integer getSortById(String id); + + DaKyProFilesContentsDto getFileManageById(DaKyProFilesContentsDto dto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java b/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java index f4b84c3..3defd80 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/FileManageService.java @@ -30,4 +30,6 @@ public interface FileManageService { Integer getSortById(String id); List getFileManageTree(DaKyProFilesContentsDto dto); + + DaKyProFilesContentsDto getFileManageById(DaKyProFilesContentsDto dto); } diff --git a/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java b/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java index f38341f..674bd3e 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/impl/FileManageServiceImpl.java @@ -124,4 +124,9 @@ public class FileManageServiceImpl implements FileManageService { List tree = TreeBuilder.buildTreeDaKyProFilesContents(list); return tree; } + + @Override + public DaKyProFilesContentsDto getFileManageById(DaKyProFilesContentsDto dto) { + return fileManageMapper.getFileManageById(dto); + } } diff --git a/bonus-admin/src/main/resources/mapper/FileManageMapper.xml b/bonus-admin/src/main/resources/mapper/FileManageMapper.xml index 8f79cfc..c6a9049 100644 --- a/bonus-admin/src/main/resources/mapper/FileManageMapper.xml +++ b/bonus-admin/src/main/resources/mapper/FileManageMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + INSERT INTO da_ky_pro_files_contents id, @@ -14,6 +14,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sort, mark_code, term, + major, + classify_mark, unit_name, data_source, is_unique, @@ -35,6 +37,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{sort}, #{markCode}, #{term}, + #{major}, + #{classifyMark}, #{unitName}, #{dataSource}, #{isUnique}, @@ -59,7 +63,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" source_type, create_user_id, create_user_name, - createTime + create_time VALUES @@ -84,6 +88,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sort = #{sort}, mark_code = #{markCode}, term = #{term}, + major = #{major}, + classify_mark = #{classifyMark}, unit_name = #{unitName}, data_source = #{dataSource}, is_unique = #{isUnique}, @@ -162,7 +168,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" da_ky_pro_files_contents dkpfc left join da_ky_sys_file_source dkfs on dkpfc.id = dkfs.business_id WHERE - dkpfc.del_flag = '1' and dkpfc.parent_id = #{parentId} and dkpfc.level = 4 + dkpfc.del_flag = '1' and dkpfc.parent_id = #{parentId} and dkpfc.level = 5 and dkpfc.content_name like concat('%', #{contentName}, '%') @@ -215,4 +221,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" WHERE dkfcns.del_flag = '1' + diff --git a/bonus-common/src/main/java/com/bonus/common/utils/file/FileUtils.java b/bonus-common/src/main/java/com/bonus/common/utils/file/FileUtils.java index 1e40836..de4efc5 100644 --- a/bonus-common/src/main/java/com/bonus/common/utils/file/FileUtils.java +++ b/bonus-common/src/main/java/com/bonus/common/utils/file/FileUtils.java @@ -14,6 +14,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -28,6 +29,7 @@ import com.bonus.common.utils.DateUtils; import com.bonus.common.utils.StringUtils; import com.bonus.common.utils.uuid.IdUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; /** @@ -35,12 +37,13 @@ import org.springframework.web.multipart.MultipartFile; * * @author bonus */ +@Component public class FileUtils { public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"; // 常见的图片扩展名(小写) // 常见的图片扩展名(小写) private static final Set IMAGE_EXTENSIONS; - + private static String UPLOAD_DIR; static { HashSet set = new HashSet<>(); set.add("jpg"); @@ -57,7 +60,12 @@ public class FileUtils { @Value("${bonus.profile}") - private static String uploadDir; + private String uploadDir; + @PostConstruct + public void init() { + UPLOAD_DIR = uploadDir; // 在对象初始化时赋值给 static 变量 + } + /** * 输出指定文件的byte数组 @@ -300,12 +308,12 @@ public class FileUtils { } else { bean.setFileType("2"); } - File targetDir = new File(uploadDir); + File targetDir = new File(UPLOAD_DIR); if (!targetDir.exists()) { targetDir.mkdirs(); } String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename(); - File targetFile = new File(uploadDir, fileName); + File targetFile = new File(UPLOAD_DIR, fileName); file.transferTo(targetFile); String pathName = targetFile.getAbsolutePath(); bean.setFilePath(pathName);