package com.hdkj.lt.core.bizms.modle.po.fault;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hdkj.lt.core.bizms.modle.dto.FhzgFaultDistMappingFileDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

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

/**
 * <p>
 * 故障停电转供信息表
 * </p>
 *
 * @author luorui
 * @since 2025-05-29
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("fhzg_fault_power_cut")
public class FaultPowerCut implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主建ID
     */
    @TableId("id")
    private Long id;

    /**
     * 故障停电编码
     */
    @TableField("fault_no")
    private String faultNo;

    /**
     * 故障停电开始时间
     */
    @TableField("fault_start_time")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime faultStartTime;

    /**
     * 故障停电结束时间
     */
    @TableField("fault_end_time")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime faultEndTime;

    /**
     * 故障类型
     */
    @TableField("fault_type")
    private Integer faultType;

    /**
     * 故障停电来源
     */
    @TableField("fault_source")
    private String faultSource;

    /**
     * 馈线ID
     */
    @TableField("line_id")
    private String lineId;

    /**
     * 馈线名称
     */
    @TableField("line_name")
    private String lineName;

    /**
     * 停电简述
     */
    @TableField("fault_description")
    private String faultDescription;

    /**
     * 转供策略配置ID（当前时间正启用的策略配置ID）
     */
    @TableField("strategy_id")
    private Long strategyId;

    /**
     * 停电故障提供馈线名称(预防名称不一致)
     */
    @TableField("feeder_name")
    private String feederName;

    /**
     * 停电故障馈线及其内部开关设备信息JSON
     */
    @TableField("feeder_list_json")
    @JsonIgnore
    private String feederListJson;

    /**
     * 地市ID
     */
    @TableField("city_code")
    private Long cityCode;

    /**
     * 地市名称
     */
    @TableField("city_name")
    private String cityName;

    /**
     * 区县Id
     */
    @TableField("county_code")
    private Long countyCode;

    /**
     * 区县名称
     */
    @TableField("county_name")
    private String countyName;

    /**
     * 方案生成时间
     */
    @TableField("scheme_create_time")
    private LocalDateTime schemeCreateTime;

    /**
     * 方案生成时长
     */
    @TableField("scheme_create_duration")
    private String schemeCreateDuration;

    /**
     * 方案状态01-已确认，02-未确认
     */
    @TableField("scheme_state")
    private String schemeState;

    /**
     * 方案是否可转供 0-false 1-true
     */
    @TableField("power_on_success")
    private Integer powerOnSuccess;

    /**
     * 创建人
     */
    @TableField("creator")
    private Long creator;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 最后一次修改人
     */
    @TableField("last_editor")
    private Long lastEditor;

    /**
     * 最后一次修改时间
     */
    @TableField("last_time")
    private LocalDateTime lastTime;

    /**
     * 分页页长
     */
    @TableField(exist = false)
    private Long pageSize;

    /**
     * 分页页码
     */
    @TableField(exist = false)
    private Long pageNum;

    /**
     * 线路文件列表
     */
    @ApiModelProperty(value = "线路文件列表")
    @TableField(exist = false)
    private List<FhzgFaultDistMappingFileDTO> fileList;

    /**
     * 事件编号
     */
    @TableField(exist = false)
    private String outageNumber;

    /**
     * 故障接入时开关状态数据
     */
    @TableField("feeder_switch_info")
    @JsonIgnore //列表查询忽略大字段
    private String feederSwitchInfo;

    /**
     * 转供前开关信息json
     */
    @JsonIgnore //列表查询忽略大字段
    private String allSwitchInfoListJson;

    /**
     * 线路配置额定电流信息
     */
    @JsonIgnore //列表查询忽略大字段
    private String feederCheckRuleJson;

    /**
     * 区县Id集合，查询条件，如果 前端传了countyCode，则不需要设置值
     */
    @TableField(exist = false)
    private List<Long> countyCodeList;

    /**
     * 故障区段状态（默认0：未确认，1：已确认）
     */
    @TableField("section_status")
    private Integer sectionStatus;
}
