package cn.iocoder.yudao.module.finance.controller.admin.voucher.vo;
|
|
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
|
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
|
import cn.iocoder.yudao.module.finance.enums.DictTypeConstants;
|
import cn.iocoder.yudao.module.system.api.storage.dto.StorageBlobRespDTO;
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
import cn.idev.excel.annotation.ExcelProperty;
|
import cn.idev.excel.annotation.write.style.ColumnWidth;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import lombok.Data;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
|
@Schema(description = "管理后台 - 记账凭证 Response VO")
|
@Data
|
@ExcelIgnoreUnannotated
|
public class FinVoucherRespVO {
|
|
@Schema(description = "凭证编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
@ExcelProperty("凭证编号")
|
private Long id;
|
|
@Schema(description = "凭证字号", requiredMode = Schema.RequiredMode.REQUIRED, example = "记-0001")
|
@ExcelProperty("凭证字号")
|
private String voucherNo;
|
|
@Schema(description = "凭证日期", requiredMode = Schema.RequiredMode.REQUIRED)
|
@ExcelProperty("凭证日期")
|
private LocalDate voucherDate;
|
|
@Schema(description = "摘要", example = "销售收入")
|
@ExcelProperty("摘要")
|
private String summary;
|
|
@Schema(description = "借方合计", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000.00")
|
@ExcelProperty("借方合计")
|
private BigDecimal debit;
|
|
@Schema(description = "贷方合计", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000.00")
|
@ExcelProperty("贷方合计")
|
private BigDecimal credit;
|
|
@Schema(description = "凭证状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0")
|
// 注意:@DictFormat 只负责「从字段上取字典类型」,真正做翻译的是 DictConvert,
|
// 必须在这里显式挂上 converter,否则导出的是 0/10/20 这样的原始码
|
@ExcelProperty(value = "凭证状态", converter = DictConvert.class)
|
@DictFormat(DictTypeConstants.VOUCHER_STATUS)
|
private Integer status;
|
|
@Schema(description = "制单人(用户编号)", example = "1")
|
private String creator;
|
|
/**
|
* 制单人昵称,专供列表与 Excel 导出。
|
* BaseDO.creator 存的是用户 ID,直接展示就是一串数字,所以另用这个字段承载昵称;
|
* creator 本身仍保留在 JSON 里(前端搜索条件、权限判断靠它)。
|
*/
|
@Schema(description = "制单人昵称", example = "管理员")
|
@ExcelProperty("制单人")
|
private String creatorName;
|
|
@Schema(description = "附件张数", example = "0")
|
@ExcelProperty("附件张数")
|
private Integer attachmentCount;
|
|
@Schema(description = "备注", example = "备注")
|
@ExcelProperty("备注")
|
private String remark;
|
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
// 「yyyy-MM-dd HH:mm:ss」正好 19 个字符,自适应列宽就只给 19,贴着边很难看,这里放宽到 22
|
@ColumnWidth(22)
|
@ExcelProperty("创建时间")
|
private LocalDateTime createTime;
|
|
@Schema(description = "凭证分录", example = "[]")
|
private List<FinVoucherEntryRespVO> entries;
|
|
@Schema(description = "附件列表", example = "[]")
|
private List<StorageBlobRespDTO> attachmentList;
|
|
@Schema(description = "是否存在附件", example = "true")
|
private Boolean hasAttachment;
|
|
}
|