package com.bonus.common.biz.domain.lease;

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

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

/**
 * 领料任务对象 lease_apply_info
 *
 * @author xsheng
 * @date 2024-10-16
 */

@EqualsAndHashCode(callSuper = false)
@Data
@ToString
public class LeaseApplyInfo extends BaseEntity{

    private static final long serialVersionUID = 1L;

    /** ID */
    private Long id;

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

    @ApiModelProperty(value = "登录用户部门id")
    private Long deptId;

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

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

    @ApiModelProperty(value = "实施单位")
    @Excel(name = "实施单位")
    private String impUnitName;

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

    @ApiModelProperty(value = "领料单位")
    @Excel(name = "租赁单位")
    private String leaseUnit;

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

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

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

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

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

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

    /**
     * 领料物资名称汇总
     */
    @ApiModelProperty(value = "领料物资名称汇总")
    private String maTypeNames;

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

    /** 任务编号: 领料单号 */
    @ApiModelProperty(value = "领料单号")
    @Excel(name = "租赁申请单号")
    private String code;

    /** 任务编号: 业务联系单号 */
    @ApiModelProperty(value = "业务联系单号")
    @Excel(name = "业务联系单号")
    private String businessCode;

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

    /** 领料人 */
    @Excel(name = "领料人")
    @ApiModelProperty(value = "领料人")
    private String leasePerson;

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

    /** 1：1级审批，2：2级审批 */
    @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;

    /** 1机具分公司审核通过，2调试分公司审核通过3机具分公司审核驳回4调试分公司审核驳回5出库进行中5出库完成 */
    private String status;

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

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

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

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

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

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

    @ApiModelProperty(value = "任务所属分公司id")
    private Long taskDeptId;

    /** 任务状态(定义数据字典) */
    @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 = "工程id")
    private Long projectId;

    @ApiModelProperty(value = "材料员确认账号")
    private String materialMan;

    @ApiModelProperty(value = "材料员确认时间")
    private String confirmTime;

    @ApiModelProperty(value = "是否确认 0不需要确认，1未确认 2已确认")
    private Integer isConfirm;

    @ApiModelProperty(value = "材料员确认备注")
    private String confirmRemark;

    /**
     * 工程名称
     */
    @ApiModelProperty(value = "工程名称")
    private String projectName;

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

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

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


    /**
     * 标准配置id
     */
    @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 = "有无电子签名 0 否，1 是")
    private Integer hasSign;

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

    @ApiModelProperty(value = "签字人")
    private String signPerson;

    @ApiModelProperty(value = "领料出库id集合")
    private String ids;

    private Long leaseSignId;

    private List<Long> typeIdList;

    @ApiModelProperty(value = "一级类型id结果集")
    private String firstId;

    @ApiModelProperty(value = "发布时间")
    private String releaseTime;

    @ApiModelProperty(value = "查询类型")
    private String queryType;

    @ApiModelProperty(value = "发布人id")
    private Long publisher;

    @ApiModelProperty(value = "账号")
    private String cno;

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

    private Long parentId;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private String leaseTime;
}
