package com.bonus.material.settlement.domain;

import com.bonus.common.biz.domain.BmFileInfo;
import com.bonus.common.core.annotation.Excel;
import com.bonus.common.core.web.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.apache.poi.hpsf.Decimal;

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

/**
 * 结算协议申请对象 slt_agreement_reduce
 *
 * @author csyue
 * @date 2025-10-16
 */


@Data
@ToString
public class SltAgreementReduce extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

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

    private List<Long> agreementIds;

    /** 结算单号（例如：JM202402-1） */
    @Excel(name = "减免单号", readConverterExp = "例=如：JM202402-1")
    private String code;

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

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

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

    /** 结算总费用 */
    @Excel(name = "结算总费用")
    @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 = "租赁单价")
    private BigDecimal leasePrice;

    @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 leaseMoney;

    @ApiModelProperty(value = "累计减免费用")
    private BigDecimal leaseMoneyAll;


    @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;

    private String unitName;

    private Integer proId;
    private String projectName;

    @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;
}
