package com.bonus.material.settlement.domain;

import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.core.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;

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

/** 减免记录查询
 * @Author ma_sh
 * @create 2025/6/17 11:04
 */
@Data
@ToString
public class SltAgreementReduceRecord {
    /** $column.columnComment */
    private Long id;

    /** 协议id */
    @ApiModelProperty(value = "协议id")
    private Long agreementId;

    /** 结算单号（例如：JM202402-1） */
    private String code;

    /** 创建人 */
    @ApiModelProperty(value = "创建人")
    private String creator;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    @Excel(name = "申请时间", sort = 1, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 30)
    private Date createTime;

    @Excel(name = "申请人", sort = 2)
    private String createBy;

    private String updateBy;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @Excel(name = "租赁单位", sort = 3)
    private String unitName;

    private Integer proId;

    @Excel(name = "租赁工程", sort = 4)
    private String projectName;

    @ApiModelProperty(value = "租赁单价")
    @Excel(name = "租赁费用（元）", sort = 5)
    private BigDecimal leasePrice;

    @ApiModelProperty(value = "租赁金额")
    @Excel(name = "本次减免费用（元）", sort = 6)
    private BigDecimal leaseMoney;

    @ApiModelProperty(value = "累计减免费用")
    @Excel(name = "累计减免费用（元）", sort = 7)
    private BigDecimal leaseMoneyAll;

    /** 状态0未结算1待审核2审核通过3审核驳回 */
    @Excel(name = "状态", sort = 8, readConverterExp = "0=待审核,1=审核中,2=已审核,3=已驳回")
    @ApiModelProperty(value = "状态0未结算1待审核2审核通过3审核驳回")
    private String status;

    /** 数据所属 */
    @ApiModelProperty(value = "数据所属")
    private Long companyId;

    /** 结算总费用 */
    @ApiModelProperty(value = "结算总费用")
    private BigDecimal cost;

    @ApiModelProperty(value = "原因")
    private String remark;

    @ApiModelProperty(value = "机具规格id")
    private String typeId;

    @ApiModelProperty(value = "机具名称")
    private String maName;

    @ApiModelProperty(value = "机具规格")
    private String maModel;

    @ApiModelProperty(value = "机具单位")
    private String maUnit;

    @ApiModelProperty(value = "租赁数量")
    private BigDecimal num;



    @ApiModelProperty(value = "租赁开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTime;

    @ApiModelProperty(value = "租赁结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endTime;

    @ApiModelProperty(value = "租赁天数")
    private Long days;


    @ApiModelProperty(value = "减免数量")
    private BigDecimal reduceNum;

    @ApiModelProperty(value = "减免租赁单价")
    private BigDecimal reduceLeasePrice;

    @ApiModelProperty(value = "减免开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date reduceStartTime;

    @ApiModelProperty(value = "减免结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date reduceEndTime;

    @ApiModelProperty(value = "减免租赁费用")
    private BigDecimal reduceLeaseMoney;

    private Integer taskId;

    @ApiModelProperty(value = "减免天数")
    private Long reduceDays;

    @ApiModelProperty(value = "附件列表")
    private List<BmFileInfo> bmFileInfos;

    private List<SltAgreementReduce> detailList;

    private String typeName;

    private String modeName;
    private String modelName;

    private Integer unitId;

    @ApiModelProperty(value = "本流程节点id")
    private Integer nodeId;

    @ApiModelProperty(value = "下个流程节点id")
    private Integer nextNodeId;

    @ApiModelProperty(value = "流程配置值")
    private String configValue;

    @ApiModelProperty(value = "所属记录")
    private Integer recordId;

    @ApiModelProperty(value = "流程节点签名方式 0:或签  1:会签")
    private Integer nodeSignType;
}
