package com.fjhx.account.entity.account.dto;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.domain.BaseSelectDto;
import com.ruoyi.common.exception.ServiceException;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 请款表列表查询入参实体
 *
 * @author
 * @since 2023-04-10
 */
@Getter
@Setter
public class AccountRequestFundsSelectDto extends BaseSelectDto {
    /**
     * 请款类型（字典funds_type）
     */
    private String type;

    /**
     * 流程状态（10。审批中  20 驳回  30 审批通过）
     */
    private String status;

    /**
     * 打款状态（字典payment_status）
     */
    private String paymentStatus;

    /**
     * 模糊查询时使用
     */
    private String keyword;

    /**
     * 归属部门ID
     */
    private Long departmentId;

    /**
     * 归属公司ID
     */
    private Long corporationId;

    /**
     * 申请人ID
     */
    private Long createUser;

    /**
     * 币种
     */
    private String currency;

    /**
     * 交易开始金额
     */
    private BigDecimal startAmount;

    /**
     * 交易结束金额
     */
    private BigDecimal endAmount;

    /**
     * 款项说明
     */
    private String paymentRemark;

    /**
     * 核销状态
     */
    private Integer writeOffStatus;

    /**
     * 最小请款金额
     */
    private BigDecimal minAdvanceAmounts;

    /**
     * 最大请款金额
     */
    private BigDecimal maxAdvanceAmounts;

    /**
     * 用款说明
     */
    private String paymentRemarks;

    /**
     * 付款方式
     */
    private String paymentMethod;

    private String beginCreateTime;
    private String endCreateTime;

    public Date getBeginCreateTime() {
        if (ObjectUtil.isEmpty(beginCreateTime)) {
            return null;
        }

        try {
            return DateUtil.beginOfDay(DateUtil.parse(beginCreateTime));
        } catch (Exception e) {
            throw new ServiceException("开始时间格式错误");
        }

    }

    public Date getEndCreateTime() {

        if (ObjectUtil.isEmpty(endCreateTime)) {
            return null;
        }

        try {
            return DateUtil.endOfDay(DateUtil.parse(endCreateTime));
        } catch (Exception e) {
            throw new ServiceException("结束时间格式错误");
        }

    }


    /**
     * 对方账户过滤
     */
    private String oppositeAccountName;

}
