|
@@ -37,6 +37,7 @@ import java.math.BigDecimal;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.OffsetDateTime;
|
|
import java.time.OffsetDateTime;
|
|
|
|
|
+import java.time.ZoneId;
|
|
|
import java.time.ZoneOffset;
|
|
import java.time.ZoneOffset;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
@@ -294,17 +295,16 @@ public class AccountService {
|
|
|
*
|
|
*
|
|
|
* Python 对应: transfer_export_service (L753-821) 使用 ExcelUtil 导出 Excel
|
|
* Python 对应: transfer_export_service (L753-821) 使用 ExcelUtil 导出 Excel
|
|
|
*/
|
|
*/
|
|
|
- public byte[] transferExport(String startTime, String endTime, String enterpriseId) {
|
|
|
|
|
|
|
+ public byte[] transferExport(String outBizNo, String status, Long tenantId, String enterpriseId,
|
|
|
|
|
+ String startTime, String endTime) {
|
|
|
try {
|
|
try {
|
|
|
- OffsetDateTime start = parseDateTime(startTime);
|
|
|
|
|
- OffsetDateTime end = parseDateTime(endTime);
|
|
|
|
|
-
|
|
|
|
|
LambdaQueryWrapper<TransferEntity> w = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<TransferEntity> w = new LambdaQueryWrapper<>();
|
|
|
- w.ge(TransferEntity::getCreatedTime, start)
|
|
|
|
|
- .le(TransferEntity::getCreatedTime, end);
|
|
|
|
|
- if (enterpriseId != null && !enterpriseId.isBlank()) {
|
|
|
|
|
- w.eq(TransferEntity::getEnterpriseId, enterpriseId);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (outBizNo != null && !outBizNo.isBlank()) w.eq(TransferEntity::getOutBizNo, outBizNo);
|
|
|
|
|
+ if (status != null && !status.isBlank()) w.eq(TransferEntity::getStatus, status);
|
|
|
|
|
+ if (tenantId != null) w.eq(TransferEntity::getTenantId, tenantId);
|
|
|
|
|
+ if (enterpriseId != null && !enterpriseId.isBlank()) w.eq(TransferEntity::getEnterpriseId, enterpriseId);
|
|
|
|
|
+ if (startTime != null && !startTime.isBlank()) w.ge(TransferEntity::getCreatedTime, parseDateTime(startTime));
|
|
|
|
|
+ if (endTime != null && !endTime.isBlank()) w.le(TransferEntity::getCreatedTime, parseDateTime(endTime));
|
|
|
w.orderByDesc(TransferEntity::getId);
|
|
w.orderByDesc(TransferEntity::getId);
|
|
|
|
|
|
|
|
List<TransferEntity> records = transferMapper.selectList(w);
|
|
List<TransferEntity> records = transferMapper.selectList(w);
|
|
@@ -316,11 +316,15 @@ public class AccountService {
|
|
|
"REFUND", "退票");
|
|
"REFUND", "退票");
|
|
|
|
|
|
|
|
Map<String, String> payeeTypeMap = Map.of(
|
|
Map<String, String> payeeTypeMap = Map.of(
|
|
|
|
|
+ "ALIPAY_USER_ID", "支付宝账户",
|
|
|
|
|
+ "ALIPAY_LOGON_ID", "支付宝账户",
|
|
|
"ALIPAY_ACCOUNT", "支付宝账户",
|
|
"ALIPAY_ACCOUNT", "支付宝账户",
|
|
|
|
|
+ "BANKCARD_ACCOUNT", "银行卡",
|
|
|
"BANK_CARD", "银行卡");
|
|
"BANK_CARD", "银行卡");
|
|
|
|
|
|
|
|
ObjectMapper om = new ObjectMapper();
|
|
ObjectMapper om = new ObjectMapper();
|
|
|
List<Map<String, Object>> listData = new ArrayList<>();
|
|
List<Map<String, Object>> listData = new ArrayList<>();
|
|
|
|
|
+ DateTimeFormatter timeFmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
|
|
int seq = 1;
|
|
int seq = 1;
|
|
|
for (TransferEntity r : records) {
|
|
for (TransferEntity r : records) {
|
|
@@ -331,7 +335,8 @@ public class AccountService {
|
|
|
row.put("金额(元)", r.getAmount() != null ? r.getAmount().toPlainString() : "0");
|
|
row.put("金额(元)", r.getAmount() != null ? r.getAmount().toPlainString() : "0");
|
|
|
row.put("状态", statusMap.getOrDefault(r.getStatus(), r.getStatus() != null ? r.getStatus() : ""));
|
|
row.put("状态", statusMap.getOrDefault(r.getStatus(), r.getStatus() != null ? r.getStatus() : ""));
|
|
|
row.put("转账标题", r.getOrderTitle() != null ? r.getOrderTitle() : "");
|
|
row.put("转账标题", r.getOrderTitle() != null ? r.getOrderTitle() : "");
|
|
|
- row.put("创建时间", r.getCreatedTime() != null ? r.getCreatedTime().toString() : "");
|
|
|
|
|
|
|
+ row.put("创建时间", r.getCreatedTime() != null
|
|
|
|
|
+ ? r.getCreatedTime().atZoneSameInstant(ZoneId.of("Asia/Shanghai")).format(timeFmt) : "");
|
|
|
|
|
|
|
|
// 解析 payeeInfo JSON
|
|
// 解析 payeeInfo JSON
|
|
|
String name = "";
|
|
String name = "";
|
|
@@ -348,6 +353,8 @@ public class AccountService {
|
|
|
}
|
|
}
|
|
|
row.put("收款方姓名", name);
|
|
row.put("收款方姓名", name);
|
|
|
row.put("收款方类型", payeeTypeMap.getOrDefault(identityType, identityType));
|
|
row.put("收款方类型", payeeTypeMap.getOrDefault(identityType, identityType));
|
|
|
|
|
+ row.put("备注", r.getRemark() != null ? r.getRemark() : "");
|
|
|
|
|
+ row.put("失败原因", r.getErrorMsg() != null ? r.getErrorMsg() : "");
|
|
|
listData.add(row);
|
|
listData.add(row);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -361,8 +368,10 @@ public class AccountService {
|
|
|
mappingDict.put("状态", "状态");
|
|
mappingDict.put("状态", "状态");
|
|
|
mappingDict.put("转账标题", "转账标题");
|
|
mappingDict.put("转账标题", "转账标题");
|
|
|
mappingDict.put("创建时间", "创建时间");
|
|
mappingDict.put("创建时间", "创建时间");
|
|
|
|
|
+ mappingDict.put("备注", "备注");
|
|
|
|
|
+ mappingDict.put("失败原因", "失败原因");
|
|
|
|
|
|
|
|
- log.info("导出转账记录报表: {} -> {}, {} 条", startTime, endTime, listData.size());
|
|
|
|
|
|
|
+ log.info("导出转账记录报表: {} 条", listData.size());
|
|
|
return ExcelUtil.exportToExcel(listData, mappingDict);
|
|
return ExcelUtil.exportToExcel(listData, mappingDict);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
log.error("导出转账记录失败", e);
|
|
log.error("导出转账记录失败", e);
|