package cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;

@Schema(description = "管理后台 - 瑞鹰日报明细(生产动态拆分) 导出冗余主表数据 ")
@Data
@ExcelIgnoreUnannotated
public class IotRyDailyReportDetailComboRespVO {

    /**
     * 日报主表字段
     */
    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private String createTimeStr;

    @Schema(description = "部门名称")
    @ExcelProperty("施工队伍")
    private String deptName;

    @Schema(description = "项目/合同名称")
    @ExcelProperty("项目")
    private String contractName;

    @Schema(description = "任务 井号")
    @ExcelProperty("任务")
    private String taskName;

    @Schema(description = "任务 施工地点")
    @ExcelProperty("施工地点")
    private String location;

    @Schema(description = "施工状态 对应的数据字典 label")
    @ExcelProperty("施工状态")
    private String constructionStatusName;

    @Schema(description = "搬迁安装天数(D)")
    @ExcelProperty("搬迁安装天数(D)")
    private BigDecimal relocationDays;

    @Schema(description = "上井次完井时间")
    @ExcelProperty("上井次完井时间")
    private String latestWellDoneTimeStr;

    @Schema(description = "日进尺(m)")
    @ExcelProperty("日进尺(m)")
    private BigDecimal dailyFootage;

    @Schema(description = "月进尺(m)")
    @ExcelProperty("月进尺(m)")
    private BigDecimal monthlyFootage;

    @Schema(description = "年累计进尺(m)")
    @ExcelProperty("年累计进尺(m)")
    private BigDecimal annualFootage;

    @Schema(description = "当日用电量(kWh)")
    @ExcelProperty("当日用电量(kWh)")
    private BigDecimal dailyPowerUsage;

    @Schema(description = "当日油耗(升)")
    @ExcelProperty("当日油耗(升)")
    private BigDecimal dailyFuel;

    @Schema(description = "生产时间(H)")
    @ExcelProperty("生产时间(H)")
    private BigDecimal productionTime;

    @Schema(description = "进尺工作时间(H)")
    @ExcelProperty("进尺工作时间(H)")
    private BigDecimal drillingWorkingTime;
    @Schema(description = "其它生产时间(H)")
    @ExcelProperty("其它生产时间(H)")
    private BigDecimal otherProductionTime;

    @Schema(description = "非生产时效")
    @ExcelProperty("非生产时效")
    private String nonProductionRateFormat;

    @Schema(description = "事故非生产时间(H)")
    @ExcelProperty("工程质量")
    private BigDecimal accidentTime;

    @Schema(description = "修理非生产时间(H)")
    @ExcelProperty("设备故障")
    private BigDecimal repairTime;

    @Schema(description = "自停非生产时间(H)")
    @ExcelProperty("设备保养")
    private BigDecimal selfStopTime;

    @Schema(description = "复杂非生产时间(H)")
    @ExcelProperty("技术受限")
    private BigDecimal complexityTime;

    @Schema(description = "搬迁非生产时间(H)")
    @ExcelProperty("生产配合")
    private BigDecimal relocationTime;

    @Schema(description = "整改非生产时间(H)")
    @ExcelProperty("生产组织")
    private BigDecimal rectificationTime;

    @Schema(description = "等停非生产时间(H)")
    @ExcelProperty("不可抗力")
    private BigDecimal waitingStopTime;

    @Schema(description = "冬休非生产时间(H)")
    @ExcelProperty("待命")
    private BigDecimal winterBreakTime;

    @Schema(description = "甲方设计-非生产时间")
    @ExcelProperty("甲方设计")
    private BigDecimal partyaDesign;

    @Schema(description = "甲方准备-非生产时间")
    @ExcelProperty("甲方准备")
    private BigDecimal partyaPrepare;

    @Schema(description = "甲方资源-非生产时间")
    @ExcelProperty("甲方资源")
    private BigDecimal partyaResource;

    @Schema(description = "其它非生产时间")
    @ExcelProperty("其它非生产时间")
    private BigDecimal otherNptTime;

    @Schema(description = "其它非生产时间原因")
    @ExcelProperty("其它非生产时间原因")
    private String otherNptReason;

    @Schema(description = "下步工作计划 currentOperation")
    @ExcelProperty("下步工作计划")
    private String nextPlan;

    @Schema(description = "施工简报")
    @ExcelProperty("施工简报")
    private String constructionBrief;

    @Schema(description = "人员情况")
    @ExcelProperty("人员情况")
    private String personnel;

    @Schema(description = "全员数量")
    @ExcelProperty("全员数量")
    private BigDecimal totalStaffNum;

    @Schema(description = "休假人员数量")
    @ExcelProperty("休假人员数量")
    private BigDecimal leaveStaffNum;

    @Schema(description = "泥浆性能-密度(g/cm³)")
    @ExcelProperty("泥浆密度(g/cm³)")
    private BigDecimal mudDensity;

    @Schema(description = "泥浆性能-粘度(S)")
    @ExcelProperty("泥浆粘度(S)")
    private BigDecimal mudViscosity;

    @Schema(description = "水平段长度(m) 适用于水平井")
    @ExcelProperty("水平段长度(m)")
    private BigDecimal lateralLength;

    @Schema(description = "井斜(°)")
    @ExcelProperty("井斜(°)")
    private BigDecimal wellInclination;

    @Schema(description = "方位(°)")
    @ExcelProperty("方位(°)")
    private BigDecimal azimuth;

    @Schema(description = "方位(°)")
    @ExcelProperty("白班跟班干部")
    private String daySupervisors;
    @Schema(description = "夜班干部 姓名集合")
    @ExcelProperty("夜班跟班干部")
    private String nightSupervisors;

    @Schema(description = "备注", example = "随便")
    @ExcelProperty("备注")
    private String remark;

    /**
     * 日报生产动态明细字段
     */
    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28354")
    private Long id;

    @Schema(description = "施工队伍id", example = "30389")
    private Long deptId;

    @Schema(description = "项目id", example = "21928")
    private Long projectId;

    @Schema(description = "任务id", example = "1316")
    private Long taskId;

    @Schema(description = "日报id", example = "7685")
    private Long reportId;

    @Schema(description = "日报日期")
    private LocalDateTime reportDate;

    @Schema(description = "日报日期")
    @ExcelProperty("日报日期")
    private String reportDateStr;

    @Schema(description = "起始时间段")
    private LocalTime startTime;

    @Schema(description = "起始时间段")
    @ExcelProperty("开始时间")
    private String startTimeStr;

    @Schema(description = "结束时间段")
    private LocalTime endTime;

    @Schema(description = "结束时间段")
    @ExcelProperty("结束时间")
    private String endTimeStr;

    @Schema(description = "日报明细 开始日期时间")
    private LocalDateTime startDateTime;

    @Schema(description = "日报明细 结束日期时间")
    private LocalDateTime endDateTime;

    @Schema(description = "时长(H)")
    @ExcelProperty("时长(H)")
    private BigDecimal duration;

    @Schema(description = "当前井深(m)")
    @ExcelProperty("当前井深(m)")
    private BigDecimal currentDepth;

    @Schema(description = "当日施工详情")
    @ExcelProperty("当日施工详情")
    private String constructionDetail;

    @Schema(description = "工况")
    @ExcelProperty("工况")
    private String currentOperation;

    @Schema(description = "定额时长(H)")
    @ExcelProperty("定额时长(H)")
    private BigDecimal allocatedTime;

    @Schema(description = "定额时效(%)")
    private BigDecimal allocatedEfficiency;

    @Schema(description = "定额时效(%)")
    @ExcelProperty("定额时效(%)")
    private String allocatedEfficiencyStr;

    @Schema(description = "排序值")
    private Integer sort;

    @Schema(description = "状态(0启用 1禁用)", example = "2")
    private Integer status;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 扩展字段 导出生产动态明细为维度的主表信息
     */
    @Schema(description = "非生产时效")
    private BigDecimal nonProductionRate;

    @Schema(description = "上井次完井时间")
    private LocalDateTime latestWellDoneTime;

    @Schema(description = "设计井深(m)")
    private BigDecimal designWellDepth;

    @Schema(description = "额定生产时间(H)", example = "12")
    private BigDecimal ratedProductionTime = BigDecimal.ZERO;

    @Schema(description = "套生段产管尺寸(mm)", example = "12.88")
    private String casingPipeSize;

    @Schema(description = "井控级别", example = "一级井控")
    private String wellControlLevel;

    @Schema(description = "设计井身结构")
    private String designWellStruct;

    @Schema(description = "设备型号/编号", example = "70D")
    private String equipmentType;

    @Schema(description = "施工状态(动迁 准备 施工 完工)", example = "1")
    private String rigStatus;

    @Schema(description = "瑞鹰修井 施工状态(动迁 准备 施工 完工)", example = "1")
    private String repairStatus;

    @Schema(description = "总施工井数", example = "2")
    private Integer totalConstructionWells;

    @Schema(description = "完工井数", example = "2")
    private Integer completedWells;

    @Schema(description = "非生产时间原因", example = "不香")
    private String ryNptReason;
}