package cn.iocoder.yudao.module.pms.controller.admin.iotrhdailyreport.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 IotRhDailyReportPageReqVO extends PageParam {

    @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 = "搬迁安装天数")
    private BigDecimal relocationDays;

    @Schema(description = "运行时效")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private BigDecimal[] transitTime;

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

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

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

    @Schema(description = "当日注气时间(H)")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private BigDecimal[] dailyInjectGasTime;

    @Schema(description = "当日注水时间(H)")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private BigDecimal[] dailyInjectWaterTime;

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

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

    @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 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 = "不同专业公司的扩展属性值")
    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 = "1131")
    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 = "统计标识 注气或注水时间不为0才能算是施工", example = "Y N")
    private String statisticFlag;

    @Schema(description = "年", example = "2025")
    private String year;

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

    @Schema(description = "施工区域", example = "一厂")
    private String location;

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