package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.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 java.util.List;

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 IotProjectInfoPageReqVO extends PageParam {

    @Schema(description = "组织id", example = "31703")
    private Long deptId;

    @Schema(description = "部门名称", example = "芋艿")
    private String deptName;

    @Schema(description = "海外项目标识 1国内项目 2海外项目")
    private Integer overseas;

    @Schema(description = "海外所属区域")
    private String overseasArea;

    @Schema(description = "合同名称", example = "王五")
    private String contractName;

    @Schema(description = "合同编号")
    private String contractCode;

    @Schema(description = "合同标的")
    private String contractSubject;

    @Schema(description = "合同金额")
    private BigDecimal contractAmount;

    @Schema(description = "币种")
    private String currency;

    @Schema(description = "责任人([123,234])")
    private String responsiblePerson;

    @Schema(description = "工作量总数")
    private String workloadTotal;

    @Schema(description = "工作量已完成")
    private String workloadFinish;

    @Schema(description = "工作量单位(段/层/方/井深/进尺)")
    private String workloadUnit;

    @Schema(description = "开始时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] startTime;

    @Schema(description = "完成时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] endTime;

    @Schema(description = "施工地点")
    private String location;

    @Schema(description = "施工工艺")
    private String technique;

    @Schema(description = "结算方式")
    private String payment;

    @Schema(description = "项目状态 1待开始 2进行中 3已完成", example = "2")
    private Integer status;

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

    @Schema(description = "用户名", example = "王五")
    private String userName;

    @Schema(description = "用户id", example = "448")
    private Long userId;

    private String remark;

    private Long manufacturerId;

    private String manufactureName;

    /**
     * 扩展字段
     */
    @Schema(description = "项目id 集合", example = "[123,345]")
    private List<Long> projectIds;

    @Schema(description = "公司id", example = "157")
    private Long companyDeptId;

    @Schema(description = "项目部id", example = "213")
    private Long projectDeptId;

    @Schema(description = "项目部id集合", example = "123,213")
    private Collection<Long> projectDeptIds;
}