feat(oa): 添加项目资金人民币金额转换功能

- 在项目列表查询中增加实时汇率获取逻辑
- 根据备注信息判断是否需要将美元金额转换为人民币
- 为 SysOaProjectVo 增加 fundsRmb 字段用于存储转换后金额
- 实现美元金额自动转换并填充人民币金额字段
- 支持在 Excel 导出中显示人民币金额列
- 处理无备注或无资金情况下的默认值设置
This commit is contained in:
2025-11-11 17:07:48 +08:00
parent 2e00943724
commit 61b7654b3d
2 changed files with 27 additions and 0 deletions

View File

@@ -68,6 +68,12 @@ public class SysOaProjectVo {
@ExcelProperty(value = "项目总款")
private BigDecimal funds;
/**
* 人民币金额(转换后)
*/
@ExcelProperty(value = "人民币金额")
private BigDecimal fundsRmb;
/**
* 项目负责人
*/

View File

@@ -161,6 +161,27 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
public TableDataInfo<SysOaProjectVo> queryPageList(SysOaProjectBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SysOaProject> lqw = buildQueryWrapper(bo);
Page<SysOaProjectVo> result = baseMapper.selectVoPlus(pageQuery.build(), lqw);
// 获取实时汇率
BigDecimal currentExchangeRate = exchangeRateService.getCurrentUsdExchangeRate();
// 处理每条记录,转换美元金额为人民币
for (SysOaProjectVo vo : result.getRecords()) {
if (vo.getRemark() != null && vo.getFunds() != null) {
// 检查备注中是否包含"美元"或"美金"
if (vo.getRemark().contains("美元") || vo.getRemark().contains("美金")) {
// 转换为人民币
vo.setFundsRmb(vo.getFunds().multiply(currentExchangeRate));
} else {
// 不需要转换,直接使用原金额
vo.setFundsRmb(vo.getFunds());
}
} else if (vo.getFunds() != null) {
// 没有备注信息,默认使用原金额
vo.setFundsRmb(vo.getFunds());
}
}
return TableDataInfo.build(result);
}