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

import com.bonus.common.core.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
* @description 综合查询--保有设备总量查询
* @author ma_sh
* @date   2024/2/26 14:51
*/
@ApiModel(description = "保有设备总量查询")
@Data
public class MaterialRetainedEquipmentInfo {

    private static final long serialVersionUID = 2227217051604273598L;

    @ApiModelProperty(value = "是否app 0 是，1 否")
    private Integer isApp;

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

    @ApiModelProperty(value = "主键id")
    private Integer id;

    @ApiModelProperty(value = "仓库信息")
    private String whHouseName;

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

    @ApiModelProperty(value = "分公司")
    @Excel(name = "分公司")
    private String impUnitName;

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

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

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

    @ApiModelProperty(value = "班组名称")
    @Excel(name = "班组名称")
    private String teamName;

    @ApiModelProperty(value = "物资名称")
    @Excel(name = "物资名称")
    private String typeName;

    @ApiModelProperty(value = "规格ID")
    private Integer typeId;

    @ApiModelProperty(value = "规格型号")
    @Excel(name = "规格型号")
    private String typeModelName;

    @ApiModelProperty(value = "计量单位")
    @Excel(name = "计量单位")
    private String unit;

    @ApiModelProperty(value = "在库数量")
    private BigDecimal storeNum;

    @ApiModelProperty(value = "在用数量")
    private BigDecimal usNum;

    @ApiModelProperty(value = "数量")
    @Excel(name = "数量")
    private BigDecimal allNum;

    @ApiModelProperty(value = "购置单价")
    private BigDecimal buyPrice;

    @ApiModelProperty(value = "投入总价值")
    //@Excel(name = "总保有量资产(万元)")
    private BigDecimal totalPrice;

    @ApiModelProperty(value = "五年以内成新率")
    private String fiveReplacementRate;

    @ApiModelProperty(value = "五年以内设备数量")
    private BigDecimal fiveReplacementNum;

    @ApiModelProperty(value = "五年至十年成新率")
    private String tenReplacementRate;

    @ApiModelProperty(value = "五年至十年设备数量")
    private BigDecimal tenReplacementNum;

    @ApiModelProperty(value = "十年以上成新率")
    private String tenPlusReplacementRate;

    @ApiModelProperty(value = "十年以上设备数量")
    private BigDecimal tenPlusReplacementNum;

    @ApiModelProperty(value = "管理模式")
    private String manageType;

    @ApiModelProperty(value = "创建者")
    private String createBy;

    @ApiModelProperty(value = "创建时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty(value = "更新者")
    private String updateBy;

    @ApiModelProperty(value = "更新时间 ")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

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

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

    /** 1.机具仓储 2.调试仓储 */
    private String maType;

    private String maTypeName;

    @ApiModelProperty(value = "一级类型id")
    private Integer firstTypeId;

    @ApiModelProperty(value = "二级类型id")
    private Integer secondTypeId;

    @ApiModelProperty(value = "三级类型id")
    private Integer thirdTypeId;

    private List<MaterialRetainedEquipmentInfo> modelList;

    /**
     * 是否伸展（APP）
     */
    private boolean expanded = false;

    /**
     * 检验状态
     */
    private String checkStatus;

    private String maCode;

    /** 本次检验日期 */
    @ApiModelProperty(value = "本次检验日期")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date thisCheckTime;

    /** 下次检验日期 */
    @ApiModelProperty(value = "下次检验日期")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date nextCheckTime;

    /**
     * 状态(0 =正常，1= 3个月检测到期，2= 1个月检测到期，3= 已过期)
     */
    private String status;

    /** 正常设备数量 */
    private long normalNum;

    /** 3个月检测到期设备数量 */
    private long threeMonthNum;

    /** 1个月检测到期设备数量 */
    private long oneMonthNum;

    /** 已过期设备数量 */
    private long expiredNum;

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

    /**
     * 班组长账号
     */
    private String teamLeaderIdCard;

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

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

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

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

    @ApiModelProperty("机具类型（1机具，2安全工器具）")
    private int jiJuType;

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

    private Long maId;

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

    @ApiModelProperty(value = "领料人")
    private String leasePerson;

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

    private Long deptId;

    @ApiModelProperty(value = "项目部名称")
    private String proCenter;

    @ApiModelProperty(value = "物资类型")
    private String materialName;

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

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