package com.maintain.business.domain.vo;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.maintain.common.annotation.ExcelDictFormat;
import com.maintain.common.convert.ExcelDictConvert;
import com.maintain.common.core.validate.AddGroup;
import com.maintain.common.core.validate.EditGroup;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Date;

import java.io.Serializable;
import java.util.List;

/**
 * 报修单-维修项目\检验项目视图对象 erp_repair_form_peoject
 *
 * @author liushuai
 * @date 2025-04-01
 */
@Data
@ExcelIgnoreUnannotated
public class ErpRepairFormProjectVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 报修单ID
     */
    private Long repairFormId;

    /**
     * 维修项目ID
     */
    private Long maintainId;

    /**
     * 维修类型ID
     */
    private Long typeId;

    /**
     * 维修类型名称
     */
    @ExcelProperty(value = "维修类型名称")
    private String typeName;

    /**
     * 维修项目编码
     */
    @ExcelProperty(value = "维修项目编码")
    private String projectCode;

    /**
     * 维修项目名称
     */
    @ExcelProperty(value = "维修项目名称")
    private String projectName;

    /**
     * 维修标准工时
     */
    @ExcelProperty(value = "维修标准工时")
    private BigDecimal standardManHour;

    /**
     * 维修标准单价
     */
    @ExcelProperty(value = "维修标准单价")
    private BigDecimal standardPrice;

    /**
     * 保质期（天）
     */
    @ExcelProperty(value = "保质期（天）")
    private Integer warrantyPeriod;

    /**
     * 技术规范
     */
    @ExcelProperty(value = "技术规范")
    private String technicalSpecification;

    /**
     * 实际维修总工时
     */
    @ExcelProperty(value = "实际维修总工时")
    private BigDecimal actualTime;

    /**
     * 是否已派工（0否 1是 默认0）
     */
    @ExcelProperty(value = "是否已派工", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=否,1=是")
    private Integer isDispatch;

    /**
     * 检验人员ID
     */
    private Long examineUserId;

    /**
     * 检验人员编号
     */
    @ExcelProperty(value = "检验人员编号")
    private String examineUserCode;

    /**
     * 检验人员名称
     */
    @ExcelProperty(value = "检验人员名称")
    private String examineUserName;

    /**
     * 检验时间
     */
    @ExcelProperty(value = "检验时间")
    private Date examineTime;

    /**
     * 派工列表
     */
    private List<ErpRepairFormProjectDispatchVo> projectDispatchVoList;

}
