package com.artfess.rescue.patrol.model;

import com.artfess.base.entity.BizDelModel;
import com.artfess.rescue.patrol.vo.PlanPatrolVO;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * 巡检计划表：用于生成巡检任务的表
 *
 * @company 阿特菲斯信息技术有限公司
 * @author 系统管理员
 * @since 2024-08-02
 */
@ApiModel(value="BizInspectionPlan对象", description="巡检计划表：用于生成巡检任务的表")
@Data
@TableName("biz_inspection_plan")
public class BizInspectionPlan extends BizDelModel<BizInspectionPlan> {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键_ID")
    @TableId(value = "ID_", type = IdType.ASSIGN_ID)
    private String id;

    @ApiModelProperty(value = "计划单据号")
    @TableField("PLAN_NO_")
    private String planNo;

    @ApiModelProperty(value = "巡检类型，使用数据字典，1：日常，2：专项，2：其它")
    @TableField("PLAN_TYPE_")
    private String planType;

    @ApiModelProperty(value = "班次，使用数据字典，1：白班，2：夜班")
    @TableField("WORKCLASS_")
    private String workclass;

    @ApiModelProperty(value = "巡查类型 使用数据字典，1：往返，2：单程")
    @TableField("INSPECT_TYPE_")
    private String inspectType;

    @NotNull(message = "所属路段不能为空")
    @ApiModelProperty(value = "所属路段(关联路段表ID)")
    @TableField("ROAD_ID_")
    private String roadId;

    @ApiModelProperty(value = "所属路段NAME")
    @TableField("ROAD_NAME_")
    private String roadName;

    @ApiModelProperty(value = "所属路段编码")
    @TableField("ROAD_CODE_")
    private String roadCode;

    @ApiModelProperty(value = "是否发布【字典】（0：否，1：是）")
    @TableField("push_status_")
    private String pushStatus;

    @ApiModelProperty(value = "培训任务定时任务执行类【字典】")
    @TableField("plan_class_")
    private String planClass;

    @NotNull(message = "开始的巡查站不能为空")
    @ApiModelProperty(value = "开始的巡查站ID")
    @TableField("START_PATROL_ID_")
    private String startPatrolId;

    @ApiModelProperty(value = "开始的巡查站NAME")
    @TableField("START_PATROL_NAME_")
    private String startPatrolName;

    @NotNull(message = "结束的巡查站不能为空")
    @ApiModelProperty(value = "结束的巡查站ID")
    @TableField("END_PATROL_ID_")
    private String endPatrolId;

    @ApiModelProperty(value = "结束的巡查站NAME")
    @TableField("END_PATROL_NAME_")
    private String endPatrolName;

    @ApiModelProperty(value = "计划执行的表达式")
    @TableField("plan_interval_")
    private String planInterval;

    @NotNull(message = "巡查队不能为空")
    @ApiModelProperty(value = "巡查队ID（组织机构的ID）")
    @TableField("TEAM_ID_")
    private String teamId;

    @ApiModelProperty(value = "巡查队名称")
    @TableField("TEAM_NAME_")
    private String teamName;

    @ApiModelProperty(value = "任务预计完成天数")
    @TableField("PLAN_DAYS_")
    private Integer planDays;

    @ApiModelProperty(value = "任务频率，【字典】1.天，2.周，3：旬，4：月，5：季，6：年")
    @TableField("FREQUENCY_")
    private String frequency;

    @ApiModelProperty(value = "计划开始日期")
    @TableField("PLAN_START_DATE_")
    private LocalDate planStartDate;

    @ApiModelProperty(value = "计划结束日期")
    @TableField("PLAN_END_DATE_")
    private LocalDate planEndDate;

    @ApiModelProperty(value = "任务运行状态( NONE：停止, NORMAL：运行,PAUSED：暂停)")
    @TableField(exist = false)
    private String taskStatus;

    @ApiModelProperty(value = "巡检计划详情")
    @TableField(exist = false)
    private List<BizInspectionPlanDetails> planDetails;

    @ApiModelProperty(value = "巡检计划详情VO")
    @TableField(exist = false)
    private List<PlanPatrolVO> planPatrolDetails;

}
