package cn.iocoder.yudao.module.expense.controller.admin.expenseinfo.vo;

import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.module.expense.dal.dataobject.expenseinfo.ExpenseInfoObjDO;
import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

@Schema(description = "管理后台 - 报销信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ExpenseInfoRespVO {

    @Schema(description = "表单主键")
    // @ExcelProperty("表单主键")
    private Long id;

    @Schema(description = "uuid")
    // @ExcelProperty("uuid")
    private String expenseUuid;

    @Schema(description = "报销申请人id")
    // @ExcelProperty("报销申请人id")
    private Long employeeId;

    @Schema(description = "报销申请人uuid")
    // @ExcelProperty("报销申请人uuid")
    private String employeeUuid;

    @Schema(description = "报销申请员工姓名")
    @ExcelProperty("报销人")
    private String employeeName;

    @Schema(description = "报销申请员工手机号")
    @ExcelProperty("手机号")
    private String employeePhone;

    @Schema(description = "用户账号id")
    // @ExcelProperty("用户账号id")
    private Long userId;

    @Schema(description = "用户账号uuid")
    // @ExcelProperty("用户账号uuid")
    private String userUuid;

    @Schema(description = "部门id")
    // @ExcelProperty("部门id")
    private Long deptId;

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

    @Schema(description = "职位id")
    // @ExcelProperty("职位id")
    private Long postId;

    @Schema(description = "员工职位")
    @ExcelProperty("职位")
    private String position;

    @Schema(description = "报销类型主键id")
    // @ExcelProperty("报销类型主键id")
    private Long expenseTypeId;

    @Schema(description = "报销类型名称")
    @ExcelProperty("报销类型")
    private String expenseTypeName;

    @Schema(description = "费用所属区间")
    @ExcelProperty("费用所属区间")
    private String expenseMonth;

    @Schema(description = "总预算金额，单位（元）")
    @ExcelProperty("总预算金额，（元）")
    private BigDecimal totalMoney;

    @Schema(description = "备注")
    // @ExcelProperty("备注")
    private String remarks;

    @Schema(description = "状态（0已完成、1已作废、2已生效）")
    // @ExcelProperty("状态（0已完成、1已作废、2已生效）")
    private String status;

    @Schema(description = "状态描述（0已完成、1已作废、2已生效）")
    // @ExcelProperty("状态描述（0已完成、1已作废、2已生效）")
    private String statusDesc;

    @Schema(description = "数据来源，0流程添加、1手动添加")
    // @ExcelProperty("数据来源，0流程添加、1手动添加")
    private String infoSource;

    @Schema(description = "数据来源描述，0流程添加、1手动添加")
    @ExcelProperty("数据来源")
    private String infoSourceDesc;

    @Schema(description = "创建员工id")
    // @ExcelProperty("创建员工id")
    private Long createEmployeeId;

    @Schema(description = "创建员工姓名")
    @ExcelProperty("创建人")
    private String createEmployeeName;

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    @DateTimeFormat(pattern = DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime createTime;

    @Schema(description = "附件列表")
    private List<FileDTO> fileList;

    @Schema(description = "附件id列表")
    private List<Long> fileIdList;

    @Schema(description = "报销信息子列表")
    private List<ExpenseInfoObjDO> expenseInfoObjs;


}