/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package com.unis.projectManagement.modular.pmApplication.param;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.Year;
import java.util.Date;

/**
 * 项目申报管理表添加参数
 *
 * @author hjc
 * @date 2024/05/27 17:26
 **/
@Getter
@Setter
public class PmApplicationAddParam {

    /**
     * 项目编号
     */
    @ApiModelProperty(value = "项目编号", position = 6)
    private String projectCode;

    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称", position = 7)
    @NotBlank(message = "项目名称不能为空")
    private String projectName;

    /**
     * 行政区划
     */
    @ApiModelProperty(value = "行政区划", position = 8)
    @NotBlank(message = "行政区划不能为空")
    private String administrativeDivision;

    /**
     * 年份
     */
    @ApiModelProperty(value = "年份", position = 9)
    @NotNull(message = "年份不能为空")
    @JsonFormat(pattern = "yyyy")
    private Integer year;

    /**
     * 项目类型 1:财政预算内资金项目；2：专项资金项目；3：财政预算外资金项目；4：银行贷款项目；5：债券项目；6：外商投资项目；7：企业自筹资金项目；8：其他资金项目；
     */
    @ApiModelProperty(value = "项目类型 1:财政预算内资金项目；2：专项资金项目；3：财政预算外资金项目；4：银行贷款项目；5：债券项目；6：外商投资项目；7：企业自筹资金项目；8：其他资金项目；", position = 10)
    @NotNull(message = "项目类型不能为空")
    private Integer projectType;

    /**
     * 拟开工时间
     */
    @ApiModelProperty(value = "拟开工时间", position = 11)
    @NotNull(message = "拟开工时间不能为空")
    private Date plannedStartTime;

    /**
     * 拟建成时间
     */
    @ApiModelProperty(value = "拟建成时间", position = 12)
    @NotNull(message = "拟建成时间不能为空")
    private Date plannedCompletionTime;

    /**
     * 建设状态 1：已立项未开工；2：建设中；3：已验收；4：已取消；
     */
    @ApiModelProperty(value = "建设状态 1：已立项未开工；2：建设中；3：已验收；4：已取消；", position = 13)
    @NotNull(message = "建设状态不能为空")
    private Integer constructionStatus;

    /**
     * 申报日期
     */
    @ApiModelProperty(value = "申报日期", position = 14)
    @NotNull(message = "申报日期不能为空")
    @JsonFormat(pattern="yyyy-MM-dd")
    private Date declarationDate;

    /**
     * 审批文号
     */
    @ApiModelProperty(value = "审批文号", position = 15)
    private String approvalDocumentNumber;

    /**
     * 项目（法人）单位
     */
    @ApiModelProperty(value = "项目（法人）单位", position = 16)
    @NotBlank(message = "项目（法人）单位不能为空")
    private String projectLegalUnit;

    /**
     * 法定代表人证照类型 1：居民身份证；2：港澳居民来往内地通行证；3：台湾居民来往大陆通行证；4：护照；5：外国人永久居留身份证；6：港澳台居民居住证；
     */
    @ApiModelProperty(value = "法定代表人证照类型 1：居民身份证；2：港澳居民来往内地通行证；3：台湾居民来往大陆通行证；4：护照；5：外国人永久居留身份证；6：港澳台居民居住证；", position = 17)
    @NotNull(message = "法定代表人证照类型不能为空")
    private Integer legalRepresentativeIdType;

    /**
     * 法定代表人证照号码
     */
    @ApiModelProperty(value = "法定代表人证照号码", position = 18)
    @NotBlank(message = "法定代表人证照号码不能为空")
    private String legalRepresentativeIdNumber;

    /**
     * 联系人
     */
    @ApiModelProperty(value = "联系人", position = 19)
    @NotBlank(message = "联系人不能为空")
    private String contactPerson;

    /**
     * 联系方式
     */
    @ApiModelProperty(value = "联系方式", position = 20)
    @NotBlank(message = "联系方式不能为空")
    private String contactInformation;

    /**
     * 电子邮箱
     */
    @ApiModelProperty(value = "电子邮箱", position = 21)
    private String email;

    /**
     * 建设地点-省
     */
    @ApiModelProperty(value = "建设地点-省", position = 22)
    @NotBlank(message = "建设地点-省不能为空")
    private String constructionLocationProvince;

    /**
     * 建设地点-市州
     */
    @ApiModelProperty(value = "建设地点-市州", position = 23)
    private String constructionLocationCity;

    /**
     * 建设地点-区县
     */
    @ApiModelProperty(value = "建设地点-区县", position = 24)
    private String constructionLocationDistrict;

    /**
     * 建设地点-详细地址
     */
    @ApiModelProperty(value = "建设地点-详细地址", position = 25)
    @NotBlank(message = "建设地点-详细地址不能为空")
    private String constructionLocationAddress;

    /**
     * 总投资
     */
    @ApiModelProperty(value = "总投资", position = 26)
    @NotNull(message = "总投资不能为空")
    private BigDecimal totalInvestment;

    /**
     * 固定资产投资
     */
    @ApiModelProperty(value = "固定资产投资", position = 27)
    @NotNull(message = "固定资产投资不能为空")
    private BigDecimal fixedAssetInvestment;

    /**
     * 中央财政资金
     */
    @ApiModelProperty(value = "中央财政资金", position = 28)
    @NotNull(message = "中央财政资金不能为空")
    private BigDecimal centralFinancialFunds;

    /**
     * 省财政资金
     */
    @ApiModelProperty(value = "省财政资金", position = 29)
    @NotNull(message = "省财政资金不能为空")
    private BigDecimal provincialFinancialFunds;

    /**
     * 市财政资金
     */
    @ApiModelProperty(value = "市财政资金", position = 30)
    @NotNull(message = "市财政资金不能为空")
    private BigDecimal municipalFinancialFunds;

    /**
     * 银行贷款
     */
    @ApiModelProperty(value = "银行贷款", position = 31)
    @NotNull(message = "银行贷款不能为空")
    private BigDecimal bankLoans;

    /**
     * 股票债券
     */
    @ApiModelProperty(value = "股票债券", position = 32)
    @NotNull(message = "股票债券不能为空")
    private BigDecimal stocksBonds;

    /**
     * 其他资金
     */
    @ApiModelProperty(value = "其他资金", position = 33)
    @NotNull(message = "其他资金不能为空")
    private BigDecimal otherFunds;

    /**
     * 项目地址经度
     */
    @ApiModelProperty(value = "项目地址经度", position = 34)
    @NotNull(message = "项目地址经度不能为空")
    private BigDecimal projectAddressLongitude;

    /**
     * 项目地址纬度
     */
    @ApiModelProperty(value = "项目地址纬度", position = 35)
    @NotNull(message = "项目地址纬度不能为空")
    private BigDecimal projectAddressLatitude;

    /**
     * 建设内容及规模
     */
    @ApiModelProperty(value = "建设内容及规模", position = 36)
    @NotBlank(message = "建设内容及规模不能为空")
    private String constructionContentScale;

    /**
     * 状态 0：保存（待申报）；1：提交（待批复）；2：驳回；3：已批复；
     */
    @ApiModelProperty(value = "状态 0：保存（待申报）；1：提交（待批复）；2：驳回；3：已批复；", position = 37)
    @NotNull(message = "状态不能为空")
    private Integer status;

}
