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

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 设备台账新增/修改 Request VO")
@Data
public class IotDeviceSaveReqVO {

    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6797")
    private Long id;

    @Schema(description = "资产编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "资产编码不能为空")
    private String deviceCode;

    @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @NotEmpty(message = "设备名称不能为空")
    private String deviceName;

    @Schema(description = "品牌", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "品牌不能为空")
    private Long brand;

    @Schema(description = "规格型号")
    private String model;
    @Schema(description = "所在部门", requiredMode = Schema.RequiredMode.REQUIRED, example = "8581")
    @NotNull(message = "所在部门不能为空")
    private Long deptId;

    @Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotEmpty(message = "设备状态不能为空")
    private String deviceStatus;

    @Schema(description = "资产性质", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "资产性质不能为空")
    private String assetProperty;

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

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

    @Schema(description = "制造商id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1695")
    @NotNull(message = "制造商id不能为空")
    private Long manufacturerId;

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

    @Schema(description = "生产日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "生产日期不能为空")
    private LocalDateTime manDate;

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

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

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

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

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

    @Schema(description = "折旧开始日期")
    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 = "设备分类BOM同步状态 1已同步 0未同步")
    private Integer bomSyncStatus;

    @Schema(description = "车辆id")
    private Long carId;

    @Schema(description = "启用日期")
    private LocalDateTime enableDate;

    @Schema(description = "油服编码分类")
    private String yfClass;
    @Schema(description = "油服设备编码")
    private String yfDeviceCode;
    private String assetOwnership;
    private String useProject;
    private String carNo;
    private String address;
    private String deviceNo;
    @Schema(description = "设备等级")
    private String deviceGrade;
    @Schema(description = "每月折旧金额")
    private Double monthAmount;
    @Schema(description = "总折旧月份")
    private Integer totalMonth;
    @Schema(description = "币种")
    private String currency;
}
