package com.hdkj.lt.bf.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.hdkj.lt.bf.entity.dto.FhzgPlanDistMappingFileDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * 计划停电转供方案信息表 实体类
 *
 * @author zhousc
 * @since 2025-05-07
 */
@TableName("fhzg_plan_power_cut")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FhzgPlanPowerCut extends BaseEntity implements Serializable {

    /**
     * 计划停电编码
     */
    @ApiModelProperty(value = "计划停电编码")
    private String planNo;

    /**
     * 计划停电开始时间
     */
    @ApiModelProperty(value = "计划停电开始时间")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime planStartTime;

    /**
     * 计划停电结束时间
     */
    @ApiModelProperty(value = "计划停电结束时间")
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime planEndTime;


    private String planSource;

    /**
     * 馈线Id
     */
    @ApiModelProperty(value = "馈线Id")
    private String lineId;

    /**
     * 馈线名称
     */
    @ApiModelProperty(value = "馈线名称")
    private String lineName;

    /**
     * 计划停电多条馈线预留字段
     */
    @ApiModelProperty(value = "计划停电多条馈线预留字段")
    private String lineContent;

    /**
     * 工作内容
     */
    @ApiModelProperty(value = "工作内容")
    private String workContent;

    /**
     * 地市Id
     */
    @ApiModelProperty(value = "地市Id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long cityCode;

    /**
     * 地市名称
     */
    @ApiModelProperty(value = "地市名称")
    private String cityName;

    /**
     * 区县Id
     */
    @ApiModelProperty(value = "区县Id")
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long countyCode;

    /**
     * 区县名称
     */
    @ApiModelProperty(value = "区县名称")
    private String countyName;

    /**
     * 计划状态
     */
    @ApiModelProperty(value = "计划状态")
    private String planState;

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

    /**
     * 方案状态,01-已确认，02-未确认
     */
    @ApiModelProperty(value = "方案状态,01-已确认，02-未确认")
    private String schemeState;

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

    /**
     * 是否最新标识（plan_no分组内），1-是，0-不是
     */
    @TableField("is_newest")
    private Integer isNewest;

    /**
     * 逻辑删除（1为删除）
     */
    @TableField("is_delete")
    private Integer isDelete;

    @ApiModelProperty(value = "停电计划提供馈线名称")
    private String feederName;

    @ApiModelProperty(value = "停电计划馈线及其内部开关设备信息JSON")
    @JsonIgnore
    private String feederListJson;

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

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

    /**
     * 计划接入时开关信息
     */
    @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;

    @TableField(exist = false)
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime planCreateTime;

}

