package com.zcloud.primeport.dto;

import com.alibaba.cola.dto.Command;
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.util.List;

/**
 * web-client
 *
 * @Author makejava
 * @Date 2026-03-05 11:33:21
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class XgfPersonApplyUpdateCmd extends Command {
//    @ApiModelProperty(value = "1股份2分公司3相关方4临时人员", name = "personBelongType", required = true)
//    @NotNull(message = "1股份2分公司3相关方4临时人员不能为空")
//    private Integer personBelongType;
    @ApiModelProperty(value = "授权范围港区与区域", name = "gateLevelAuthArea", required = true)
    @NotEmpty(message = "授权范围港区与区域不能为空")
    private String gateLevelAuthArea;
    @ApiModelProperty(value = "访问起始时间", name = "visitStartTime", required = true)
    @NotEmpty(message = "访问起始时间不能为空")
    private String visitStartTime;
    @ApiModelProperty(value = "访问结束时间", name = "visitEndTime", required = true)
    @NotEmpty(message = "访问结束时间不能为空")
    private String visitEndTime;

    @ApiModelProperty(value = "告知签字", name = "informSignId", required = true)
//    @NotNull(message = "告知签字不能为空")
    private String informSignId;
    @ApiModelProperty(value = "项目id", name = "projectId", required = true)
//    @NotNull(message = "项目id不能为空")
    private Long projectId;
    @ApiModelProperty(value = "项目名称", name = "projectName", required = true)
//    @NotEmpty(message = "项目名称不能为空")
    private String projectName;


    @ApiModelProperty(value = "审核企业", name = "auditCorpId", required = true)
    private Long auditCorpId;
    @ApiModelProperty(value = "审核企业名称", name = "auditCorpName", required = true)
    private String auditCorpName;
    @ApiModelProperty(value = "审核部门", name = "auditDeptId", required = true)
    private Long auditDeptId;
    @ApiModelProperty(value = "审核部门名称", name = "auditDeptName", required = true)
    private String auditDeptName;
    @ApiModelProperty(value = "审核用户", name = "auditUserId", required = true)
    private Long auditUserId;
    @ApiModelProperty(value = "审核用户名称", name = "auditUserName", required = true)
    private String auditUserName;

    @ApiModelProperty(value = "待审批人员列表", name = "personApplyList", required = true)
    private List<PersonApplyAddCmdExt> personApplyList;

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class PersonApplyAddCmdExt {
        @ApiModelProperty(value = "待审批人员所属企业ID", name = "personCorpId", required = true)
        @NotNull(message = "待审批人员所属企业ID不能为空")
        private Long personCorpId;
        @ApiModelProperty(value = "待审批人员所属企业名称", name = "personCorpName", required = true)
        @NotEmpty(message = "待审批人员所属企业名称不能为空")
        private String personCorpName;
        @ApiModelProperty(value = "待审批人员所属部门id", name = "personDepartmentId", required = true)
        @NotNull(message = "待审批人员所属部门id不能为空")
        private Long personDepartmentId;
        @ApiModelProperty(value = "待审批人员部门名称", name = "personDepartmentName", required = true)
        @NotEmpty(message = "待审批人员部门名称不能为空")
        private String personDepartmentName;
        @ApiModelProperty(value = "待审批人员id", name = "employeePersonUserId", required = true)
        @NotNull(message = "待审批人员id不能为空")
        private Long employeePersonUserId;
        @ApiModelProperty(value = "待审批人员姓名", name = "employeePersonUserName", required = true)
        @NotEmpty(message = "待审批人员姓名不能为空")
        private String employeePersonUserName;
        @ApiModelProperty(value = "头像", name = "userFaceUrl", required = true)
        @NotEmpty(message = "头像不能为空")
        private String userFaceUrl;
        @ApiModelProperty(value = "手机号", name = "userPhone", required = true)
        @NotEmpty(message = "手机号不能为空")
        private String userPhone;
        @ApiModelProperty(value = "身份证号码", name = "userCard", required = true)
        @NotEmpty(message = "身份证号码不能为空")
        private String userCard;
    }
}

