许昌档案软件搭建实操指南:从零构建到部署
环境准备与依赖安装
在开始构建许昌档案软件之前,必须先准备好服务器基础环境。本指南基于CentOS 7.x系统进行演示,软件架构采用Spring Boot 2.7 + Vue 3 + MySQL 8.0。请严格按照以下步骤执行环境初始化。
1. 安装JDK 17环境
执行以下命令下载并安装JDK 17,解压并配置环境变量:
mkdir -p /usr/local/java
cd /usr/local/java
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
tar -zxvf jdk-17_linux-x64_bin.tar.gz
echo 'export JAVA_HOME=/usr/local/java/jdk-17.0.8' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
java -version
2. 安装Node.js 18前端环境
使用NVM安装Node.js,确保版本兼容性:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18
node -v
npm -v
3. 安装MySQL 8.0数据库
直接使用yum仓库安装MySQL 8.0,并启动服务:
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum install mysql-server -y
systemctl start mysqld
systemctl enable mysqld
grep 'temporary password' /var/log/mysqld.log
获取初始密码后,立即登录MySQL并修改root密码为Xuchang@2024(请根据实际需求修改):
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Xuchang@2024';
flush privileges;
数据库设计与初始化
针对许昌档案管理的业务特点,我们需要设计包含案卷级、文件级以及特定归档字段的数据库表结构。请登录MySQL客户端执行以下SQL脚本。
1. 创建数据库与用户
CREATE DATABASE IF NOT EXISTS xuchang_archives_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'xc_admin'@'%' IDENTIFIED BY 'XcAdmin@Pass';
GRANT ALL PRIVILEGES ON xuchang_archives_db. TO 'xc_admin'@'%';
FLUSH PRIVILEGES;
2. 核心档案表结构设计
此表包含许昌地区特有的归档编号规则、保管期限及密级字段。
USE xuchang_archives_db;
CREATE TABLE `archive_record` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`archive_title` varchar(255) NOT NULL COMMENT '案卷题名',
`archive_code` varchar(50) NOT NULL COMMENT '许昌档案编号 (XC-YYYY-NNNN)',
`fond_code` varchar(20) DEFAULT 'XC001' COMMENT ' '全宗号',
`category_code` varchar(20) NOT NULL COMMENT ' '门类代码 (WS:文书, KJ:会计)',
`retention_period` varchar(10) NOT NULL COMMENT ' '保管期限 (Y10:10年, D30:30年)',
`security_level` varchar(10) DEFAULT 'MI' COMMENT ' '密级',
`file_path` varchar(500) DEFAULT NULL COMMENT ' '电子文件存储路径',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT ' '创建时间',
`creator` varchar(50) DEFAULT NULL COMMENT ' '操作人',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_archive_code` (`archive_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='许昌档案管理主表';
后端服务开发
后端采用Spring Boot开发,提供档案的增删改查及文件上传接口。请在本地IDEA中创建项目,或直接在服务器上通过Maven构建。
1. Maven依赖配置 (pom.xml)
确保引入Web、JPA、MySQL驱动及Lombok依赖。
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
8.0.33
org.projectlombok
lombok
true
2. 数据库连接配置 (application.yml)
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/xuchang_archives_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: xc_admin
password: XcAdmin@Pass
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
file:
upload-dir: /data/xuchang_files/
3. 实体类定义

package com.xuchang.archive.entity;
import lombok.Data;
import javax.persistence.;
import java.time.LocalDateTime;
@Data
@Entity
@Table(name = "archive_record")
public class ArchiveRecord {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, length = 255)
private String archiveTitle;
@Column(nullable = false, unique = true, length = 50)
private String archiveCode;
@Column(length = 20)
private String fondCode = "XC001";
@Column(nullable = false, length = 20)
private String categoryCode;
@Column(nullable = false, length = 10)
private String retentionPeriod;
@Column(length = 10)
private String securityLevel = "MI";
@Column(length = 500)
private String filePath;
@Column(name = "create_time")
private LocalDateTime createTime;
@Column(length = 50)
private String creator;
}
4. 核心业务控制器
提供档案录入接口,包含自动生成许昌档案编号的逻辑。
package com.xuchang.archive.controller;
import com.xuchang.archive.entity.ArchiveRecord;
import com.xuchang.archive.repository.ArchiveRepository;
import org.springframework.beans.factory.annotation.Autowired;
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.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
@RestController
@RequestMapping("/api/archives")
public class ArchiveController {
@Autowired
private ArchiveRepository archiveRepository;
@Value("${file.upload-dir}")
private String uploadDir;
@PostMapping("/save")
public String saveArchive(@RequestBody ArchiveRecord record) {
if (record.getArchiveCode() == null || record.getArchiveCode().isEmpty()) {
String year = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy"));
String uuid = UUID.randomUUID().toString().substring(0, 8).toUpperCase();
record.setArchiveCode("XC-" + year + "-" + uuid);
}
record.setCreateTime(LocalDateTime.now());
archiveRepository.save(record);
return "档案录入成功,编号:" + record.getArchiveCode();
}
@PostMapping("/upload")
public String uploadFile(@RequestParam("file") MultipartFile file) throws {
File dir = new File(uploadDir);
if (!dir.exists()) dir.mkdirs();
String fileName = System.currentTimeMillis() + "_" + file.getOriginalFilename();
File dest = new File(dir, fileName);
file.transferTo(dest);
return "/files/" + fileName;
}
}
前端界面开发
前端使用Vue 3配合Element Plus组件库,构建简洁的档案录入界面。
1. 项目初始化与依赖安装
npm create vite@latest xuchang-archive-ui -- --template vue
cd xuchang-archive-ui
npm install element-plus axios
2. 配置代理
在项目根目录创建vite.config.js,解决跨域问题。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
server: {
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true
},
'/files': {
target: 'http://localhost:8080',
changeOrigin: true
}
}
}
})
3. 录入页面代码
修改src/App.vue,实现完整的表单提交逻辑。
许昌档案管理系统 - 档案录入
10年
30年
永久
点击上传
提交入库
服务部署与配置
代码开发完成后,最后一步是将前后端服务在生产环境中运行起来。
1. 后端打包与运行
在Spring Boot项目根目录执行Maven打包命令:
mvn clean package -DskipTests
运行生成的JAR包:
nohup java -jar target/xuchang-archive-0.0.1-SNAPSHOT.jar > app.log 2>&1 &
2. 前端构建与Nginx配置
在前端项目目录执行构建命令:
npm run build
将生成的dist目录拷贝至/var/www/html/xuchang。安装并配置Nginx:
yum install nginx -y
vim /etc/nginx/nginx.conf
在http块中添加以下Server配置:
server {
listen 80;
server_name localhost;
location / {
root /var/www/html/xuchang/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://localhost:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /files/ {
alias /data/xuchang_files/;
}
}
3. 启动Nginx服务
nginx -t
systemctl start nginx
systemctl enable nginx
完成以上所有步骤后,在浏览器中输入服务器IP地址,即可看到许昌档案软件的录入界面,并可进行实际的数据操作。