package com.bonus.material.clz.domain.lease;

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.EqualsAndHashCode;
import lombok.ToString;

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

/**
 * @Author ma_sh
 * @create 2025/6/24 14:38
 */
@EqualsAndHashCode(callSuper = false)
@Data
@ToString
public class MaterialLeaseApplyInfo extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "是否出库 0 否，1 是")
    private Integer isOut;

    private Long id;

    @ApiModelProperty(value = "登录用户id")
    private Long userId;

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

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

    @Excel(name = "分公司",sort = 3)
    @ApiModelProperty(value = "实施单位" )
    private String impUnitName;

    @ApiModelProperty(value = "合同主体")
    private String contractPart;

    @ApiModelProperty(value = "领料单位")
    private String leaseUnit;

    @ApiModelProperty(value = "发料单位")
    private String sendUnit;

    @ApiModelProperty(value = "领料id")
    private Integer leaseUnitId;

    @ApiModelProperty(value = "班组id")
    private String teamId;

    @ApiModelProperty(value = "班组名称")
    @Excel(name = "领料班组",sort = 6)
    private String teamName;

    @Excel(name = "租赁工程",sort = 7)
    @ApiModelProperty(value = "租赁工程")
    private String leaseProject;

    @ApiModelProperty(value = "i8工程id")
    private String projectId;

    @ApiModelProperty(value = "工程名称")
    @Excel(name = "租赁工程")
    private String projectName;

    @ApiModelProperty(value = "领料工程id")
    private Long leaseProjectId;

    @ApiModelProperty(value = "领料人签名URL")
    private String leaseSignUrl;

    @ApiModelProperty(value = "领料人签名类型")
    private Byte leaseSignType;

    @ApiModelProperty(value = "领料物资名称汇总")
    @Excel(name = "领料工器具类型",sort=8)
    private String maTypeNames;

    @ApiModelProperty(value = "协议号")
    private String agreementCode;

    @ApiModelProperty(value = "领料单号")
    private String code;

    @ApiModelProperty(value = "任务ID")
    private Long taskId;

    @Excel(name = "班组长",sort=9)
    @ApiModelProperty(value = "领料人")
    private String leasePerson;

    @ApiModelProperty(value = "联系方式")
    private String phone;

    @ApiModelProperty(value = "1：1级审批，2：2级审批")
    private String type;

    @ApiModelProperty(value = "公司审批人")
    private Long companyAuditBy;

    @ApiModelProperty(value = "公司审批时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date companyAuditTime;

    @ApiModelProperty(value = "公司审批备注")
    private String companyAuditRemark;

    @ApiModelProperty(value = "分管审批人")
    private Long deptAuditBy;

    @ApiModelProperty(value = "分管审批时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date deptAuditTime;

    @ApiModelProperty(value = "分管审批备注")
    private String deptAuditRemark;

    @ApiModelProperty(value = "机具分公司审批")
    private Long directAuditBy;

    @ApiModelProperty(value = "机具分公司审批时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date directAuditTime;

    @ApiModelProperty(value = "机具分公司审批备注")
    private String directAuditRemark;

    @ApiModelProperty(value = "数据所属组织")
    private Long companyId;

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

    @ApiModelProperty(value = "0工程1长期")
    private String leaseType;

    @ApiModelProperty(value = "预领料时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date estimateLeaseTime;

    @ApiModelProperty(value = "费用承担方(01项目03分包)")
    private String costBearingParty;

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

    @ApiModelProperty(value = "任务类型(定义数据字典)")
    private Integer taskType;

    @ApiModelProperty(value = "任务状态(定义数据字典)")
    private Integer taskStatus;

    @Excel(name = "状态")
    @ApiModelProperty(value = "任务状态(定义数据字典)")
    private String taskStatusName;

    @ApiModelProperty(value = "任务当月序号 例如:1 插入及查询时请携带任务类型")
    private Integer monthOrder;

    @ApiModelProperty(value = "领料人手机号")
    private String leasePhone;

    @ApiModelProperty(value = "往来单位id")
    private Long unitId;

    @ApiModelProperty(value = "往来单位")
    private String unitName;

    @ApiModelProperty(value = "领料方式（0 材料领料，1 工器具领料，2 系统推送）")
    private String leaseStyle;

    @ApiModelProperty(value = "预领料合计数")
    private BigDecimal preCountNum;

    @ApiModelProperty(value = "已出库数量")
    private BigDecimal alNum;

    @ApiModelProperty(value = "待领数量")
    private BigDecimal waitCountNum;

    @ApiModelProperty(value = "开始时间")
    private String startTime;

    @ApiModelProperty(value = "结束时间")
    private String endTime;

    @ApiModelProperty(value = "关键字")
    private String keyWord;

    @ApiModelProperty(value = "备注")
    @Excel(name = "备注")
    private String remark;

    @ApiModelProperty(value = "任务状态列表")
    private List<Integer> statusList;

    @ApiModelProperty(value = "审批人人签名URL")
    private String directAuditSignUrl;

    @ApiModelProperty(value = "分包商单位委托书")
    List<BmFileInfo> bmFileInfos;

    @ApiModelProperty(value = "标准配置id")
    private Long configId;

    @ApiModelProperty(value = "是否为领用申请")
    private Integer isLease;

    @ApiModelProperty(value = "采购申请编号")
    private String applyCode;

    private Integer isApp;

    @ApiModelProperty(value = "供应时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date supplierTime;

    @ApiModelProperty(value = "供应地点")
    private String supplierPlace;

    @ApiModelProperty(value = "公司名称")
    private String companyName;

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

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

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

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

    @ApiModelProperty(value = "设备编码")
    private String maCode;

    @ApiModelProperty(value = "设备id")
    private Long maId;

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

    @ApiModelProperty(value = "发布批次")
    private String publishTask;

    @ApiModelProperty(value = "领料时间")
    private String leaseTime;

    @ApiModelProperty(value = "类型编号")
    private String typeCode;

    @ApiModelProperty(value = "规格编号")
    private String modelCode;

    @ApiModelProperty(value = "计量单位")
    private String unitNames;

    @ApiModelProperty(value = "是否电子签名 0 是，1 否")
    private Integer isElectronicSign;

    @ApiModelProperty(value = "身份证号码")
    private String idCard;

    @ApiModelProperty(value = "类型id")
    private String typeId;

    @ApiModelProperty(value="工程id")
    private Long proId;

    @ApiModelProperty(value = "协议id集合")
    private List<Long> agreementIdList;

    @ApiModelProperty(value = "i8工程id")
    private String externalId;

    @ApiModelProperty(value = "项目部id")
    private Long departId;

    @ApiModelProperty(value = "实施单位id")
    private String impUnit;

    /**
     * 班组长姓名
     */
    private String relName;

    /**
     * 班组长手机号
     */
    private String relPhone;

    /**
     * 班组长身份证号
     */
    private String teamLeaderIdCard;

    /**
     * i8工程id集合
     */
    private List<String> projectIdList;

    /**
     * 状态
     */
    private String status;

    @ApiModelProperty(value = "分包单位")
    @Excel(name = "分包单位",sort = 5)
    private String subUnitName;

    @ApiModelProperty(value = "项目部")
    @Excel(name = "项目部",sort = 4)
    private String departName;

    @ApiModelProperty(value = "工程名称")
    @Excel(name = "工程名称")
    private String proName;
}
