219 lines
9.6 KiB
Markdown
219 lines
9.6 KiB
Markdown
# 变更日志:数字格式化功能
|
||
|
||
## 元数据
|
||
- 变更编号:2026-01-25-002-07-changelog
|
||
- 需求编号:2026-01-21-002-07
|
||
- 功能名称:数字格式化功能
|
||
- 版本:3.8.5
|
||
- 发布日期:2026-01-25
|
||
- 变更类型:新功能
|
||
- 状态:已完成
|
||
- 阶段:阶段 8:变更日志
|
||
|
||
## 变更概述
|
||
|
||
本次更新新增了数字格式化功能,支持根据用户地区显示数字,支持常用数字格式、千分位分隔符、小数位格式化、百分比格式化、科学计数法。后端使用 Java 的 NumberFormat 和 DecimalFormat 进行数字格式化,支持多语言数字显示。
|
||
|
||
## 新增功能
|
||
|
||
### 1. 数字格式化功能
|
||
- **功能描述**:支持常用数字格式(COMMA、DOT、SPACE、CUSTOM)
|
||
- **影响范围**:datai-common、datai-framework
|
||
- **相关文件**:
|
||
- [NumberConstants.java](file:///d:/idea_demo/datai/datai-common/src/main/java/com/datai/common/constant/NumberConstants.java) - 数字格式常量类
|
||
- [@NumberFormat.java](file:///d:/idea_demo/datai/datai-common/src/main/java/com/datai/common/annotation/NumberFormat.java) - 数字格式化注解
|
||
- [NumberFormatUtils.java](file:///d:/idea_demo/datai/datai-common/src/main/java/com/datai/common/utils/NumberFormatUtils.java) - 数字格式化工具类
|
||
- [NumberFormatAspect.java](file:///d:/idea_demo/datai/datai-framework/src/main/java/com/datai/framework/aspectj/NumberFormatAspect.java) - 数字格式化 AOP 切面
|
||
|
||
### 2. 用户数字格式偏好管理
|
||
- **功能描述**:支持用户设置和切换数字格式偏好
|
||
- **影响范围**:datai-common、datai-system、datai-admin
|
||
- **相关文件**:
|
||
- [SysUser.java](file:///d:/idea_demo/datai/datai-common/src/main/java/com/datai/common/core/domain/entity/SysUser.java) - 添加数字格式偏好字段
|
||
- [ISysUserService.java](file:///d:/idea_demo/datai/datai-system/src/main/java/com/datai/system/service/ISysUserService.java) - 添加数字格式偏好管理方法
|
||
- [SysUserServiceImpl.java](file:///d:/idea_demo/datai/datai-system/src/main/java/com/datai/system/service/impl/SysUserServiceImpl.java) - 实现数字格式偏好管理逻辑
|
||
- [SysUserController.java](file:///d:/idea_demo/datai/datai-admin/src/main/java/com/datai/web/controller/system/SysUserController.java) - 添加数字格式偏好管理接口
|
||
|
||
### 3. 系统默认数字格式配置
|
||
- **功能描述**:支持在配置文件中设置系统默认数字格式
|
||
- **影响范围**:datai-admin
|
||
- **相关文件**:
|
||
- [SysConfigController.java](file:///d:/idea_demo/datai/datai-admin/src/main/java/com/datai/web/controller/system/SysConfigController.java) - 添加系统默认数字格式接口
|
||
|
||
### 4. 缓存机制
|
||
- **功能描述**:使用 Redis 缓存用户数字格式偏好,提高查询性能
|
||
- **影响范围**:datai-common、datai-system
|
||
- **相关文件**:
|
||
- [CacheConstants.java](file:///d:/idea_demo/datai/datai-common/src/main/java/com/datai/common/constant/CacheConstants.java) - 添加数字格式缓存常量
|
||
- [SysUserServiceImpl.java](file:///d:/idea_demo/datai/datai-system/src/main/java/com/datai/system/service/impl/SysUserServiceImpl.java) - 实现缓存逻辑
|
||
|
||
### 5. 单元测试
|
||
- **功能描述**:为数字格式化功能添加单元测试
|
||
- **影响范围**:datai-common、datai-framework
|
||
- **相关文件**:
|
||
- [NumberFormatUtilsTest.java](file:///d:/idea_demo/datai/datai-common/src/test/java/com/datai/common/utils/NumberFormatUtilsTest.java) - NumberFormatUtils 工具类单元测试
|
||
- [NumberFormatAspectTest.java](file:///d:/idea_demo/datai/datai-framework/src/test/java/com/datai/framework/aspectj/NumberFormatAspectTest.java) - NumberFormatAspect AOP 切面单元测试
|
||
|
||
## 优化改进
|
||
|
||
### 1. 切面顺序控制
|
||
- **改进描述**:为 NumberFormatAspect 添加 @Order(3) 注解,确保数字格式化在时区转换和日期格式化之后执行
|
||
- **影响范围**:datai-framework
|
||
- **相关文件**:
|
||
- [NumberFormatAspect.java](file:///d:/idea_demo/datai/datai-framework/src/main/java/com/datai/framework/aspectj/NumberFormatAspect.java) - 添加 @Order(3) 注解
|
||
|
||
### 2. 线程安全优化
|
||
- **改进描述**:使用 ConcurrentHashMap 缓存 DecimalFormat 实例,确保线程安全
|
||
- **影响范围**:datai-common
|
||
- **相关文件**:
|
||
- [NumberFormatUtils.java](file:///d:/idea_demo/datai/datai-common/src/main/java/com/datai/common/utils/NumberFormatUtils.java) - 使用 ConcurrentHashMap 缓存格式化器实例
|
||
|
||
### 3. 缓存一致性优化
|
||
- **改进描述**:用户切换数字格式偏好时立即清除缓存,确保缓存一致性
|
||
- **影响范围**:datai-system
|
||
- **相关文件**:
|
||
- [SysUserServiceImpl.java](file:///d:/idea_demo/datai/datai-system/src/main/java/com/datai/system/service/impl/SysUserServiceImpl.java) - 更新数据库后立即清除缓存
|
||
|
||
## 数据库变更
|
||
|
||
### 1. 扩展 SysUser 表
|
||
- **变更类型**:新增字段
|
||
- **变更内容**:
|
||
```sql
|
||
ALTER TABLE sys_user ADD COLUMN number_format VARCHAR(50) DEFAULT 'COMMA' COMMENT '数字格式(COMMA、DOT、SPACE、CUSTOM)';
|
||
ALTER TABLE sys_user ADD COLUMN decimal_places INT DEFAULT 2 COMMENT '小数位偏好(0-10)';
|
||
```
|
||
- **影响范围**:sys_user 表
|
||
- **相关文件**:
|
||
- [2026-01-25-002-07-数字格式化.sql](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/sql/2026-01-25-002-07-数字格式化.sql) - 数据库变更脚本
|
||
|
||
## 配置变更
|
||
|
||
本次更新无配置变更。
|
||
|
||
## API 变更
|
||
|
||
### 1. 新增用户数字格式偏好管理接口
|
||
- **接口路径**:/system/user/numberFormat
|
||
- **请求方法**:GET
|
||
- **接口描述**:获取当前用户数字格式偏好
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功",
|
||
"data": {
|
||
"userId": 1,
|
||
"numberFormat": "COMMA",
|
||
"decimalPlaces": 2
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. 新增切换用户数字格式偏好接口
|
||
- **接口路径**:/system/user/switchNumberFormat
|
||
- **请求方法**:POST
|
||
- **接口描述**:切换用户数字格式偏好
|
||
- **请求示例**:
|
||
```json
|
||
{
|
||
"numberFormat": "COMMA",
|
||
"decimalPlaces": 2
|
||
}
|
||
```
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功"
|
||
}
|
||
```
|
||
|
||
### 3. 新增获取系统默认数字格式接口
|
||
- **接口路径**:/system/config/defaultNumberFormat
|
||
- **请求方法**:GET
|
||
- **接口描述**:获取系统默认数字格式
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功",
|
||
"data": {
|
||
"numberFormat": "COMMA",
|
||
"decimalPlaces": 2
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4. 新增获取常用数字格式列表接口
|
||
- **接口路径**:/system/config/commonNumberFormats
|
||
- **请求方法**:GET
|
||
- **接口描述**:获取常用数字格式列表
|
||
- **响应示例**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"msg": "操作成功",
|
||
"data": {
|
||
"numberFormats": {
|
||
"COMMA": "1,000.00",
|
||
"DOT": "1.000,00",
|
||
"SPACE": "1 000.00"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## 依赖变更
|
||
|
||
本次更新无新增依赖,使用 Java 内置的 NumberFormat 和 DecimalFormat 进行数字格式化。
|
||
|
||
## 兼容性说明
|
||
|
||
### 1. 向后兼容性
|
||
- 本次更新为新增功能,不影响现有功能
|
||
- 现有 API 接口保持不变
|
||
- 数据库变更为新增字段,不影响现有数据
|
||
|
||
### 2. 升级说明
|
||
- 执行数据库变更脚本:[2026-01-25-002-07-数字格式化.sql](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/sql/2026-01-25-002-07-数字格式化.sql)
|
||
- 重启应用:重启应用以加载新的代码
|
||
|
||
### 3. 回滚说明
|
||
- 如需回滚,执行以下步骤:
|
||
1. 删除新增的数据库字段:`ALTER TABLE sys_user DROP COLUMN number_format; ALTER TABLE sys_user DROP COLUMN decimal_places;`
|
||
2. 删除新增的代码文件
|
||
3. 恢复修改的文件
|
||
4. 重启应用
|
||
|
||
## 已知问题
|
||
|
||
本次更新无已知问题。
|
||
|
||
## 后续计划
|
||
|
||
1. 进行集成测试:测试用户数字格式偏好接口、系统默认数字格式接口、AOP 切面功能、缓存功能、多语言数字显示功能
|
||
2. 进行手动测试:测试不同数字格式的格式化、多语言数字显示、用户数字格式偏好切换、缓存功能、嵌套对象格式化
|
||
3. 创建复盘文档:[2026-01-25-002-07-retro.md](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/retros/2026-01-25-002-07-retro.md)
|
||
4. 创建 API 文档:[2026-01-25-002-07-api.md](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/api-docs/2026-01-25-002-07-api.md)
|
||
|
||
## 相关文档
|
||
|
||
- [需求文档](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/requirements/2026-01-21-002-07-数字格式化需求.md)
|
||
- [设计文档](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/design/2026-01-21-002-07-数字格式化设计.md)
|
||
- [架构决策记录](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/decisions/adr/2026-01-25-002-07-ADR-数字格式化技术选型.md)
|
||
- [SQL 脚本](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/sql/2026-01-25-002-07-数字格式化.sql)
|
||
- [提示词文档](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-01-25-002-07-prompt-数字格式化功能.md)
|
||
- [会话记录](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/sessions/2026-01-25-002-07-session.md)
|
||
- [复盘文档](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/retros/2026-01-25-002-07-retro.md) - 待创建
|
||
- [API 文档](file:///d:/idea_demo/datai/datai-scenes/datai-scene-salesforce/docs/api-docs/2026-01-25-002-07-api.md) - 待创建
|
||
|
||
## 变更统计
|
||
|
||
- 新增文件:6 个
|
||
- 修改文件:6 个
|
||
- 新增 API 接口:4 个
|
||
- 数据库变更:2 个字段
|
||
- 配置变更:0 个配置项
|
||
- 单元测试:2 个测试类,30 个测试用例
|