znpt-backend/doc/auto_expiration_readme.md

138 lines
3.8 KiB
Markdown
Raw Normal View History

# 自动到期检测功能使用说明
## 功能概述
自动到期检测功能是一个智能的到期时间监控系统,能够自动检测数据库中各种表格的到期时间字段,并提供到期提醒功能。
## 主要特性
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. 可以根据业务需要调整提前提醒天数