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

import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
import cn.iocoder.yudao.module.pms.controller.admin.iotdailyreportfuel.vo.IotDailyReportFuelSaveReqVO;
import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailSaveReqVO;
import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

@Schema(description = "管理后台 - 瑞都日报新增/修改 Request VO")
@Data
public class IotRdDailyReportSaveReqVO {

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

    @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 = "任务id", example = "15678")
    private Long taskId;

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

    @Schema(description = "施工工艺([123,233])")
    private Set<Long> techniqueIds;

    @Schema(description = "施工设备([123,233])")
    private Set<Long> deviceIds;

    @Schema(description = "时间节点-开始")
    private String startTime;

    @Schema(description = "时间节点-结束")
    private String 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)")
    private BigDecimal productionTime;

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

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


    @Schema(description = "事故非生产时间(H)")
    private BigDecimal accidentTime;
    @Schema(description = "修理非生产时间(H)")
    private BigDecimal repairTime;
    @Schema(description = "自停非生产时间(H)")
    private BigDecimal selfStopTime;
    @Schema(description = "复杂非生产时间(H)")
    private BigDecimal complexityTime;
    @Schema(description = "搬迁非生产时间(H)")
    private BigDecimal relocationTime;
    @Schema(description = "整改非生产时间(H)")
    private BigDecimal rectificationTime;
    @Schema(description = "等停非生产时间(H)")
    private BigDecimal waitingStopTime;
    @Schema(description = "冬休非生产时间(H)")
    private BigDecimal winterBreakTime;
    @Schema(description = "甲方设计-非生产时间")
    private BigDecimal partyaDesign;
    @Schema(description = "甲方准备-非生产时间")
    private BigDecimal partyaPrepare;
    @Schema(description = "甲方资源-非生产时间")
    private BigDecimal partyaResource;
    @Schema(description = "其它非生产时间")
    private BigDecimal otherNptTime;
    @Schema(description = "其它非生产时间原因")
    private String otherNptReason;

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

    @Schema(description = "施工开始日期")
    private LocalDateTime constructionStartDate;

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

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

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

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

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

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

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

    @Schema(description = "故障误工h")
    private BigDecimal faultDowntime;

    @Schema(description = "施工区域")
    private String location;

    @Schema(description = "责任人([123,234])")
    private Set<Long> responsiblePerson;

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

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

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

    @Schema(description = "不同专业公司的扩展属性值")
    private List<IotTaskAttrModelProperty> 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 = "审批状态 未提交0、审批中10、审批通过20、审批不通过30、已取消40", example = "1")
    private Integer auditStatus;

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

    @Schema(description = "创建日期")
    private LocalDateTime createTime;

    /**
     * 扩展字段
     */
    @Schema(description = "附件列表")
    private List<IotAttachmentSaveReqVO> attachments;

    @Schema(description = "平台井标识 1平台井 0非平台井")
    private Integer platformWell;

    @Schema(description = "车辆油耗")
    private List<IotDailyReportFuelSaveReqVO> reportFuels;

    @Schema(description = "非生产时间标识 Y 修改非生产时间后不再审批")
    private String nonProduct;

    @Schema(description = "生产动态明细")
    private List<IotRdDailyReportDetailSaveReqVO> reportDetails;
}