From 9fdf0449aa6490e513fab51cac12ba48cd29a302 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 13 Dec 2025 13:10:50 +0800 Subject: [PATCH] =?UTF-8?q?12=E6=9C=8812=E6=97=A5=E7=8E=B0=E9=87=91?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=A4=9A=E8=AF=AD=E8=A8=80=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=8C=E6=88=90=E5=8A=9F=E5=AF=BC=E5=87=BA=E5=A4=9A=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E7=89=88=E6=9C=ACExcel=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/Util/LanguageTranslationUtil.java | 5 +- .../demo/controller/coin/ExportController.java | 141 +------ .../serviceImpl/coin/ExportExcelServiceImpl.java | 412 ++++++++++++++++++++- 3 files changed, 420 insertions(+), 138 deletions(-) diff --git a/src/main/java/com/example/demo/Util/LanguageTranslationUtil.java b/src/main/java/com/example/demo/Util/LanguageTranslationUtil.java index 8f0f8ae..0154fa0 100644 --- a/src/main/java/com/example/demo/Util/LanguageTranslationUtil.java +++ b/src/main/java/com/example/demo/Util/LanguageTranslationUtil.java @@ -84,8 +84,9 @@ public class LanguageTranslationUtil { */ private Translation findTranslationByChinese(String chineseSimplified) { // 先从缓存中查找 - if (translationCache.containsKey(chineseSimplified)) { - return translationCache.get(chineseSimplified); + Translation cached = translationCache.get(chineseSimplified); + if (cached != null) { + return cached; } // 从数据库中精确查找 diff --git a/src/main/java/com/example/demo/controller/coin/ExportController.java b/src/main/java/com/example/demo/controller/coin/ExportController.java index 4f65ccb..8d55f38 100644 --- a/src/main/java/com/example/demo/controller/coin/ExportController.java +++ b/src/main/java/com/example/demo/controller/coin/ExportController.java @@ -77,14 +77,6 @@ public class ExportController { dto.setToken(token); dto.setLang(lang); // 设置语言参数 - // 解析语言代码 - String languageCode = parseLanguageCode(lang); - - // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 - if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { - convertRechargeTranslatedFieldsToChinese(dto.getRechargeUser(), languageCode); - } - try { // 尝试获取锁 if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { @@ -109,14 +101,6 @@ public class ExportController { dto.setToken(token); dto.setLang(lang); // 设置语言参数 - // 解析语言代码 - String languageCode = parseLanguageCode(lang); - - // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 - if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { - convertRefundTranslatedFieldsToChinese(dto.getRefundUser(), languageCode); - } - try { // 尝试获取锁 if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { @@ -141,15 +125,13 @@ public class ExportController { dto.setToken(token); dto.setLang(lang); // 设置语言参数 - // 解析语言代码 - String languageCode = parseLanguageCode(lang); - - // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 - if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { - convertConsumeTranslatedFieldsToChinese(dto.getConsumeUser(), languageCode); - } - try { + // 尝试获取锁 + if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { + String errorMsg = languageTranslationUtil.translate("操作太频繁,请稍后重试", lang); + throw new BusinessException(errorMsg); + } + // 执行业务逻辑 return exportService.addExportConsume(dto); } finally { // 释放锁 @@ -306,115 +288,4 @@ public class ExportController { redisLockUtil.unlock(lockKey, requestId); } } - - - /** - * 解析语言代码 - */ - private String parseLanguageCode(String langHeader) { - if (langHeader == null || langHeader.isEmpty()) { - return "zh"; - } - // 处理类似 "en-US" 或 "zh-TW" 的情况 - if (langHeader.contains("-")) { - String[] parts = langHeader.split("-"); - // 特殊处理中文繁体 - if ("zh".equalsIgnoreCase(parts[0]) && "TW".equalsIgnoreCase(parts[1])) { - return "zh_TW"; - } - return parts[0].toLowerCase(); - } - return langHeader.toLowerCase(); - } - - /** - * 将充值查询条件中的翻译字段转换为中文简体 - */ - private void convertRechargeTranslatedFieldsToChinese(RechargeUser rechargeUser, String languageCode) { - if (rechargeUser != null) { - // 转换市场名称 - if (rechargeUser.getMarket() != null && !rechargeUser.getMarket().isEmpty()) { - String chineseMarket = translationService.findChineseSimplifiedByTranslation( - rechargeUser.getMarket(), languageCode); - rechargeUser.setMarket(chineseMarket); - } - - // 转换汇率名称 - if (rechargeUser.getRateName() != null && !rechargeUser.getRateName().isEmpty()) { - String chineseRateName = translationService.findChineseSimplifiedByTranslation( - rechargeUser.getRateName(), languageCode); - rechargeUser.setRateName(chineseRateName); - } - - // 转换支付方式 - if (rechargeUser.getPayModel() != null && !rechargeUser.getPayModel().isEmpty()) { - String chinesePayModel = translationService.findChineseSimplifiedByTranslation( - rechargeUser.getPayModel(), languageCode); - rechargeUser.setPayModel(chinesePayModel); - } - - // 转换备注 - if (rechargeUser.getRemark() != null && !rechargeUser.getRemark().isEmpty()) { - String chineseRemark = translationService.findChineseSimplifiedByTranslation( - rechargeUser.getRemark(), languageCode); - rechargeUser.setRemark(chineseRemark); - } - } - } - - /** - * 将退款查询条件中的翻译字段转换为中文简体 - */ - private void convertRefundTranslatedFieldsToChinese(RefundUser refundUser, String languageCode) { - if (refundUser != null) { - // 转换市场名称 - if (refundUser.getMarket() != null && !refundUser.getMarket().isEmpty()) { - String chineseMarket = translationService.findChineseSimplifiedByTranslation( - refundUser.getMarket(), languageCode); - refundUser.setMarket(chineseMarket); - } - - // 转换商品名称 - if (refundUser.getGoodsName() != null && !refundUser.getGoodsName().isEmpty()) { - String chineseGoodsName = translationService.findChineseSimplifiedByTranslation( - refundUser.getGoodsName(), languageCode); - refundUser.setGoodsName(chineseGoodsName); - } - - // 转换退款类型 - if (refundUser.getRefundType() != null && !refundUser.getRefundType().isEmpty()) { - String chineseRefundType = translationService.findChineseSimplifiedByTranslation( - refundUser.getRefundType(), languageCode); - refundUser.setRefundType(chineseRefundType); - } - - // 转换备注 - if (refundUser.getRemark() != null && !refundUser.getRemark().isEmpty()) { - String chineseRemark = translationService.findChineseSimplifiedByTranslation( - refundUser.getRemark(), languageCode); - refundUser.setRemark(chineseRemark); - } - } - } - - /** - * 将消费查询条件中的翻译字段转换为中文简体 - */ - private void convertConsumeTranslatedFieldsToChinese(ConsumeUser consumeUser, String languageCode) { - if (consumeUser != null) { - // 转换商品名称 - if (consumeUser.getGoodsName() != null && !consumeUser.getGoodsName().isEmpty()) { - String chineseName = translationService.findChineseSimplifiedByTranslation( - consumeUser.getGoodsName(), languageCode); - consumeUser.setGoodsName(chineseName); - } - - // 转换市场名称 - if (consumeUser.getMarket() != null && !consumeUser.getMarket().isEmpty()) { - String chineseMarket = translationService.findChineseSimplifiedByTranslation( - consumeUser.getMarket(), languageCode); - consumeUser.setMarket(chineseMarket); - } - } - } } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java index 76127ad..824a146 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -6,6 +6,7 @@ import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.example.demo.Util.ExcelUploadUtil; import com.example.demo.Util.JWTUtil; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.controller.bean.BeanConsumeController; import com.example.demo.controller.bean.BeanRechargeController; import com.example.demo.controller.cash.CashCollectionController; @@ -85,6 +86,9 @@ public class ExportExcelServiceImpl implements ExportExcelService { private CashRefundController cashRefundController; @Autowired private CashCollectionController cashCollectionController; + // 注入LanguageTranslationUtil + @Autowired + private LanguageTranslationUtil languageTranslationUtil; // 每页查询的数据量 private static final int PAGE_SIZE = 5000; @Autowired @@ -216,7 +220,14 @@ public class ExportExcelServiceImpl implements ExportExcelService { List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); refundUser.setMarkets(markets); page.setRefundUser(refundUser); - return refundController.select(page, String.join(",", markets)); + + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return refundController.select(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -420,6 +431,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode requestDataNode = rootNode.path("requestData"); String tokenValue = requestDataNode.path("token").asText(); + // 获取语言参数 + String lang = "zh_CN"; + JsonNode langNode = rootNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + // 2. 验证导出记录 AiEmotionExportRecordVO record = validateExportRecord(recordId); if (record == null) return null; @@ -469,11 +487,60 @@ public class ExportExcelServiceImpl implements ExportExcelService { // 在这里添加类型转换逻辑 if ("goldDetail".equals(exportType) && list.get(0) instanceof GoldDetail) { fillGoldDetailTypeDescriptions((List) list); + // 添加翻译支持 + translateGoldDetailList((List) list, lang); } // 添加退款方式转换逻辑 if ("refundUser".equals(exportType) && list.get(0) instanceof RefundUser) { fillRefundUserModelDescriptions((List) list); + // 添加翻译支持 + translateRefundUserList((List) list, lang); + } + + // 添加充值用户翻译支持 + if ("rechargeUser".equals(exportType) && list.get(0) instanceof RechargeUser) { + translateRechargeUserList((List) list, lang); + } + + // 添加消费用户翻译支持 + if ("consumeUser".equals(exportType) && list.get(0) instanceof ConsumeUser) { + translateConsumeUserList((List) list, lang); + } + + // 添加直播用户翻译支持 + if ("liveUser".equals(exportType) && list.get(0) instanceof BeanConsumeLive) { + translateBeanConsumeLiveList((List) list, lang); + } + + // 添加铁粉用户翻译支持 + if ("fanUser".equals(exportType) && list.get(0) instanceof BeanConsumeFan) { + translateBeanConsumeFanList((List) list, lang); + } + + // 添加文章用户翻译支持 + if ("articleUser".equals(exportType) && list.get(0) instanceof BeanConsumeArticle) { + translateBeanConsumeArticleList((List) list, lang); + } + + // 添加金豆充值翻译支持 + if ("beanUser".equals(exportType) && list.get(0) instanceof BeanSystemRechargeInfo) { + translateBeanSystemRechargeInfoList((List) list, lang); + } + + // 添加在线充值翻译支持 + if ("onlineUser".equals(exportType) && list.get(0) instanceof BeanOnlineRechargeInfo) { + translateBeanOnlineRechargeInfoList((List) list, lang); + } + + // 添加财务退款翻译支持 + if ("financeUser".equals(exportType) && list.get(0) instanceof CashRecordDTO) { + translateCashRecordDTOList((List) list, lang); + } + + // 添加现金收款翻译支持 + if ("cashUser".equals(exportType) && list.get(0) instanceof CashCollection) { + translateCashCollectionList((List) list, lang); } excelWriter.write(list, writeSheet); @@ -680,4 +747,347 @@ public class ExportExcelServiceImpl implements ExportExcelService { default: return "未知退款方式"; } } + + // 各种实体类的翻译方法 + + /** + * 翻译金币明细列表 + */ + private void translateGoldDetailList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (GoldDetail item : list) { + // 翻译类型描述 + if (item.getTypeDesc() != null && !item.getTypeDesc().isEmpty()) { + item.setTypeDesc(languageTranslationUtil.translate(item.getTypeDesc(), lang)); + } + + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + } + } + + /** + * 翻译退款用户列表 + */ + private void translateRefundUserList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (RefundUser item : list) { + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译退款类型 + if (item.getRefundType() != null && !item.getRefundType().isEmpty()) { + item.setRefundType(languageTranslationUtil.translate(item.getRefundType(), lang)); + } + + // 翻译退款方式描述 + if (item.getRefundModelDesc() != null && !item.getRefundModelDesc().isEmpty()) { + item.setRefundModelDesc(languageTranslationUtil.translate(item.getRefundModelDesc(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译充值用户列表 + */ + private void translateRechargeUserList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (RechargeUser item : list) { + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译汇率名称 + if (item.getRateName() != null && !item.getRateName().isEmpty()) { + item.setRateName(languageTranslationUtil.translate(item.getRateName(), lang)); + } + + // 翻译支付方式 + if (item.getPayModel() != null && !item.getPayModel().isEmpty()) { + item.setPayModel(languageTranslationUtil.translate(item.getPayModel(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译消费用户列表 + */ + private void translateConsumeUserList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (ConsumeUser item : list) { + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译直播消费列表 + */ + private void translateBeanConsumeLiveList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanConsumeLive item : list) { + // 翻译地区/分部 + if (item.getDept() != null && !item.getDept().isEmpty()) { + item.setDept(languageTranslationUtil.translate(item.getDept(), lang)); + } + + // 翻译礼物名称 + if (item.getGift() != null && !item.getGift().isEmpty()) { + item.setGift(languageTranslationUtil.translate(item.getGift(), lang)); + } + + // 翻译频道名称 + if (item.getLiveChannel() != null && !item.getLiveChannel().isEmpty()) { + item.setLiveChannel(languageTranslationUtil.translate(item.getLiveChannel(), lang)); + } + + // 翻译直播间名称 + if (item.getLiveName() != null && !item.getLiveName().isEmpty()) { + item.setLiveName(languageTranslationUtil.translate(item.getLiveName(), lang)); + } + } + } + + /** + * 翻译铁粉消费列表 + */ + private void translateBeanConsumeFanList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanConsumeFan item : list) { + // 翻译地区/分部 + if (item.getDept() != null && !item.getDept().isEmpty()) { + item.setDept(languageTranslationUtil.translate(item.getDept(), lang)); + } + + // 翻译频道名称 + if (item.getChannel() != null && !item.getChannel().isEmpty()) { + item.setChannel(languageTranslationUtil.translate(item.getChannel(), lang)); + } + + // 翻译会员类型 + if (item.getType() != null && !item.getType().isEmpty()) { + item.setType(languageTranslationUtil.translate(item.getType(), lang)); + } + } + } + + /** + * 翻译文章消费列表 + */ + private void translateBeanConsumeArticleList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanConsumeArticle item : list) { + // 翻译地区/分部 + if (item.getDept() != null && !item.getDept().isEmpty()) { + item.setDept(languageTranslationUtil.translate(item.getDept(), lang)); + } + + // 翻译类型 + if (item.getType() != null && !item.getType().isEmpty()) { + item.setType(languageTranslationUtil.translate(item.getType(), lang)); + } + + // 翻译文章/视频标题 + if (item.getArticleName() != null && !item.getArticleName().isEmpty()) { + item.setArticleName(languageTranslationUtil.translate(item.getArticleName(), lang)); + } + } + } + + /** + * 翻译金豆系统充值列表 + */ + private void translateBeanSystemRechargeInfoList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanSystemRechargeInfo item : list) { + // 翻译所属地区 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译金豆在线充值列表 + */ + private void translateBeanOnlineRechargeInfoList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanOnlineRechargeInfo item : list) { + // 翻译所属地区 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译充值平台 + if (item.getPlatform() != null && !item.getPlatform().isEmpty()) { + item.setPlatform(languageTranslationUtil.translate(item.getPlatform(), lang)); + } + } + } + + /** + * 翻译现金退款记录列表 + */ + private void translateCashRecordDTOList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (CashRecordDTO item : list) { + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + + // 翻译退款理由 + if (item.getRefundReason() != null && !item.getRefundReason().isEmpty()) { + item.setRefundReason(languageTranslationUtil.translate(item.getRefundReason(), lang)); + } + + // 翻译驳回理由 + if (item.getRejectReason() != null && !item.getRejectReason().isEmpty()) { + item.setRejectReason(languageTranslationUtil.translate(item.getRejectReason(), lang)); + } + + // 翻译退款备注 + if (item.getRefundRemark() != null && !item.getRefundRemark().isEmpty()) { + item.setRefundRemark(languageTranslationUtil.translate(item.getRefundRemark(), lang)); + } + } + } + + /** + * 翻译现金收款列表 + */ + private void translateCashCollectionList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (CashCollection item : list) { + // 翻译所属地区名称 + if (item.getMarketName() != null && !item.getMarketName().isEmpty()) { + item.setMarketName(languageTranslationUtil.translate(item.getMarketName(), lang)); + } + + // 翻译活动名称 + if (item.getActivity() != null && !item.getActivity().isEmpty()) { + item.setActivity(languageTranslationUtil.translate(item.getActivity(), lang)); + } + + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译数量单位 + if (item.getNumUnit() != null && !item.getNumUnit().isEmpty()) { + item.setNumUnit(languageTranslationUtil.translate(item.getNumUnit(), lang)); + } + + // 翻译付款币种 + if (item.getPaymentCurrency() != null && !item.getPaymentCurrency().isEmpty()) { + item.setPaymentCurrency(languageTranslationUtil.translate(item.getPaymentCurrency(), lang)); + } + + // 翻译到账币种 + if (item.getReceivedCurrency() != null && !item.getReceivedCurrency().isEmpty()) { + item.setReceivedCurrency(languageTranslationUtil.translate(item.getReceivedCurrency(), lang)); + } + + // 翻译支付方式 + if (item.getPayType() != null && !item.getPayType().isEmpty()) { + item.setPayType(languageTranslationUtil.translate(item.getPayType(), lang)); + } + + // 翻译到账地区 + if (item.getReceivedMarket() != null && !item.getReceivedMarket().isEmpty()) { + item.setReceivedMarket(languageTranslationUtil.translate(item.getReceivedMarket(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + + // 翻译驳回理由 + if (item.getRejectReason() != null && !item.getRejectReason().isEmpty()) { + item.setRejectReason(languageTranslationUtil.translate(item.getRejectReason(), lang)); + } + + // 翻译到账备注 + if (item.getReceivedRemark() != null && !item.getReceivedRemark().isEmpty()) { + item.setReceivedRemark(languageTranslationUtil.translate(item.getReceivedRemark(), lang)); + } + } + } }