网站首页/ 信息中心/ 档案百科/

企业级档案管理系统整体解决方案落地实操手册

发布时间:2026年07月06日 00:40:06 浏览量:0

一、技术架构与环境准备

本方案采用前后端分离架构,后端选用 Spring Boot 2.7 提供RESTful API,数据存储使用 MySQL 8.0,文件存储采用 MinIO 对象存储服务(自建高性能S3兼容服务),前端使用 Vue 3 + Element Plus。所有组件均支持Docker容器化部署。

1.1 基础环境安装命令

在开始编码前,请确保服务器已安装以下环境。若使用Docker部署,可跳过此步,直接参考第五节。

二、数据库设计与初始化

数据库设计遵循档案管理核心要素:元数据管理、文件索引、权限控制。请在MySQL中执行以下SQL脚本初始化数据库。

2.1 建表与索引SQL

创建数据库 archive_db 并建立核心表 t_archive。该表存储档案的基础信息及文件在MinIO中的引用路径。

```sql CREATE DATABASE IF NOT EXISTS archive_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE archive_db; CREATE TABLE t_archive ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', title VARCHAR(255) NOT NULL COMMENT '档案标题', archive_no VARCHAR(100) NOT NULL UNIQUE COMMENT '档案编号(业务唯一键)', category VARCHAR(50) NOT NULL COMMENT '档案分类(如:人事、财务、合同)', file_name VARCHAR(255) NOT NULL COMMENT '原始文件名', file_path VARCHAR(500) NOT NULL COMMENT 'MinIO存储路径(bucket/object)', file_size BIGINT DEFAULT 0 COMMENT '文件大小(字节)', file_type VARCHAR(50) COMMENT '文件MIME类型', uploader VARCHAR(50) COMMENT '上传人', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX idx_category (category), INDEX idx_archive_no (archive_no) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案信息主表'; ```

三、后端核心服务开发

后端主要负责文件流处理与元数据持久化。创建Spring Boot项目,引入 Web, MyBatis Plus, MinIO 依赖。

3.1 Maven依赖配置

pom.xml 中添加必要的依赖项,确保版本兼容。

```xml org.springframework.boot spring-boot-starter-web mysql mysql-connector-java runtime com.baomidou mybatis-plus-boot-starter 3.5.2 io.minio minio 8.5.2 org.projectlombok lombok true ```

3.2 应用配置文件

src/main/resources/application.yml 中配置数据库连接及MinIO参数。默认MinIO端口为9000。

```yaml server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/archive_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password driver-class-name: com.mysql.cj.jdbc.Driver MinIO配置 minio: endpoint: http://localhost:9000 accessKey: minioadmin secretKey: minioadmin bucketName: archive-bucket ```

3.3 文件上传与元数据服务实现

企业级档案管理系统整体解决方案落地实操手册

创建 ArchiveController.java,实现文件上传、列表查询及下载接口。这里直接注入MinIO客户端进行操作。

```java package com.example.archive.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.minio.MinioClient; import io.minio.PutObjectArgs; import io.minio.GetObjectArgs; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.net.URLEncoder; import java.sql.Date; @RestController @RequestMapping("/api/archive") public class ArchiveController { private final MinioClient minioClient; @Value("${minio.bucketName}") private String bucketName; @Value("${minio.endpoint}") private String endpoint; // 模拟数据库操作,实际项目请注入Mapper // 此处省略Mapper注入,假设直接操作数据库或使用Service层 public ArchiveController(MinioClient minioClient) { this.minioClient = minioClient; } / 上传档案接口 / @PostMapping("/upload") public String uploadArchive(@RequestParam("file") MultipartFile file, @RequestParam("title") String title, @RequestParam("category") String category) throws Exception { // 1. 生成存储路径 (使用时间戳+原文件名防止重名) String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename(); String objectName = "archives/" + fileName; // 2. 上传文件到MinIO minioClient.putObject( PutObjectArgs.builder() .bucket(bucketName) .object(objectName) .stream(file.getInputStream(), file.getSize(), -1) .contentType(file.getContentType()) .build() ); // 3. 保存元数据到数据库 (此处为示例SQL,实际请使用MyBatis Plus) // INSERT INTO t_archive (title, category, file_name, file_path, file_size) VALUES (...) return "上传成功,文件路径: " + objectName; } / 下载档案接口 / @GetMapping("/download/{id}") public void downloadArchive(@PathVariable Long id, HttpServletResponse response) throws Exception { // 1. 根据ID查询数据库获取 file_path 和 file_name // String filePath = mapper.selectById(id).getFilePath(); // String originalName = mapper.selectById(id).getFileName(); String filePath = "archives/test_file.pdf"; // 模拟数据 String originalName = "test_file.pdf"; // 2. 从MinIO下载文件流 InputStream stream = minioClient.getObject( GetObjectArgs.builder() .bucket(bucketName) .object(filePath) .build() ); // 3. 设置响应头并输出流 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(originalName, "UTF-8")); org.apache.commons.io.IOUtils.copy(stream, response.getOutputStream()); stream.close(); } } ```

四、前端管理界面开发

前端使用Vue 3 Composition API。首先创建项目并安装Element Plus。

4.1 项目初始化

```bash npm create vue@latest archive-admin cd archive-admin npm install element-plus axios ```

4.2 文件上传页面实现

src/views/ArchiveUpload.vue 中编写上传组件。核心是利用Element Plus的 el-upload 组件,配置 http-request 覆盖默认上传行为以适配自定义API。

```html ```

五、Docker容器化一键部署

为了实现零门槛落地,编写 docker-compose.yml 文件。该文件将同时启动MySQL、MinIO、后端服务及前端Nginx服务。

5.1 Docker Compose 配置

在项目根目录创建 docker-compose.yml。注意:后端服务依赖数据库和MinIO,需配置 depends_on

```yaml version: '3.8' services: 1. MySQL数据库服务 mysql: image: mysql:8.0 container_name: archive_mysql environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: archive_db ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql 自动执行初始化SQL 2. MinIO对象存储服务 minio: image: minio/minio:latest container_name: archive_minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin ports: - "9000:9000" - "9001:9001" Web管理界面 volumes: - minio_data:/data 3. 后端Spring Boot应用 backend: build: ./backend 指向后端项目路径,需包含Dockerfile container_name: archive_backend ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/archive_db?useSSL=false&serverTimezone=UTC SPRING_DATASOURCE_USERNAME: root SPRING_DATASOURCE_PASSWORD: root MINIO_ENDPOINT: http://minio:9000 depends_on: - mysql - minio 4. 前端Nginx服务 frontend: build: ./frontend 指向前端项目路径,需包含Dockerfile container_name: archive_frontend ports: - "80:80" depends_on: - backend volumes: mysql_data: minio_data: ```

5.2 启动命令

将上述配置保存后,在同级目录下执行以下命令即可启动整套系统。

```bash 构建并启动所有容器 docker-compose up -d build 查看运行状态 docker-compose ps 查看后端日志,确认启动成功 docker-compose logs -f backend ```

启动成功后,访问 http://localhost 打开前端管理页面,访问 http://localhost:9001 可进入MinIO管理后台(账号密码均为minioadmin)查看底层文件存储情况。

微信咨询
电话联系
QQ客服
微信咨询一对一服务
服务热线: 028-8744 4417
QQ客服: 2305721818