znpt-backend/doc/auto_expiration_readme.md

138 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 自动到期检测功能使用说明
## 功能概述
自动到期检测功能是一个智能的到期时间监控系统,能够自动检测数据库中各种表格的到期时间字段,并提供到期提醒功能。
## 主要特性
1. **自动检测**: 系统会自动扫描配置的表格,检测其中的到期时间字段
2. **灵活配置**: 可以配置任意表格的到期检测规则
3. **智能提醒**: 支持提前提醒天数配置
4. **状态管理**: 自动计算剩余天数并设置状态(正常/即将到期/已到期)
5. **定时执行**: 每天凌晨2点自动执行检测任务
## 数据库表结构
### 1. 自动到期检测配置表 (auto_expiration_config)
| 字段名 | 类型 | 说明 |
|--------|------|------|
| config_id | varchar(64) | 配置ID |
| table_name | varchar(100) | 表名 |
| table_desc | varchar(200) | 表描述 |
| primary_key_field | varchar(100) | 主键字段 |
| expire_date_field | varchar(100) | 到期时间字段 |
| user_id_field | varchar(100) | 关联用户字段 |
| user_name_field | varchar(100) | 用户姓名字段 |
| business_name_field | varchar(100) | 业务名称字段 |
| remind_days | int | 提前提醒天数 |
| enabled | varchar(1) | 是否启用0-禁用1-启用) |
### 2. 到期检测结果表 (expiration_result)
| 字段名 | 类型 | 说明 |
|--------|------|------|
| result_id | varchar(64) | 结果ID |
| table_name | varchar(100) | 表名 |
| business_id | varchar(64) | 业务ID |
| business_name | varchar(200) | 业务名称 |
| user_id | varchar(64) | 关联用户ID |
| user_name | varchar(100) | 关联用户姓名 |
| expire_date | date | 到期日期 |
| remaining_days | int | 剩余天数 |
| status | varchar(1) | 状态0-正常1-即将到期2-已到期) |
## API接口
### 1. 手动执行到期检测
```
POST /auto-expiration/execute
```
### 2. 获取到期检测结果
```
GET /auto-expiration/results?status=1
```
参数说明:
- status: 状态筛选0-正常1-即将到期2-已到期)
### 3. 获取统计信息
```
GET /auto-expiration/statistics
```
### 4. 检测指定表
```
POST /auto-expiration/check-table/{tableName}
```
### 5. 保存配置
```
POST /auto-expiration/config
```
### 6. 获取所有配置
```
GET /auto-expiration/configs
```
### 7. 删除配置
```
DELETE /auto-expiration/config/{configId}
```
## 配置示例
### 人员资质证书检测配置
```json
{
"tableName": "certification",
"tableDesc": "人员资质证书",
"primaryKeyField": "certification_id",
"expireDateField": "validity_date_end",
"userIdField": "user_id",
"businessNameField": "certification_name",
"remindDays": 30,
"enabled": "1"
}
```
### 人员保险检测配置
```json
{
"tableName": "insurance_info",
"tableDesc": "人员保险",
"primaryKeyField": "insurance_info_id",
"expireDateField": "expire_date",
"userIdField": "user_id",
"userNameField": "name",
"businessNameField": "insurance_type_name",
"remindDays": 30,
"enabled": "1"
}
```
## 使用步骤
1. **创建数据库表**: 执行 `auto_expiration_tables.sql` 创建必要的表结构
2. **配置检测规则**: 通过API或直接插入数据配置需要检测的表格
3. **启动定时任务**: 系统会自动在每天凌晨2点执行检测
4. **查看检测结果**: 通过API接口查看检测结果和统计信息
## 扩展说明
系统支持检测任意表格的到期时间字段,只需要在配置表中添加相应的配置即可。支持的字段类型包括:
- LocalDate
- LocalDateTime
- Date
- Timestamp
系统会自动识别并处理这些日期类型。
## 注意事项
1. 确保配置的字段名在目标表中存在
2. 到期时间字段不能为空
3. 建议为检测结果表添加适当的索引以提高查询性能
4. 可以根据业务需要调整提前提醒天数