余额额度流水加导出
This commit is contained in:
+91
@@ -0,0 +1,91 @@
|
||||
package com.ruoyi.customer.customermoney.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.customer.customermoney.domain.CustomerBalanceFlow;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 客户余额流水导出 VO(列与页面余额流水 tab 对齐,枚举导出为中文文案)
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-09-21
|
||||
*/
|
||||
@Data
|
||||
public class CustomerBalanceFlowExportVO implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Excel(name = "流水号", width = 22)
|
||||
private String flowNo;
|
||||
|
||||
@Excel(name = "时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
@Excel(name = "业务类型", width = 12)
|
||||
private String bizTypeLabel;
|
||||
|
||||
@Excel(name = "收支", width = 8)
|
||||
private String directionLabel;
|
||||
|
||||
@Excel(name = "原币金额", width = 16)
|
||||
private String amountText;
|
||||
|
||||
@Excel(name = "汇率", width = 12)
|
||||
private String exchangeRate;
|
||||
|
||||
@Excel(name = "本位币变动(CNY)", width = 18)
|
||||
private BigDecimal baseChangeAmount;
|
||||
|
||||
@Excel(name = "变动前余额", width = 14)
|
||||
private BigDecimal beforeBalance;
|
||||
|
||||
@Excel(name = "变动后余额", width = 14)
|
||||
private BigDecimal afterBalance;
|
||||
|
||||
@Excel(name = "关联单号", width = 22)
|
||||
private String bizNo;
|
||||
|
||||
@Excel(name = "操作人", width = 12)
|
||||
private String createBy;
|
||||
|
||||
@Excel(name = "备注", width = 30)
|
||||
private String remark;
|
||||
|
||||
public static CustomerBalanceFlowExportVO from(CustomerBalanceFlow f)
|
||||
{
|
||||
CustomerBalanceFlowExportVO vo = new CustomerBalanceFlowExportVO();
|
||||
vo.setFlowNo(f.getFlowNo());
|
||||
vo.setCreateTime(f.getCreateTime());
|
||||
vo.setBizTypeLabel(bizTypeLabel(f.getBizType()));
|
||||
boolean income = f.getDirection() != null && f.getDirection() == 1;
|
||||
vo.setDirectionLabel(income ? "收入" : "支出");
|
||||
String amt = f.getAmount() == null ? "" : f.getAmount().stripTrailingZeros().toPlainString();
|
||||
vo.setAmountText((f.getCurrency() == null ? "" : f.getCurrency() + " ") + amt);
|
||||
vo.setExchangeRate(f.getExchangeRate() == null ? null : f.getExchangeRate().stripTrailingZeros().toPlainString());
|
||||
BigDecimal base = f.getBaseAmount() != null ? f.getBaseAmount() : f.getAmount();
|
||||
// 支出导出为负数(配合“收支”列阅读,同时保持 Excel 数值类型)
|
||||
vo.setBaseChangeAmount(base == null ? null : (income ? base : base.negate()));
|
||||
vo.setBeforeBalance(f.getBeforeBalance());
|
||||
vo.setAfterBalance(f.getAfterBalance());
|
||||
vo.setBizNo(f.getBizNo());
|
||||
vo.setCreateBy(f.getCreateBy());
|
||||
vo.setRemark(f.getRemark());
|
||||
return vo;
|
||||
}
|
||||
|
||||
private static String bizTypeLabel(String v)
|
||||
{
|
||||
if ("RECEIPT".equals(v)) return "收款";
|
||||
if ("AR_BILL".equals(v)) return "应收账单";
|
||||
if ("BILL_PAY".equals(v)) return "账单核销";
|
||||
if ("ORDER".equals(v)) return "计费订单";
|
||||
if ("REFUND".equals(v)) return "退款";
|
||||
if ("ADJUST".equals(v)) return "手工调整";
|
||||
if ("FREEZE".equals(v)) return "冻结";
|
||||
if ("UNFREEZE".equals(v)) return "解冻";
|
||||
return v;
|
||||
}
|
||||
}
|
||||
+117
@@ -0,0 +1,117 @@
|
||||
package com.ruoyi.customer.customermoney.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.customer.customermoney.domain.CustomerCreditFlow;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 客户额度流水导出 VO(列与页面额度流水 tab 对齐,枚举导出为中文文案)
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-09-21
|
||||
*/
|
||||
@Data
|
||||
public class CustomerCreditFlowExportVO implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Excel(name = "流水号", width = 22)
|
||||
private String flowNo;
|
||||
|
||||
@Excel(name = "时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
@Excel(name = "业务单号", width = 22)
|
||||
private String bizNo;
|
||||
|
||||
@Excel(name = "变动类型", width = 12)
|
||||
private String changeTypeLabel;
|
||||
|
||||
@Excel(name = "变动维度", width = 18)
|
||||
private String dimensionLabel;
|
||||
|
||||
@Excel(name = "调整方式", width = 10)
|
||||
private String adjustModeLabel;
|
||||
|
||||
@Excel(name = "方向", width = 8)
|
||||
private String directionLabel;
|
||||
|
||||
@Excel(name = "变动前", width = 12)
|
||||
private BigDecimal beforeAmount;
|
||||
|
||||
@Excel(name = "变动额", width = 12)
|
||||
private BigDecimal changeAmount;
|
||||
|
||||
@Excel(name = "变动后", width = 12)
|
||||
private BigDecimal afterAmount;
|
||||
|
||||
@Excel(name = "已用额度快照", width = 14)
|
||||
private BigDecimal usedCredit;
|
||||
|
||||
@Excel(name = "生效日期", width = 12, dateFormat = "yyyy-MM-dd")
|
||||
private Date effectiveDate;
|
||||
|
||||
@Excel(name = "失效日期", width = 12)
|
||||
private String expireDateText;
|
||||
|
||||
@Excel(name = "调整原因", width = 30)
|
||||
private String reason;
|
||||
|
||||
@Excel(name = "操作人", width = 12)
|
||||
private String createBy;
|
||||
|
||||
@Excel(name = "备注", width = 30)
|
||||
private String remark;
|
||||
|
||||
public static CustomerCreditFlowExportVO from(CustomerCreditFlow f)
|
||||
{
|
||||
CustomerCreditFlowExportVO vo = new CustomerCreditFlowExportVO();
|
||||
vo.setFlowNo(f.getFlowNo());
|
||||
vo.setCreateTime(f.getCreateTime());
|
||||
vo.setBizNo(f.getBizNo());
|
||||
vo.setChangeTypeLabel(changeTypeLabel(f.getChangeType()));
|
||||
boolean usageFlow = "OCCUPY".equals(f.getChangeType()) || "RELEASE".equals(f.getChangeType());
|
||||
vo.setDimensionLabel(usageFlow ? "授信占用(已用额度)" : "授信额度");
|
||||
vo.setAdjustModeLabel(adjustModeLabel(f.getAdjustMode()));
|
||||
Integer dir = f.getDirection();
|
||||
vo.setDirectionLabel(dir == null ? "-" : (dir == 1 ? "增加" : "减少"));
|
||||
vo.setBeforeAmount(f.getBeforeAmount());
|
||||
// 减少导出为负数(配合“方向”列阅读,同时保持 Excel 数值类型)
|
||||
BigDecimal change = f.getChangeAmount();
|
||||
if (change != null && dir != null && dir == -1)
|
||||
{
|
||||
change = change.negate();
|
||||
}
|
||||
vo.setChangeAmount(change);
|
||||
vo.setAfterAmount(f.getAfterAmount());
|
||||
// 占用/释放流水的已用额度快照在页面上不展示
|
||||
vo.setUsedCredit(usageFlow ? null : f.getUsedCredit());
|
||||
vo.setEffectiveDate(f.getEffectiveDate());
|
||||
vo.setExpireDateText(f.getExpireDate() == null ? "长期" : new java.text.SimpleDateFormat("yyyy-MM-dd").format(f.getExpireDate()));
|
||||
vo.setReason(f.getReason());
|
||||
vo.setCreateBy(f.getCreateBy());
|
||||
vo.setRemark(f.getRemark());
|
||||
return vo;
|
||||
}
|
||||
|
||||
private static String changeTypeLabel(String v)
|
||||
{
|
||||
if ("INIT".equals(v)) return "初始化";
|
||||
if ("ADJUST".equals(v)) return "手工调整";
|
||||
if ("EXPIRE".equals(v)) return "到期失效";
|
||||
if ("OCCUPY".equals(v)) return "授信占用";
|
||||
if ("RELEASE".equals(v)) return "授信释放";
|
||||
return v;
|
||||
}
|
||||
|
||||
private static String adjustModeLabel(String v)
|
||||
{
|
||||
if ("SET".equals(v)) return "设置为";
|
||||
if ("ADD".equals(v)) return "增加";
|
||||
if ("SUB".equals(v)) return "减少";
|
||||
return v;
|
||||
}
|
||||
}
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
package com.ruoyi.customer.customermoney.vo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.customer.customermoney.domain.CustomerReceipt;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 客户收款记录导出 VO(列与页面收款记录 tab 对齐,枚举导出为中文文案)
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-09-21
|
||||
*/
|
||||
@Data
|
||||
public class CustomerReceiptExportVO implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Excel(name = "收款单号", width = 22)
|
||||
private String receiptNo;
|
||||
|
||||
@Excel(name = "收款日期", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date receivedAt;
|
||||
|
||||
@Excel(name = "收款类型", width = 12)
|
||||
private String receiptTypeLabel;
|
||||
|
||||
@Excel(name = "币种", width = 8)
|
||||
private String currency;
|
||||
|
||||
@Excel(name = "原币金额", width = 14)
|
||||
private BigDecimal amount;
|
||||
|
||||
@Excel(name = "汇率", width = 12)
|
||||
private String exchangeRate;
|
||||
|
||||
@Excel(name = "汇率来源", width = 10)
|
||||
private String rateSourceLabel;
|
||||
|
||||
@Excel(name = "本位币金额(CNY)", width = 16)
|
||||
private BigDecimal baseAmount;
|
||||
|
||||
@Excel(name = "收款方式", width = 12)
|
||||
private String payMethodLabel;
|
||||
|
||||
@Excel(name = "客户银行账号", width = 24)
|
||||
private String bankAccountNo;
|
||||
|
||||
@Excel(name = "银行/平台流水号", width = 22)
|
||||
private String bankTransactionNo;
|
||||
|
||||
@Excel(name = "状态", width = 10)
|
||||
private String statusLabel;
|
||||
|
||||
@Excel(name = "登记人", width = 12)
|
||||
private String createBy;
|
||||
|
||||
@Excel(name = "备注", width = 30)
|
||||
private String remark;
|
||||
|
||||
public static CustomerReceiptExportVO from(CustomerReceipt r)
|
||||
{
|
||||
CustomerReceiptExportVO vo = new CustomerReceiptExportVO();
|
||||
vo.setReceiptNo(r.getReceiptNo());
|
||||
vo.setReceivedAt(r.getReceivedAt());
|
||||
vo.setReceiptTypeLabel(receiptTypeLabel(r.getReceiptType()));
|
||||
vo.setCurrency(r.getCurrency());
|
||||
vo.setAmount(r.getAmount());
|
||||
vo.setExchangeRate(r.getExchangeRate() == null ? null : r.getExchangeRate().stripTrailingZeros().toPlainString());
|
||||
vo.setRateSourceLabel(rateSourceLabel(r.getRateSource()));
|
||||
vo.setBaseAmount(r.getBaseAmount());
|
||||
vo.setPayMethodLabel(payMethodLabel(r.getPayMethod()));
|
||||
vo.setBankAccountNo(r.getBankAccountNo());
|
||||
vo.setBankTransactionNo(r.getBankTransactionNo());
|
||||
vo.setStatusLabel(statusLabel(r.getStatus()));
|
||||
vo.setCreateBy(r.getCreateBy());
|
||||
vo.setRemark(r.getRemark());
|
||||
return vo;
|
||||
}
|
||||
|
||||
private static String receiptTypeLabel(String v)
|
||||
{
|
||||
if ("PREPAY".equals(v)) return "预充值";
|
||||
if ("REPAY".equals(v)) return "还款核销";
|
||||
if ("MIXED".equals(v)) return "混合";
|
||||
return v;
|
||||
}
|
||||
|
||||
private static String statusLabel(String v)
|
||||
{
|
||||
if ("PENDING".equals(v)) return "待确认";
|
||||
if ("CONFIRMED".equals(v)) return "已确认";
|
||||
if ("CANCELLED".equals(v)) return "已取消";
|
||||
return v;
|
||||
}
|
||||
|
||||
private static String payMethodLabel(String v)
|
||||
{
|
||||
if ("BANK_TRANSFER".equals(v)) return "银行转账";
|
||||
if ("ALIPAY".equals(v)) return "支付宝";
|
||||
if ("WECHAT".equals(v)) return "微信";
|
||||
if ("CASH".equals(v)) return "现金";
|
||||
if ("OTHER".equals(v)) return "其他";
|
||||
return v;
|
||||
}
|
||||
|
||||
private static String rateSourceLabel(String v)
|
||||
{
|
||||
if ("RATE_TABLE".equals(v)) return "汇率表";
|
||||
if ("MANUAL".equals(v)) return "手工修改";
|
||||
if ("SYSTEM".equals(v)) return "系统默认";
|
||||
return v;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user