package com.zcloud.domain.dto;

import com.alibaba.cola.dto.Command;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * web-client
 *
 * @Author zhaokai
 * @Date 2026-01-29 15:47:58
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProjectTaskUpdateCmd extends Command {
    @ApiModelProperty(value = "主键", name = "id", required = true)
    @NotNull(message = "主键不能为空")
    private Long id;
    @ApiModelProperty(value = "业务主键id", name = "projectTaskId")
    private String projectTaskId;
    @ApiModelProperty(value = "领域类型", name = "domainType", required = true)
    @NotEmpty(message = "领域类型不能为空")
    private String domainType;
    @ApiModelProperty(value = "领域类型名称", name = "domainTypeName", required = true)
    @NotEmpty(message = "领域类型名称不能为空")
    private String domainTypeName;
    @ApiModelProperty(value = "领域部门主键id", name = "domainDepartmentId", required = true)
    @NotNull(message = "领域部门主键id不能为空")
    private String domainDepartmentId;
    @ApiModelProperty(value = "课题名称", name = "projectName", required = true)
    @NotEmpty(message = "课题名称不能为空")
    private String projectName;
    @ApiModelProperty(value = "课题执行开始时间", name = "executedStartDate", required = true)
    @NotNull(message = "课题执行开始时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date executedStartDate;
    @ApiModelProperty(value = "课题执行结束时间", name = "executedEndDate", required = true)
    @NotNull(message = "课题执行结束时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date executedEndDate;
    @ApiModelProperty(value = "领域组id", name = "domainGroupId", required = true)
    @NotEmpty(message = "领域组id不能为空")
    private String domainGroupId;
    @ApiModelProperty(value = "课题执行企业id", name = "executeCorpinfoId", required = true)
    @NotNull(message = "课题执行企业id不能为空")
    private Long executeCorpinfoId;
    @ApiModelProperty(value = "课题执行状态(0:评分人员待制定,1:课题组人员待制定,2:已完善待执行,3:执行中,4:已结束)", name = "executeStatus", required = true)
    @NotNull(message = "课题执行状态不能为空")
    private Integer executeStatus;


    @ApiModelProperty(value = "课题信息", name = "projectTaskInfoAddCmdList")
    private List<ProjectTaskInfoAddCmd> projectTaskInfoAddCmdList;

    @ApiModelProperty(value = "课题领域组人员信息", name = "projectTaskGroupUserAddCmdList")
    private List<ProjectTaskGroupUserAddCmd> projectTaskGroupUserAddCmdList;

    @ApiModelProperty(value = "课题评审人员信息", name = "projectTaskScoreInfoAddCmdList")
    private List<ProjectTaskScoreInfoAddCmd> projectTaskScoreInfoAddCmdList;

}

