package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.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.time.LocalTime;
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 IotRdDailyReportPageReqVO extends PageParam {

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

    @Schema(description = "日报名称", example = "西南压裂项目部/2025-10-17日报填报")
    private String reportName;

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

    @Schema(description = "平台井标识 2非平台井 1平台井 0默认值", example = "2")
    private Integer platformWell;

    @Schema(description = "平台井组", example = "463e3996-be48-4758-8229-c1351cbf3e37")
    private String platformGroup;

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

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

    @Schema(description = "施工工艺([123,233])")
    private String techniqueIds;

    @Schema(description = "施工设备([123,233])")
    private String deviceIds;

    @Schema(description = "时间节点-开始")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalTime[] startTime;

    @Schema(description = "时间节点-结束")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalTime[] endTime;

    @Schema(description = "累计施工井")
    private BigDecimal cumulativeWorkingWell;

    @Schema(description = "累计施工层")
    private BigDecimal cumulativeWorkingLayers;

    @Schema(description = "当日泵车台次")
    private BigDecimal dailyPumpTrips;

    @Schema(description = "当日仪表/混砂")
    private BigDecimal dailyToolsSand;

    @Schema(description = "趟数", example = "29453")
    private BigDecimal runCount;

    @Schema(description = "桥塞")
    private BigDecimal bridgePlug;

    @Schema(description = "水方量")
    private BigDecimal waterVolume;

    @Schema(description = "时间H", example = "5062")
    private BigDecimal hourCount;

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

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

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

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

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

    @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 = "2")
    private String productionStatus;

    @Schema(description = "外租情况(可能有附件)")
    private String externalRental;

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

    @Schema(description = "施工状态(动迁上井/动迁下井/施工准备/施工...)", example = "1")
    private String rdStatus;

    @Schema(description = "故障情况")
    private String malfunction;

    @Schema(description = "故障误工h")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private BigDecimal[] faultDowntime;

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

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

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

    @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 = "16415")
    private String processInstanceId;

    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "1")
    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 = "测试")
    private Collection<Long> projectIds;

    @Schema(description = "任务id集合", example = "测试")
    private Collection<Long> taskIds;

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

    @Schema(description = "平台井分组标识集合", example = "[xyz,abc]")
    private Collection<String> platformGroups;

    @Schema(description = "时间查询类型", example = "本月 本季度 本年")
    private String timeType;

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