package cn.iocoder.yudao.module.bpm.controller.admin.financialpayment.vo;

import cn.iocoder.yudao.module.bpm.controller.admin.financialpaymentitem.vo.FinancialPaymentItemRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 财务支付管理 Response VO")
@Data
public class FinancialPaymentRespVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "81")
    private Long id;

    @Schema(description = "申请人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13599")
    private Long userId;

    @Schema(description = "申请人的用户名称")
    private String nickname;

    @Schema(description = "部门名称")
    private String deptName;

    @Schema(description = "流程实例id", example = "8972")
    private String processInstanceId;

    @Schema(description = "申请费用原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "不好")
    private String reason;

    @Schema(description = "流程类型 1现金支出 2备用金 3采购付款 4报销", example = "2")
    private Integer type;

    @Schema(description = "支付状态 0待支付 1分批支付中 2已支付 3拒绝", example = "1")
    private Integer status;

    @Schema(description = "领取的财务用户id", example = "16852")
    private Long receiveUserId;

    @Schema(description = "领取的财务用户名称", example = "16852")
    private String receiveUserNickName;

    @Schema(description = "应该支付金额")
    private BigDecimal amountPayable;

    @Schema(description = "实际支付")
    private BigDecimal actualPayment;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime createTime;

    @Schema(description = "子列表")
    private List<FinancialPaymentItemRespVO> items;

    @Schema(description = "流程开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime beginTime;

    @Schema(description = "流程结束时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDateTime endTime;

    @Schema(description = "流程实例名称")
    private String processInstanceName;

    @Schema(description = "收款人名称")
    private String recipientName;

    @Schema(description = "付款公司编号")
    private Long companyId;

    @Schema(description = "付款公司工厂编号")
    private Long companyFactoryId;

    @Schema(description = "付款公司名称")
    private String companyName;
}
