package com.yh.saas.plugin.yiliangyiyun.entity;

import java.util.Date;
import java.io.Serializable;
import java.util.List;


import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yh.saas.common.support.entity.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 记录费用表信息
 * </p>
 *
 * @author Gdc
 * @since 2022-05-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("expense_info")
public class ExpenseInfo extends BaseModel<ExpenseInfo> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.UUID)
    private String id;
    /**
     * 入库单id
     */
    private String warehousingOrderId;
    /**
     * 运费结算id
     */
    private String tranSettlementId;
    /**
     * 公司id
     */
    private String compId;
    /**
     * 费用编号
     */
    private String costNo;
    /**
     * 合同ID
     */
    private String contractId;
    /**
     * 合同号
     */
    private String contractNo;
    /**
     * 仓库id
     */
    private String warehouseId;
    /**
     * 仓库名称
     */
    private String warehouseName;
    /**
     * 费用金额
     */
    private Double amountMoney;
    /**
     * 费用名称
     */
    private String expenseName;
    /**
     * 费用分配方式(1按重量自动分配3指定金额分配)
     */
    private String costAllocationMethod;
    /**
     * 费用分配方式key
     */
    private String allocationMethodKey;
    /**
     * 分配类型(1全部分配3部分分配5暂不分配)
     */
    private String allocationType;
    /**
     * 分配类型key
     */
    private String allocationTypeKey;
    /**
     * 分配状态
     */
    private String distributionStatus;
    /**
     * 分配状态标识
     */
    private String distributionStatusFlag;
    /**
     * 类型(1收入2支出)
     */
    private String expensesType;
    /**
     * 入库单日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date warehouseOrderDate;
    /**
     * 费用用途(1合同费用3库点费用5经营性费用)
     */
    private String expensesPurpose;
    /**
     * 费用类型(1粮款3非粮款5保证金)
     */
    private String costType;
    /**
     * 用途
     */
    private String purpose;
    /**
     * 未分配金额(元)
     */
    private Double unallocatedAmount;
    /**
     * 可分配金额(元)
     */
    private Double allocatedAmount;
    /**
     * 年份
     */
    private String expenseYear;
    /**
     * 附件地址
     */
    private String addressUrl;
    /**
     * 驳回原因
     */
    private String rejectionReason;
    /**
     * 原因
     */
    private String reason;
    /**
     * 备注
     */
    private String remark;
    /**
     * 发起日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date expenseDate;
    /**
     * 经办人
     */
    private String agent;
    /**
     * 状态
     */
    private String status;
    /**
     * 状态标识
     */
    private String statusFlag;
    /**
     * 审核状态
     */
    private String approveStatus;
    /**
     * 审核状态英文
     */
    private String approveStatusEn;
    /**
     * 合计分配
     */
    @TableField(exist = false)
    private Double totalDistribution;
    /**
     * 工作流ID
     */
    private String workflowId;
    @TableField(exist = false)
    private String taskId;
    /**
     *查询类型
     */
    @TableField(exist = false)
    private String searchType;
    /**
     * 模糊查询
     */
    @TableField(exist = false)
    private String searchKeyWord;
    /**
     * 操作标识
     */
    @TableField(exist = false)
    private String flag;
    /**
     * 收入
     */
    @TableField(exist = false)
    private String income;
    /**
     * 支出
     */
    @TableField(exist = false)
    private String expenditure;
    /**
     * 月份
     */
    @TableField(exist = false)
    private String month;
    /**
     * 合同费用收入
     */
    @TableField(exist = false)
    private String contractIn;
    /**
     * 合同费用支出
     */
    @TableField(exist = false)
    private String contractOut;
    /**
     * 经营性收入
     */
    @TableField(exist = false)
    private String managementIn;
    /**
     * 经营性支出
     */
    @TableField(exist = false)
    private String managementOut;
    /**
     * 库点费用收入
     */
    @TableField(exist = false)
    private String warehouseIn;
    /**
     * 库点费用支出
     */
    @TableField(exist = false)
    private String warehouseOut;
    /**
     * 贸易利润
     */
    @TableField(exist = false)
    private String profit;
    /**
     * 净利润
     */
    @TableField(exist = false)
    private String netProfit;
    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date startDate;
    /**
     * 结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date endDate;
    /**
     * 分配详情
     */
    @TableField(exist = false)
    private List<ExpenseAllocationInfo> expenseAllocationInfoList;
    /**
     * 分配详情(驳回)
     */
    @TableField(exist = false)
    private List<ExpenseAllocationInfo> expenseAllocationInfoListBH;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
