package com.hotwj.platform.config.vehicleThreeInspect.domain.bo;

import com.hotwj.platform.config.vehicleThreeInspect.domain.HotVehicleThreeInspect;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;

import java.util.Date;

/**
 * 车辆三检业务对象 hot_vehicle_three_inspect
 *
 * @author shihongwei
 * @date 2025-12-29
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = HotVehicleThreeInspect.class, reverseConvertGenerate = false)
public class HotVehicleThreeInspectBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = {EditGroup.class})
    private Long id;

    /**
     * 公司ID
     */
    @NotNull(message = "公司ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long companyId;

    /**
     * 车辆ID
     */
    @NotNull(message = "车辆ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long vehicleId;

    /**
     * 当前驾驶员ID
     */
    @NotNull(message = "当前驾驶员ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private String driverId;

    /**
     * 当前驾驶员姓名
     */
    private String driverName;

    /**
     * 检查阶段 1=出车 2=行车 3=收车
     */
    @NotNull(message = "检查阶段 1=出车 2=行车 3=收车不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long inspectPhase;

    /**
     * 检查id
     */
    private Long inspectId;

    /**
     * 检查时间
     */
    @NotNull(message = "检查时间不能为空", groups = {AddGroup.class, EditGroup.class})
    private Date inspectTime;

    /**
     * 审核人ID
     */
    @NotNull(message = "审核人ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long auditorId;

    /**
     * 审核人姓名
     */
    private String auditorName;

    /**
     * 检查项目结果JSON
     */
    @NotBlank(message = "检查项目结果JSON不能为空", groups = {AddGroup.class, EditGroup.class})
    private String inspectResultJson;

    /**
     * 检查附件图片url
     */
    private String attachImgUrl;

    /**
     * 检查员签名图片url
     */
    @NotBlank(message = "检查员签名图片url不能为空", groups = {AddGroup.class, EditGroup.class})
    private String inspectorSignImgUrl;

    /**
     * 0=正常, 1=已删除
     */
//    @NotNull(message = "0=正常, 1=已删除不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long isDeleted;

    /**
     * 是否误报
     */
    private Long isFalseReport;

    /**
     * 是否存在隐患 0=否, 1=是
     */
    private Long hasHiddenDanger;

    private Long evaluatorId;

    /**
     * 审核时间
     */
    private Date auditTime;

    /**
     * 审核结论
     */
    private String auditResult;

    /**
     * 审核不通过原因
     */
    private String rejectReason;

    /**
     * 审核人员签名图片url
     */
    private String auditorSignImgUrl;

    /**
     * 流程任务ID
     */
    private String taskId;

    private String ids;
}
