package cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger;

import cn.iocoder.yudao.module.common.dal.dataobject.mold.MoldDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import lombok.*;

import java.time.*;
import java.util.*;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;

/**
 * 设备类型 DO
 *
 * @author 内蒙必硕
 */
@TableName("mes_device_ledger")
@KeySequence("mes_device_ledger_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DeviceLedgerDO extends BaseDO {

    /**
     * id
     */
    @TableId
    private Long id;
    /**
     * 设备编号
     */
    private String deviceCode;
    /**
     * 设备名称
     */
    private String deviceName;
    /**
     * 设备状态 (0-正常, 1-停用, 2-维修, 3-报废)
     */
    private Integer deviceStatus;
    /**
     * 设备品牌
     */
    private String deviceBrand;
    /**
     * 设备型号
     */
    private String deviceModel;
    /**
     * 设备规格
     */
    private String deviceSpec;
    /**
     * 设备类型
     */
    private Long deviceType;
    /**
     * 供应商
     */
    private String supplier;
    /**
     * 所属产线
     */
    private String workshop;

    /**
     * 所属产线名称
     */
    @TableField(exist = false)
    private String workshopName;
    /**
     * 所属系统组织
     */
    private String systemOrg;
    /**
     * 设备位置
     */
    private String deviceLocation;
    /**
     * 设备负责人
     */
    private String deviceManager;
    /**
     * 设备生产日期
     */
    private LocalDate productionDate;
    /**
     * 设备入厂日期
     */
    private LocalDate  factoryEntryDate;
    /**
     * 设备备注
     */
    private String deviceRemark;
    /**
     * 备注
     */
    private String remark;
    /**
     * 排序
     */
    private Integer sort;

    /**
     * 附件地址
     */
    private String fileUrl;

    /**
     * 关键件id
     */
    private String componentId;

    /**
     * 类型名称
     */
    @TableField(exist = false)
    private String typeName;

    /**
     * 点检列表
     */
    @TableField(exist = false)
    private List<TicketResultsDO> inspectionList;

    /**
     * 保养列表
     */
    @TableField(exist = false)
    private List<TicketResultsDO> maintainList;

    /**
     * 维修列表
     */
    @TableField(exist = false)
    private Map<String,List<DvRepairLineDO>> repairList;

    /**
     * 关键件列表
     */
    @TableField(exist = false)
    private List<CriticalComponentDO> componentList;

    /**
     * 备件id
     */
    private String beijianId;

    /**
     * 备件列表
     */
    @TableField(exist = false)
    private List<ErpProductDO> beijianList;

    /**
     * 模具id
     */
    private String moldId;

    /**
     * 模具列表
     */
    @TableField(exist = false)
    private List<MoldDO> moldList;

    /**
     * 关联采集设备
     */
    private Long dvId;

}