package com.casic.missiles.dto.finance;

import com.casic.missiles.annotation.DictCodeField;
import com.casic.missiles.constants.MeterDictCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;

/**
 * @Description: 合同审批列表请求实体
 * @Author: wangpeng
 * @Date: 2023/3/31 9:38
 */
@Data
@ApiModel
public class AgreementApprovalListRequest {
    @NotEmpty(message = "审批状态类型不能为空")
    @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS)
    @ApiModelProperty(value = "审批状态类型code", dataType = "String", required = true)
    private String approvalStatus;

    @NotBlank(message = "表单id不能为空")
    @ApiModelProperty(value = "表单id（流程定义对应的表单id，等价于业务id）", dataType = "String", required = true)
    private String formId;

    @ApiModelProperty(value = "合同编号", dataType = "String")
    private String agreementNo;

    @ApiModelProperty(value = "合同名字", dataType = "String")
    private String agreementName;

    @NotEmpty(message = "合同种类不能为空")
    @DictCodeField(message = "合同种类不合法", cacheName = MeterDictCode.AGREEMENT_KIND)
    @ApiModelProperty(value = "合同种类-收入合同/支出合同-字典code", dataType = "String")
    private String agreementKind;

    @DictCodeField(message = "合同类型不合法", cacheName = MeterDictCode.AGREEMENT_TYPE)
    @ApiModelProperty(value = "合同类型-采购合同/业务合同等-字典code", dataType = "String")
    private String agreementType;

    @ApiModelProperty(value = "单位id（客户id）（收入合同该字段为甲方单位，支出合同该字段为乙方单位）", dataType = "Long")
    private Long customerId;

    @ApiModelProperty(value = "单位名字（收入合同该字段为甲方单位，支出合同该字段为乙方单位）", dataType = "String")
    private String firstParty;

    @ApiModelProperty(value = "预计签订/实际签订开始日期", dataType = "String")
    private String estimateSignStartDate;

    @ApiModelProperty(value = "预计签订/实际签订结束日期", dataType = "String")
    private String estimateSignEndDate;

    @DictCodeField(message = "合同完成状态不合法", cacheName = MeterDictCode.AGREEMENT_STATUS)
    @ApiModelProperty(value = "合同完成状态-字典code", dataType = "String")
    private String status;

    @ApiModelProperty(hidden = true)
    private Long createUserId;

}
