package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.print;

import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.cash.BpmOACashRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.payment.BpmOAPaymentRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.salary.BpmOASalaryRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.List;

@Schema(description = "管理后台 - 报销打印数回数据 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BpmOAPrintDataRespVO extends BpmOABaseRespVO {

    @Schema(description = "报销业务数据")
    private BpmOAReimbursementRespVO bpmOAReimbursementRespVO ;

    @Schema(description = "现金支出业务数据")
    private BpmOACashRespVO bpmOACashRespVO;

    @Schema(description = "付款业务数据")
    private BpmOAPaymentRespVO bpmOAPaymentRespVO;

    @Schema(description = "薪资业务数据")
    private BpmOASalaryRespVO bpmOASalaryRespVO;

    @Schema(description = "流程审批节点信息【包含人员签名地址】")
    List<BpmTaskRespVO> processTasks ;

    /**
     * 发起流程的用户
     */
    private User startUser;

    /**
     * 抄送用户信息
     */
    private List<CCUser> ccUsers;

    @Schema(description = "用户信息")
    @Data
    public static class User {

        @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
        private Long id;

        @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
        private String nickname;

        @Schema(description = "部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
        private Long deptId;

        @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "研发部")
        private String deptName;

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

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

    @Schema(description = "抄送用户信息")
    @Data
    public static class CCUser {

        @Schema(description = "抄送用户编号", example = "146,128")
        private Long ccUserId;

        @Schema(description = "抄送用户名称", example = "张三")
        private String ccUserName;

        @Schema(description = "抄送用户部门名称", example = "研发部")
        private String ccDeptName;
    }
}
