package com.jy.business.payment.model.vo;

import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.jy.system.service.SysDictDataService;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.Map;

/**
 * 请款列表查询返回值实体
 *
 * @author
 * @since 2024-10-18
 */
@Getter
@Setter
@ExcelIgnoreUnannotated
public class PaymentRequestsExportVo {

    private static final SysDictDataService sysDictDataService = SpringUtil.getBean(SysDictDataService.class);
    private static final Map<Integer, String> paymentRequestsTypeMap = sysDictDataService.getMapByCode("payment_requests_type");
    private static final Map<Integer, String> payTypeMap = sysDictDataService.getMapByCode("pay_type");

    /**
     * 归属公司
     */
    @ExcelProperty("归属公司")
    private String corporationName;

    /**
     * 归属部门
     */
    @ExcelProperty("归属部门")
    private String deptName;

    /**
     * 请款类型
     */
    private Integer type;

    /**
     * 请款类型
     */
    @ExcelProperty("请款类型")
    private String typeStr;

    /**
     * 请款人
     */
    @ExcelProperty("请款人")
    private String userName;

    /**
     * 创建时间
     */
    @ExcelProperty("请款时间")
    private Date createTime;

    /**
     * 用款时间
     */
    @ExcelProperty("用款时间")
    private Date useTime;

    /**
     * 用款说明
     */
    @ExcelProperty("用款说明")
    private String useRemark;

    /**
     * 请款金额
     */
    @ExcelProperty("请款金额")
    private String totalAmount;

    /**
     * 付款方式
     */
    private Integer payType;

    /**
     * 付款方式
     */
    @ExcelProperty("付款方式")
    private String payTypeStr;

    /**
     * 付款账户
     */
    @ExcelProperty("付款账户")
    private String capitalAccountName;

    /**
     * 放款状态
     */
    private Integer paymentStatus;

    /**
     * 放款状态
     */
    @ExcelProperty("放款状态")
    private String paymentStatusStr;

    public String getTypeStr() {
        return paymentRequestsTypeMap.get(this.type);
    }

    public String getPayTypeStr() {
        return payTypeMap.get(this.payType);
    }

    public String getPaymentStatusStr() {
        return switch (this.paymentStatus) {
            case 0:
                yield "未打款";
            case 1:
                yield "部分打款";
            case 2:
                yield "已打款";
            default:
                yield "";
        };
    }

}
