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

从零搭建大庆档案管理系统全流程实操指南

发布时间:2026年09月20日 01:30:08 浏览量:0

第一步:环境准备与数据库搭建

在开始构建大庆档案管理系统之前,必须确保开发环境配置准确。本系统采用Spring Boot 3.2 + Vue 3 + MySQL 8.0技术栈。请严格按照以下步骤执行环境初始化。

1. 基础软件安装

首先检查并安装以下必要软件,直接使用命令行或下载指定版本:

brew install openjdk@17

2. 数据库初始化脚本

打开MySQL客户端(如Navicat或命令行),执行以下SQL脚本创建数据库及核心表。此表结构设计涵盖了档案编号、标题、密级、存储路径等核心字段。

```sql

-- 创建数据库

CREATE DATABASE IF NOT EXISTS daqing_archive_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE daqing_archive_db;

-- 创建档案主表

CREATE TABLE t_sys_archive (

id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',

archive_no VARCHAR(50) NOT NULL UNIQUE COMMENT '档案编号,唯一索引',

title VARCHAR(200) NOT NULL COMMENT '档案标题',

category VARCHAR(50) DEFAULT 'DEFAULT' COMMENT '档案分类(文书/科技/财务等)',

secret_level VARCHAR(20) DEFAULT 'INTERNAL' COMMENT '密级(公开/内部/机密)',

file_path VARCHAR(500) COMMENT '物理文件存储路径',

file_size BIGINT DEFAULT 0 COMMENT '文件大小(字节)',

create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '归档时间',

creator VARCHAR(50) DEFAULT 'admin' COMMENT '创建人'

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='大庆档案管理系统-档案主表';

```

第二步:后端项目构建与核心配置

使用Spring Initializr创建项目,或在IDEA中直接创建Maven项目。以下配置文件和依赖是系统运行的核心,缺一不可。

1. Maven依赖配置

pom.xml中引入以下依赖。注意版本号必须兼容,避免启动报错。

```xml

org.springframework.boot

spring-boot-starter-web

com.baomidou

mybatis-plus-spring-boot3-starter

3.5.5

com.mysql

mysql-connector-j

runtime

org.projectlombok

lombok

true

```

2. 应用核心配置

src/main/resources/application.yml中配置数据库连接及文件上传路径。请务必修改MySQL的用户名和密码。

```yaml

server:

port: 8080

spring:

application:

name: daqing-archive-system

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://localhost:3306/daqing_archive_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai

username: root

password: 123456 请修改为实际密码

servlet:

multipart:

max-file-size: 100MB

max-request-size: 100MB

file-size-threshold: 10MB

mybatis-plus:

configuration:

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

global-config:

db-config:

logic-delete-field: deleted

logic-delete-value: 1

logic-not-delete-value: 0

file:

upload-path: D:/daqing_archive_files/ Windows路径,Linux请改为 /var/daqing_archive_files/

```

第三步:档案管理核心业务代码实现

本部分包含实体类、数据层及控制层代码,实现档案的CRUD(增删改查)及文件上传功能。

1. 实体类

创建com.daqing.archive.entity.Archive类。

```java

package com.daqing.archive.entity;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableId;

import lombok.Data;

import java.time.LocalDateTime;

@Data

public class Archive {

@TableId(type = IdType.AUTO)

private Long id;

private String archiveNo;

private String title;

private String category;

private String secretLevel;

private String filePath;

private Long fileSize;

private LocalDateTime createTime;

private String creator;

}

```

2. Mapper接口

创建com.daqing.archive.mapper.ArchiveMapper接口。

```java

package com.daqing.archive.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.daqing.archive.entity.Archive;

import org.apache.ibatis.annotations.Mapper;

@Mapper

public interface ArchiveMapper extends BaseMapper {

}

```

3. 核心业务控制器

创建com.daqing.archive.controller.ArchiveController。此代码处理文件流存储和数据库记录写入,是系统的核心逻辑。

```java

package com.daqing.archive.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import com.daqing.archive.entity.Archive;

import com.daqing.archive.mapper.ArchiveMapper;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.;

import org.springframework.web.multipart.MultipartFile;

从零搭建大庆档案管理系统全流程实操指南

import java.io.File;

import java.io.IOException;

import java.nio.file.Paths;

import java.time.LocalDateTime;

import java.time.format.DateTimeFormatter;

import java.util.HashMap;

import java.util.Map;

import java.util.UUID;

@RestController

@RequestMapping("/api/archive")

@CrossOrigin(origins = "") // 允许前端跨域访问

public class ArchiveController {

private final ArchiveMapper archiveMapper;

@Value("${file.upload-path}")

private String uploadPath;

public ArchiveController(ArchiveMapper archiveMapper) {

this.archiveMapper = archiveMapper;

}

// 文件上传并归档

@PostMapping("/upload")

public Map uploadArchive(@RequestParam("file") MultipartFile file,

@RequestParam("title") String title,

@RequestParam("category") String category) {

Map result = new HashMap<>();

try {

// 1. 创建存储目录

File dir = new File(uploadPath);

if (!dir.exists()) dir.mkdirs();

// 2. 生成唯一文件名

String originalFilename = file.getOriginalFilename();

String extension = originalFilename.substring(originalFilename.lastIndexOf("."));

String newFileName = UUID.randomUUID().toString() + extension;

String destPath = Paths.get(uploadPath, newFileName).toString();

// 3. 保存文件

file.transferTo(new File(destPath));

// 4. 构建数据库实体

Archive archive = new Archive();

archive.setArchiveNo("DQ-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));

archive.setTitle(title);

archive.setCategory(category);

archive.setFilePath(destPath);

archive.setFileSize(file.getSize());

archive.setCreateTime(LocalDateTime.now());

archive.setCreator("Admin");

// 5. 入库

archiveMapper.insert(archive);

result.put("code", 200);

result.put("message", "归档成功");

result.put("data", archive);

} catch (IOException e) {

result.put("code", 500);

result.put("message", "文件上传失败: " + e.getMessage());

}

return result;

}

// 分页查询档案列表

@GetMapping("/list")

public Map list(@RequestParam(defaultValue = "1") int page,

@RequestParam(defaultValue = "10") int size) {

Map result = new HashMap<>();

Page pageParam = new Page<>(page, size);

Page archivePage = archiveMapper.selectPage(pageParam, null);

result.put("code", 200);

result.put("data", archivePage.getRecords());

result.put("total", archivePage.getTotal());

return result;

}

}

```

第四步:前端界面开发与接口对接

前端使用Vue 3配合Element Plus组件库,实现文件拖拽上传和档案列表展示。

1. 项目初始化

在终端执行以下命令创建Vue项目并安装依赖:

npm create vue@latest daqing-archive-web

cd daqing-archive-web

npm install element-plus axios

2. 主页面代码

修改src/App.vue,直接复制以下代码。该代码集成了Element Plus的表格和上传组件,并封装了Axios请求。

```html