datai/docs/archive/changelog/2026-01-25-002-07-changelog.md

219 lines
9.6 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.

# 变更日志:数字格式化功能
## 元数据
- 变更编号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 个测试用例