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

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Collection;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 瑞鹰日报分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class IotRyDailyReportPageReqVO extends PageParam {

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

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

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

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

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

    @Schema(description = "上井次完井时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] latestWellDoneTime;

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

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

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

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

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

    @Schema(description = "当月用电量(kWh)")
    private BigDecimal monthlyPowerUsage;

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

    @Schema(description = "当月油耗(吨)")
    private BigDecimal monthlyFuel;

    @Schema(description = "非生产时间(H)")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private BigDecimal[] nonProductionTime;

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

    @Schema(description = "施工开始日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] constructionStartDate;

    @Schema(description = "施工结束日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] constructionEndDate;

    @Schema(description = "当日生产情况生产动态", example = "1")
    private String productionStatus;

    @Schema(description = "目前工序")
    private String currentOperation;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

    /**
     * 扩展字段
     */
    @Schema(description = "项目/合同名称", example = "测试")
    private String contractName;

    @Schema(description = "任务标识", example = "#33 - 一厂")
    private String taskName;

    @Schema(description = "项目id集合", example = "[123,223]")
    private Collection<Long> projectIds;

    @Schema(description = "任务id集合", example = "[123,223]")
    private Collection<Long> taskIds;

    @Schema(description = "部门id集合", example = "[123,223]")
    private Collection<Long> deptIds;

    @Schema(description = "施工状态集合", example = "[dt,zx]")
    private Collection<String> statuses;

    @Schema(description = "非生产时效查询标识", example = "Y")
    private String nonProductFlag;

    @Schema(description = "移动端查询标识", example = "#33 - 一厂")
    private String searchKey;
}