package cn.iocoder.yudao.module.pms.controller.admin.vo;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.List;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 设备台账分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class IotDevicePageReqVO extends PageParam {

    @Schema(description = "资产编码")
    private String deviceCode;

    @Schema(description = "设备名称", example = "芋艿")
    private String deviceName;

    @Schema(description = "品牌")
    private Long brand;

    @Schema(description = "规格型号")
    private String model;

    @Schema(description = "所在部门", example = "8581")
    private Long deptId;

    @Schema(description = "设备状态", example = "2")
    private String deviceStatus;

    @Schema(description = "资产性质")
    private String assetProperty;

    @Schema(description = "图片", example = "https://www.iocoder.cn")
    private String picUrl;

    @Schema(description = "备注", example = "你说的对")
    private String remark;

    @Schema(description = "制造商id", example = "1695")
    private Long manufacturerId;

    @Schema(description = "供应商id", example = "18330")
    private Long supplierId;

    @Schema(description = "生产日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime manDate;

    @Schema(description = "铭牌信息")
    private String nameplate;

    @Schema(description = "质保到期")
    private LocalDateTime expires;

    @Schema(description = "采购/租赁价格", example = "14766")
    private Integer plPrice;

    @Schema(description = "采购/租赁日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime plDate;

    @Schema(description = "折旧年限")
    private Integer plYear;

    @Schema(description = "折旧开始日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] plStartDate;

    @Schema(description = "已提折旧月数")
    private Integer plMonthed;

    @Schema(description = "已提折旧金额")
    private Double plAmounted;

    @Schema(description = "剩余金额")
    private Double remainAmount;

    @Schema(description = "资料分类id", example = "5597")
    private Long infoId;

    @Schema(description = "资料类型", example = "1")
    private String infoType;

    @Schema(description = "资料名称", example = "王五")
    private String infoName;

    @Schema(description = "资料备注", example = "你说的对")
    private String infoRemark;

    @Schema(description = "资料附件", example = "https://www.iocoder.cn")
    private String infoUrl;

    @Schema(description = "动态模板信息")
    private String templateJson;

    @Schema(description = "资产类别")
    private Long assetClass;
    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

    /**
     * bom相关信息
     */
    @Schema(description = "BOM名称", example = "李四")
    private String name;

    @Schema(description = "BOM编码")
    private String code;

    @Schema(description = "设备分类BOM同步状态 1已同步 0未同步")
    private Integer bomSyncStatus;

    @Schema(description = "查询相关的BOM分类标识 w维修 b保养")
    private String bomFlag;

    /**
     * 自定义请求参数
     */
    @Schema(description = "设备id集合")
    private List<Long> deviceIds;

    @Schema(description = "是否设置过设备责任人/调整过状态/调拨 Y设置过 N未设置 A全部")
    private String setFlag;

    @Schema(description = "用户昵称 模糊搜索")
    private String nickname;

    @Schema(description = "车辆id")
    private Long carId;
    @Schema(description = "是否在线")
    private Integer ifInline;

    private String brandName;

    @Schema(description = "部门id集合 项目-任务 根据选择的部门筛选设备")
    private List<Long> deptIds;

    @Schema(description = "油服设备编码")
    private String yfDeviceCode;

    @Schema(description = "设备类别 集合")
    private List<Long> assetClasses;

    private String exportFields;
    private String deviceNo;
    private String carNo;
    private String chargeName;
    private String useProject;
    private String assetOwnership;
    private String address;
    @Schema(description = "设备等级")
    private String deviceGrade;
    @Schema(description = "来源,区分连油或者注气之类的")
    private String source;
    private String yfClass;
}
