package com.artfess.rescue.patrol.model;

import com.artfess.base.annotation.Excel;
import com.artfess.base.entity.BizDelModel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 巡检任务结果表
 *
 * @company 阿特菲斯信息技术有限公司
 * @author 系统管理员
 * @since 2024-08-02
 */
@ApiModel(value="BizInspectionResult对象", description="巡检任务结果表")
@TableName("biz_inspection_result")
@Data
public class BizInspectionResult extends BizDelModel<BizInspectionResult> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键_ID")
    @TableId(value = "ID_", type = IdType.ASSIGN_ID)
    private String id;

    @NotNull(message = "请选择巡检计划")
    @ApiModelProperty(value = "计划Id")
    @TableField("PLAN_ID_")
    private String planId;

    @NotNull(message = "请选择巡检任务")
    @ApiModelProperty(value = "任务ID")
    @TableField("TASK_ID_")
    private String taskId;

    @Excel(name = "巡检类型", column = "C")
    @ApiModelProperty(value = "巡检类型，使用数据字典，1：日常，2：专项，2：其它")
    @TableField("TYPE_")
    private String type;

    @Excel(name = "班次", column = "D")
    @ApiModelProperty(value = "班次，使用数据字典，1：白班，2：夜班")
    @TableField("WORKCLASS_")
    private String workclass;

    @Excel(name = "巡查类型", column = "E")
    @ApiModelProperty(value = "巡查类型 使用数据字典，1：往返，2：单程")
    @TableField("INSPECT_TYPE_")
    private String inspectType;

    @ApiModelProperty(value = "所属路段(关联路段表ID)")
    @TableField("ROAD_ID_")
    private String roadId;

    @Excel(name = "所属路段", column = "F")
    @ApiModelProperty(value = "所属路段NAME")
    @TableField("ROAD_NAME_")
    private String roadName;

    @Excel(name = "所属路段编码", column = "G")
    @ApiModelProperty(value = "所属路段编码，")
    @TableField("ROAD_CODE_")
    private String roadCode;

    @ApiModelProperty(value = "开始的巡查站ID")
    @TableField("START_PATROL_ID_")
    private String startPatrolId;

    @Excel(name = "所属路段编码", column = "H")
    @ApiModelProperty(value = "开始的巡查站NAME")
    @TableField("START_PATROL_NAME_")
    private String startPatrolName;

    @ApiModelProperty(value = "结束的巡查站ID")
    @TableField("END_PATROL_ID_")
    private String endPatrolId;

    @Excel(name = "所属路段编码", column = "I")
    @ApiModelProperty(value = "结束的巡查站NAME")
    @TableField("END_PATROL_NAME_")
    private String endPatrolName;

    @ApiModelProperty(value = "巡查队ID（组织机构的ID）")
    @TableField("TEAM_ID_")
    private String teamId;

    @Excel(name = "巡查开始时间", column = "J")
    @ApiModelProperty(value = "巡查开始时间")
    @TableField("START_TIME_")
    private LocalDateTime startTime;

    @Excel(name = "巡查结束时间", column = "K")
    @ApiModelProperty(value = "巡查结束时间")
    @TableField("END_TIME_")
    private LocalDateTime endTime;

    @ApiModelProperty(value = "巡检人员ID，多个以，分割")
    @TableField("INSPECT_USERS_ID_")
    private String inspectUsersId;

    @Excel(name = "巡检人员姓名", column = "L")
    @ApiModelProperty(value = "巡检人员姓名，多个以，分割")
    @TableField("INSPECT_USERS_NAME_")
    private String inspectUsersName;

    @Excel(name = "巡检天气情况", column = "M")
    @ApiModelProperty(value = "巡检天气情况")
    @TableField("WEATHER_")
    private String weather;

    @Excel(name = "巡检车辆", column = "N")
    @ApiModelProperty(value = "巡检车辆")
    @TableField("CAR_CODE_")
    private String carCode;

    @ApiModelProperty(value = "巡检车辆外观 0.异常 1.正常")
    @TableField("CAR_APPEARANCE_")
    private String carAppearance;

    @ApiModelProperty(value = "巡检车辆引擎是否正常 0.异常 1.正常")
    @TableField("CAR_ENGINE_")
    private String carEngine;

    @ApiModelProperty(value = "巡检车辆消防设备是否正常 0.异常 1.正常")
    @TableField("CAR_FFE_")
    private String carFfe;

    @ApiModelProperty(value = "巡检车辆灯光设备是否正常 0.异常 1.正常")
    @TableField("CAR_LIGHT_")
    private String carLight;

    @ApiModelProperty(value = "巡检车辆操作仪器是否正常 0.异常 1.正常")
    @TableField("CAR_OP_")
    private String carOp;

    @ApiModelProperty(value = "用时，单位 秒（s）")
    @TableField("time_spent_")
    private Long timeSpent;

    @ApiModelProperty(value = "巡检里程（公里）")
    @TableField("mileage_")
    private BigDecimal mileage;

    @ApiModelProperty(value = "上报点（个）")
    @TableField("reporting_point_")
    private Integer reportingPoint;

    @ApiModelProperty(value = "异常点（个）")
    @TableField("outlier_point_")
    private Integer outlierPoint;

    @ApiModelProperty(value = "环节开始时间(后端计算用，前端不管)")
    @TableField("link_start_time_")
    private LocalDateTime linkStartTime;

    @ApiModelProperty(value = "车辆开始里程")
    @TableField(exist = false)
    private BigDecimal startMileage;

    @ApiModelProperty(value = "车辆结束里程")
    @TableField(exist = false)
    private BigDecimal endMileage;


    @ApiModelProperty(value = "巡检结果明细")
    @TableField(exist = false)
    private List<BizInspectionResultDetail> resultDetails;

    @Excel(name = "计划编号", column = "A")
    @ApiModelProperty(value = "计划编号")
    @TableField(exist = false)
    private String planNo;

    @Excel(name = "任务编号", column = "B")
    @ApiModelProperty(value = "任务编号")
    @TableField(exist = false)
    private String taskNo;

    @ApiModelProperty(value = "巡查队名称")
    @TableField(exist = false)
    private String teamName;

    @ApiModelProperty(value = "计划开始时间")
    @TableField(exist = false)
    private LocalDateTime planStartTime;

    @ApiModelProperty(value = "计划结束时间")
    @TableField(exist = false)
    private LocalDateTime planEndTime;

    @ApiModelProperty(value = "巡检状态")
    @TableField(exist = false)
    private String inspectStatus;
}
