大理白族自治州档案管理系统从零到一实操

一、开发环境与工具准备

在开始构建大理白族自治州档案管理系统之前,必须先配置好基础运行环境。以下命令基于CentOS 7.x/8.x环境,其他系统请对应调整包管理器。

1. 安装JDK 17与Maven

系统后端采用Spring Boot 3.x,强制要求JDK 17及以上版本。执行以下命令完成安装:

```bash 安装JDK 17 yum install -y java-17-openjdk java-17-openjdk-devel 验证版本 java -version 安装Maven wget https://archive.apache.org/dist/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz tar -zxvf apache-maven-3.8.6-bin.tar.gz -C /usr/local/ export PATH=/usr/local/apache-maven-3.8.6/bin:$PATH echo 'export PATH=/usr/local/apache-maven-3.8.6/bin:$PATH' >> /etc/profile source /etc/profile ```

2. 安装Node.js 18与MySQL 8.0

前端采用Vue 3,数据库选用MySQL 8.0以支持更好的JSON检索功能。

```bash 安装Node.js 18 curl -fsSL https://rpm.nodesource.com/setup_18.x | bash - yum install -y nodejs 安装MySQL 8.0 yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum install -y mysql-server systemctl start mysqld systemctl enable mysqld 获取MySQL临时密码并修改 grep 'temporary password' /var/log/mysqld.log mysql -u root -p 在MySQL Shell中执行(替换YourNewPassword123!): ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!'; FLUSH PRIVILEGES; ```

二、数据库结构设计与初始化

创建专用数据库并设计核心档案表。为了满足档案管理的通用需求,设计包含基础信息、存储路径、元数据标签等字段。

1. 建库与建表

直接执行以下SQL脚本完成数据结构构建:

```sql CREATE DATABASE IF NOT EXISTS dali_archive_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE dali_archive_db; -- 档案主表 CREATE TABLE t_archive ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID', archive_code VARCHAR(64) NOT NULL UNIQUE COMMENT '档案编号,唯一标识', title VARCHAR(255) NOT NULL COMMENT '档案标题', category VARCHAR(50) NOT NULL COMMENT '档案分类:文书、科技、会计等', file_path VARCHAR(500) COMMENT '物理文件存储路径', file_size BIGINT DEFAULT 0 COMMENT '文件大小(字节)', status TINYINT DEFAULT 1 COMMENT '状态:1-归档,2-借出,3-销毁', security_level TINYINT DEFAULT 1 COMMENT '密级:1-公开,2-内部,3-机密', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', creator VARCHAR(50) DEFAULT 'admin' COMMENT '创建人', INDEX idx_category (category), INDEX idx_code (archive_code) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='大理州档案管理主表'; -- 初始化插入测试数据 INSERT INTO t_archive (archive_code, title, category, security_level) VALUES ('DL20230001', '大理州2023年度水利工程建设规划', '文书', 2), ('DL20230002', '白族自治州非物质文化遗产名录申报材料', '科技', 1); ```

三、后端核心代码实现

后端使用Spring Boot 3 + MyBatis Plus构建。首先通过Spring Initializr生成项目,或者直接在目录下构建。

1. 项目依赖配置

pom.xml中添加必要的依赖坐标,确保版本兼容性:

```xml org.springframework.boot spring-boot-starter-web com.baomidou mybatis-plus-boot-starter 3.5.3.1 mysql mysql-connector-java 8.0.33 org.projectlombok lombok true ```

2. 数据源与配置文件

编辑src/main/resources/application.yml,配置数据库连接及端口:

```yaml server: port: 8080 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/dali_archive_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: YourNewPassword123! 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 ```

3. 实体类与Mapper

创建com.dali.archive.entity.TArchive实体类:

```java package com.dali.archive.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.time.LocalDateTime; @Data @TableName("t_archive") public class TArchive { @TableId(type = IdType.AUTO) private Long id; private String archiveCode; private String title; private String category; private String filePath; private Long fileSize; private Integer status; private Integer securityLevel; private LocalDateTime createTime; private LocalDateTime updateTime; private String creator; } ```

创建com.dali.archive.mapper.ArchiveMapper接口:

```java package com.dali.archive.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dali.archive.entity.TArchive; import org.apache.ibatis.annotations.Mapper; @Mapper public interface ArchiveMapper extends BaseMapper { } ```

4. 业务层与控制层

大理白族自治州档案管理系统从零到一实操

创建com.dali.archive.controller.ArchiveController,实现基础的增删改查接口:

```java package com.dali.archive.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dali.archive.entity.TArchive; import com.dali.archive.mapper.ArchiveMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.; import java.util.List; @RestController @RequestMapping("/api/archives") public class ArchiveController { @Autowired private ArchiveMapper archiveMapper; // 新增档案 @PostMapping public String save(@RequestBody TArchive archive) { archiveMapper.insert(archive); return "success"; } // 分页查询档案 @GetMapping public Page list(@RequestParam(defaultValue = "1") int current, @RequestParam(defaultValue = "10") int size, @RequestParam(required = false) String title) { Page page = new Page<>(current, size); QueryWrapper wrapper = new QueryWrapper<>(); if (title != null && !title.isEmpty()) { wrapper.like("title", title); } return archiveMapper.selectPage(page, wrapper); } // 更新档案 @PutMapping("/{id}") public String update(@PathVariable Long id, @RequestBody TArchive archive) { archive.setId(id); archiveMapper.updateById(archive); return "success"; } // 删除档案 @DeleteMapping("/{id}") public String delete(@PathVariable Long id) { archiveMapper.deleteById(id); return "success"; } } ```

四、前端管理界面开发

前端使用Vue 3配合Element Plus组件库,实现档案的列表展示与弹窗编辑功能。

1. 项目初始化

```bash npm create vite@latest dali-archive-ui -- --template vue cd dali-archive-ui npm install element-plus axios npm run dev ```

2. 主页面代码

修改src/App.vue,替换为以下完整代码,实现表格展示、分页、新增、编辑、删除功能:

```vue ```

五、Docker容器化部署

为了确保系统在任意Linux服务器上零门槛运行,编写Dockerfile和docker-compose.yml进行编排。

1. 后端Dockerfile

在项目根目录创建Dockerfile

```dockerfile FROM maven:3.8.6-openjdk-17 AS build WORKDIR /app COPY pom.xml . COPY src ./src RUN mvn clean package -DskipTests FROM openjdk:17-slim WORKDIR /app COPY --from=build /app/target/.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"] ```

2. 前端Nginx配置

在前端项目根目录创建Dockerfilenginx.conf

```dockerfile 前端 Dockerfile FROM node:18-alpine as build WORKDIR /app COPY package.json package-lock.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 ```

创建nginx.conf解决跨域问题:

```nginx server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://backend:8080/api/; } } ```

3. 一键启动编排

在服务器根目录创建docker-compose.yml,将MySQL、后端、前端串联:

```yaml version: '3.8' services: db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: YourNewPassword123! MYSQL_DATABASE: dali_archive_db volumes: - ./data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql ports: - "3306:3306" backend: build: ./dali-archive-system ports: - "8080:8080" depends_on: - db environment: SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/dali_archive_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai frontend: build: ./dali-archive-ui ports: - "80:80" depends_on: - backend ```

4. 启动与验证

将上述SQL脚本保存为init.sql,并按以下目录结构放置文件:

  • docker-compose.yml
  • init.sql
  • dali-archive-system/ (包含后端代码及Dockerfile)
  • dali-archive-ui/ (包含前端代码及Dockerfile)

执行启动命令:

```bash docker-compose up -d --build ```

启动成功后,直接访问服务器IP地址即可看到大理白族自治州档案管理系统主界面,并可进行档案的录入与管理操作。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统