一、系统架构设计与技术选型
一个基础的档案绩效管理系统核心在于对档案录入、利用、管理过程进行量化追踪与评估。本指南采用B/S架构,前端使用Vue 3 + Element Plus,后端使用Spring Boot 2.7,数据库选用MySQL 8.0。这套组合技术成熟、社区活跃,能快速搭建稳定可扩展的系统。
1.1 开发环境准备
确保你的开发机已安装以下软件,版本必须一致,避免环境问题。
- Node.js 18.17.0 或更高LTS版本:用于运行前端构建工具。 从官网 https://nodejs.org/en/download/ 下载安装包。
- Java Development Kit (JDK) 11:后端运行环境。 从Oracle官网或AdoptOpenJDK下载。
- MySQL 8.0.33:数据库。 从 https://dev.mysql.com/downloads/mysql/ 下载社区版。
- Maven 3.8.6:Java项目构建工具。 从 https://maven.apache.org/download.cgi 下载。
- IDE:IntelliJ IDEA(后端)和 Visual Studio Code(前端)。
1.2 数据库表结构设计
在MySQL中创建数据库 `archive_performance_db`,并执行以下SQL创建核心表。
档案基础信息表:
```sql
CREATE TABLE `archive` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`archive_code` varchar(50) NOT NULL COMMENT '档案编号,唯一',
`title` varchar(200) NOT NULL COMMENT '档案标题',
`category` varchar(50) NOT NULL COMMENT '档案类别(如人事、财务)',
`storage_location` varchar(100) DEFAULT NULL COMMENT '物理存放位置',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '归档时间',
`status` tinyint DEFAULT '1' COMMENT '状态:1-在库,2-借出,3-已销毁',
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_archive_code` (`archive_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案基础信息表';
```
档案利用记录表(绩效数据核心来源):
```sql
CREATE TABLE `archive_usage` (
`id` bigint NOT NULL AUTO_INCREMENT,
`archive_id` bigint NOT NULL COMMENT '档案ID',
`borrower_id` varchar(20) NOT NULL COMMENT '借阅人/利用人工号',
`borrower_name` varchar(50) NOT NULL COMMENT '借阅人姓名',
`usage_type` tinyint NOT NULL COMMENT '利用类型:1-查阅,2-借出,3-复制',
`purpose` varchar(200) DEFAULT NULL COMMENT '利用目的',
`borrow_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '借阅/利用时间',
`return_time` datetime DEFAULT NULL COMMENT '归还时间',
`duration_days` int DEFAULT NULL COMMENT '利用时长(天)',
PRIMARY KEY (`id`),
KEY `idx_archive_id` (`archive_id`),
KEY `idx_borrow_time` (`borrow_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='档案利用记录表';
```
二、后端服务搭建与核心接口实现
2.1 创建Spring Boot项目并配置
使用IntelliJ IDEA的Spring Initializr创建项目,选择依赖:Spring Web, Spring Data JPA, MySQL Driver, Lombok。
在 `src/main/resources/application.yml` 中配置数据库连接和JPA:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/archive_performance_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: your_password_here 替换为你的MySQL root密码
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update 首次启动后改为validate
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
format_sql: true
server:
port: 8080
```
2.2 实现档案利用记录新增接口
这是绩效数据采集的入口。创建实体类 `ArchiveUsage.java` 对应数据库表。创建控制器 `ArchiveUsageController.java`:
```java
@RestController
@RequestMapping("/api/usage")
@RequiredArgsConstructor // Lombok注解,自动注入
public class ArchiveUsageController {
private final ArchiveUsageRepository usageRepository;
@PostMapping("/record")
public ResponseEntity
recordUsage(@RequestBody ArchiveUsage usage) {
// 1. 基础校验
if (usage.getArchiveId() == null || StringUtils.isBlank(usage.getBorrowerId())) {
throw new IllegalArgumentException("档案ID和借阅人工号不能为空");
}
// 2. 自动设置借阅时间
usage.setBorrowTime(LocalDateTime.now());
// 3. 保存到数据库
ArchiveUsage savedUsage = usageRepository.save(usage);
return ResponseEntity.ok(savedUsage);
}
}
```
创建数据访问层接口 `ArchiveUsageRepository.java`,继承 `JpaRepository`。
2.3 实现核心绩效统计接口
创建 `PerformanceController.java`,提供关键绩效指标查询。
```java
@RestController
@RequestMapping("/api/performance")
@RequiredArgsConstructor
public class PerformanceController {
private final ArchiveUsageRepository usageRepository;
@GetMapping("/summary/{yearMonth}")
public Map getPerformanceSummary(@PathVariable String yearMonth) {
// yearMonth格式:2024-01
LocalDate startDate = LocalDate.parse(yearMonth + "-01");
LocalDate endDate = startDate.plusMonths(1);
// 1. 统计总利用次数
Long totalUsageCount = usageRepository.countByBorrowTimeBetween(
startDate.atStartOfDay(),
endDate.atStartOfDay()
);
// 2. 按利用类型分组统计(使用原生查询)
List