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

import cn.iocoder.yudao.module.pms.dal.dataobject.iotdailyreportfuel.IotDailyReportFuelDO;
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.util.List;

@Schema(description = "管理后台 - 瑞恒日报 Response VO")
@Data
@ExcelIgnoreUnannotated
public class IotRhDailyReportRespVO {

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

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private String createTimeStr;

    @Schema(description = "项目部名称")
    @ExcelProperty("项目部名称")
    private String projectDeptName;

    @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 = "施工工艺 label 区分 注氮 注天然气")
    @ExcelProperty("施工工艺")
    private String techniqueNames;

    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5694")
    private Long id;

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

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

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

    @Schema(description = "项目类别(钻井 修井 注氮 酸化压裂... )")
    private String projectClassification;

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

    @Schema(description = "设计注气量")
    @ExcelProperty("设计注气量(万方)")
    private String designInjection;

    @Schema(description = "运行时效")
    private BigDecimal transitTime;

    @Schema(description = "运行时效 小数转换成百分比格式")
    @ExcelProperty("运行时效")
    private String transitTimeRate;

    @Schema(description = "当日注气量(万方)")
    @ExcelProperty("当日注气量(万方)")
    private BigDecimal dailyGasInjection;

    @Schema(description = "当日注水量(方)")
    @ExcelProperty("当日注水量(方)")
    private BigDecimal dailyWaterInjection;

    @Schema(description = "当日注气时间(H)")
    @ExcelProperty("当日注气时间(H)")
    private BigDecimal dailyInjectGasTime;

    @Schema(description = "当日注水时间(H)")
    @ExcelProperty("当日注水时间(H)")
    private BigDecimal dailyInjectWaterTime;

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

    @Schema(description = "当日油耗(L)")
    @ExcelProperty("当日油耗(L)")
    private BigDecimal dailyOilUsage;

    @Schema(description = "气电比 塔里木、吐哈-气/电   其它-气/电/1.07")
    @ExcelProperty("气电比")
    private BigDecimal gasElectricityRatio;

    @Schema(description = "非生产时间(H)")
    private BigDecimal nonProductionTime;

    @Schema(description = "非生产时间原因")
    private String nptReason;

    @Schema(description = "非生产时间原因 数据字典label值")
    private String nptReasonName;

    @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 = "施工开始日期")
    private LocalDateTime constructionStartDate;

    @Schema(description = "施工结束日期")
    private LocalDateTime constructionEndDate;

    @Schema(description = "生产动态", example = "2")
    @ExcelProperty("生产动态")
    private String productionStatus;

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

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

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

    @Schema(description = "累计注气量(方)")
    private BigDecimal totalGasInjection;

    @Schema(description = "累计注水量(方)")
    private BigDecimal totalWaterInjection;

    @Schema(description = "累计完工井次")
    private BigDecimal cumulativeCompletion;

    @Schema(description = "产能")
    @ExcelProperty("产能(方)")
    private BigDecimal capacity;

    @Schema(description = "不同专业公司的扩展属性值")
    private String extProperty;

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

    @Schema(description = "备注", example = "你说的对")
    @ExcelProperty("备注")
    private String remark;

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

    @Schema(description = "流程实例id", example = "1131")
    private String processInstanceId;

    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "1")
    private Integer auditStatus;

    @Schema(description = "审批意见", example = "同意")
    private String opinion;

    /**
     * 扩展字段
     */
    @Schema(description = "日报关联的油耗记录")
    private List<IotDailyReportFuelDO> reportFuels;

    @Schema(description = "年累计注气量(万方)")
    @ExcelProperty("年累计注气量(万方)")
    private BigDecimal yearTotalGasInjection;

    @Schema(description = "年累计注水量(方)")
    @ExcelProperty("年累计注水量(方)")
    private BigDecimal yearTotalWaterInjection;

    @Schema(description = "年累计用电量(MWh)")
    @ExcelProperty("年累计用电量(MWh)")
    private BigDecimal yearTotalPower;

    @Schema(description = "年累计油耗(L)")
    @ExcelProperty("年累计油耗(L)")
    private BigDecimal yearTotalFuel;

    @Schema(description = "井累计注气量(万方)")
    @ExcelProperty("井累计注气量(万方)")
    private BigDecimal wellTotalGasInjection;
    @Schema(description = "井累计注水量(方)")
    @ExcelProperty("井累计注水量(方)")
    private BigDecimal wellTotalWaterInjection;
    @Schema(description = "井累计用电量(MWh)")
    @ExcelProperty("井累计用电量(MWh)")
    private BigDecimal wellTotalPower;
    @Schema(description = "井累计油耗(L)")
    @ExcelProperty("井累计油耗(L)")
    private BigDecimal wellTotalFuel;


    @Schema(description = "小组内累计注气量")
    private BigDecimal groupIdGasInjection;
    @Schema(description = "小组内累计注水量")
    private BigDecimal groupIdWaterInjection;
    @Schema(description = "小组内累计用电量")
    private BigDecimal groupIdPower;
    @Schema(description = "小组内累计油耗")
    private BigDecimal groupIdFuel;

    @Schema(description = "小组内累计注气时间")
    private BigDecimal groupIdGasTime;
    @Schema(description = "小组内累计非生产时间")
    private BigDecimal groupIdNoProductTime;
    @Schema(description = "小组内平均运行时效")
    private BigDecimal groupIdTransitTime;

    @Schema(description = "小组内最后1条记录标识 true false")
    private boolean lastGroupIdFlag = false;

    @Schema(description = "非生产时效")
    private BigDecimal nonProductionRate;

    @Schema(description = "任务施工工艺 value 区分 注氮 注天然气")
    private String technique;

    @Schema(description = "队伍下增压机 的设备型号")
    private String deviceNo;
}