package com.ruoyi.cwgl.domain.dto; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * 应付账单API接口数据传输对象 */ @Data public class PayableBillApiDto { /** * 应付账单管理信息 */ @NotNull(message = "应付账单信息不能为空") private PayableBillDto bill; /** * 应付费用管理信息 */ @NotNull(message = "应付费用信息不能为空") private List fees; /** * 应付账单数据传输对象 */ @Data public static class PayableBillDto { /** 账单名称 */ @NotBlank(message = "账单名称不能为空") private String billName; /** 供应商名称 */ @NotBlank(message = "供应商名称不能为空") private String supplierName; /** 是否内部结算 */ private String isInternalSettlement; /** 内部结算单位 */ private String internalSettlementUnit; /** 单据数量 */ private Integer documentCount; /** 应结算金额 */ @NotNull(message = "应结算金额不能为空") private BigDecimal totalAmount; /** 币制 */ @NotBlank(message = "币制不能为空") private String currency; /** 减免金额 */ private BigDecimal discountAmount; /** 已付金额 */ private BigDecimal paidAmount; /** 待付金额 */ private BigDecimal pendingAmount; /** 汇率(港币兑人民币) */ private BigDecimal exchangeRate; /** 人民币金额 */ private BigDecimal cnyAmount; /** 周期类型 */ private String periodType; /** 业务期间开始日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date businessStartDate; /** 业务期间结束日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date businessEndDate; /** 账期开始日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date billingStartDate; /** 账期结束日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date billingEndDate; /** 账单生成日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date billGenerateDate; /** 账单发送日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date billSendDate; /** 账单到期日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date billDueDate; /** 状态(draft:草稿;generated:已生成;sent:已发送;pending_review:待审核;partial_paid:部分付款;paid:已付款;cancelled:已取消) */ private String status; /** 审核状态(0:未审核;1:审核通过;2:审核不通过) */ private Integer auditStatus; /** 备注 */ private String remark; /** 来源系统ID(用于审核推送时识别目标TMS系统) */ private Integer sourceSystemId; } /** * 应付费用数据传输对象 */ @Data public static class PayableFeeDto { /** 序号(用于与明细表关联) */ private String serialNumber; /** 关联账单编号 */ private String relatedBillNo; /** 来源系统 */ @NotBlank(message = "来源系统不能为空") private String sourceSystem; /** 业务板块 */ private String businessSector; /** 单据类型 */ private String documentType; /** 单据编号 */ @NotBlank(message = "单据编号不能为空") private String documentNo; /** 是否内部结算 */ private String isInternalSettlement; /** 内部结算单位 */ private String internalSettlementUnit; /** 供应商名称 */ @NotBlank(message = "供应商名称不能为空") private String supplierName; /** 项目名称 */ private String projectName; /** 业务发生时间 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date businessTime; /** 应付确认时间 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date payableConfirmTime; /** 应付金额 */ @NotNull(message = "应付金额不能为空") private BigDecimal payableAmount; private String payableAmountStr; /** 状态 */ private String status; /** 备注 */ private String remark; /** 应付费用明细列表 */ private List feeDetails; } /** * 应付费用明细数据传输对象 */ @Data public static class PayableFeeDetailDto { /** 序号(用于与主表关联) */ private String serialNumber; /** 费用类型 */ @NotBlank(message = "费用类型不能为空") private String feeType; /** 费用名称 */ @NotBlank(message = "费用名称不能为空") private String feeName; /** 计费单位 */ private String billingUnit; /** 计费单价 */ @NotNull(message = "计费单价不能为空") private BigDecimal unitPrice; /** 计费数量 */ @NotNull(message = "计费数量不能为空") private BigDecimal billingQuantity; /** 计费金额 */ @NotNull(message = "计费金额不能为空") private BigDecimal billingAmount; /** 实付金额 */ private BigDecimal actualAmount; /** 币制 */ private String currency; /** 费用登记时间 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date feeRegTime; /** 备注 */ private String remark; } }