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