package com.yiboshi.science.param.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yiboshi.science.base.BaseDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 任务书表DTO
 * 
 * @author lkl
 * @version 2021-08-26
 */
@Data
@EqualsAndHashCode(callSuper=true)
@ApiModel(description = "任务书表DTO")
public class ComProjectTaskDTO extends BaseDTO {
    /** 项目Id */
    @ApiModelProperty(value = "项目Id", position = 1 )
    @Length(max=36, message = "项目Id不能大于36")
    private String projId;
    /** 年度 */
    @ApiModelProperty(value = "年度", position = 2 )
    private Integer reportYear;
    /** 任务书状态  0 未 填,-20 起 草, -10 待提交,1 审核中,10 审核通过,20 审核不通过,30 返回修改 */
    @ApiModelProperty(value = "任务书状态  0 未 填,-20 起 草, -10 待提交,1 审核中,10 审核通过,20 审核不通过,30 返回修改", position = 3 )
    private Integer testState;
    /** 实施目标和主要内容 */
    @ApiModelProperty(value = "实施目标和主要内容", position = 4 )
    @Length(max=1000, message = "实施目标和主要内容不能大于1000")
    private String testContent;
    /** 总经费 */
    @ApiModelProperty(value = "总经费", position = 5 )
    private BigDecimal budgetCount;
    /** 市卫计委资助 */
    @ApiModelProperty(value = "市卫计委资助", position = 6 )
    private BigDecimal budgetGovCount;
    /** 开始日期 */
    @ApiModelProperty(value = "开始日期", position = 7 )
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startDate;
    /** 结束日期 */
    @ApiModelProperty(value = "结束日期", position = 8 )
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;

    /** 项目编号 */
    @ApiModelProperty(value = "项目编号", position = 2 )
    private String projNo;
    /** 项目名称 */
    @ApiModelProperty(value = "项目名称", position = 1 )
    private String projName;
    /** 单位名称 */
    @ApiModelProperty(value = "单位名称", position = 41)
    private String appUnitName;
    /** 项目开始时间 */
    @ApiModelProperty(value = "项目开始时间", position = 10 )
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date projStart;
    /** 项目结束时间 */
    @ApiModelProperty(value = "项目结束时间", position = 11 )
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date projEnd;
    /** 邮箱 */
    @ApiModelProperty(value = "邮箱", position = 41)
    private String linkEmail;
    /** 联系电话 */
    @ApiModelProperty(value = "联系电话", position = 41)
    private String linkTel;
    /** 联系地址 */
    @ApiModelProperty(value = "联系地址", position = 41)
    private String linkAddress;
    /** 邮编 */
    @ApiModelProperty(value = "邮编", position = 41)
    private String postcode;
    /** 主管部门 */
    @ApiModelProperty(value = "主管部门", position = 41)
    private String authority;
    /** 姓名 */
    @ApiModelProperty(value = "姓名", position = 41)
    private String appPersonName;
    /** 性别 */
    @ApiModelProperty(value = "性别", position = 8)
    private String sex;
    /** 出生年 */
    @ApiModelProperty(value = "出生年", position = 8)
    private String birthYear;
    /** 联系电话 */
    @ApiModelProperty(value = "联系电话", position = 8)
    private String phone;
    /** 学位 */
    @ApiModelProperty(value = "学位", position = 8)
    private String degreeName;
    /** 职称 */
    @ApiModelProperty(value = "职称", position = 3)
    private String titleName;
    /** 项目组成员 */
    private List<ComProjectMembersDTO> members;
    /** 经费表 */
    private List<ComProjectBudgetDTO> budget;
    /** 合作单位 */
    private  List<ComProjectCooperativeUnitsDTO> together;
    /** 预期成果 */
    private List<ComTaskTargetDTO> target;
    /** 审核列表 */
    private List<ComProjectAuditNoteDTO> auditList;
    /** 项目要实现的目标 */
    private List<ComProjectStageGoalDTO> cont1;
    /** 主要研发内容 */
    private List<ComProjectStageGoalDTO> cont2;
    /** 主要技术及学术指标 */
    private List<ComProjectStageGoalDTO> cont3;
    /** 人才培养 */
    private List<ComProjectStageGoalDTO> cont4;
    /** 其他应考核的指标 */
    private List<ComProjectStageGoalDTO> cont5;
    /** 项目阶段实施内容及目标 */
    private List<ComProjectStageGoalDTO> cont6;
    /** 内容总和 */
    private List<ComProjectStageGoalDTO> content;
    /** 项目组成员_总人数 */
    @ApiModelProperty(value = "项目组成员_总人数", position = 17 )
    private Integer memCount;
    /** 项目组成员_高职 */
    @ApiModelProperty(value = "项目组成员_高职", position = 18 )
    private Integer memHighCount;
    /** 项目组成员_中职 */
    @ApiModelProperty(value = "项目组成员_中职", position = 19 )
    private Integer memMiddleCount;
    /** 项目组成员_初职 */
    @ApiModelProperty(value = "项目组成员_初职", position = 20 )
    private Integer memLowCount;
    /** 项目组成员_其他 */
    @ApiModelProperty(value = "项目组成员_其他", position = 21 )
    private Integer memOtherCount;
    /** 项目组成员_博士研究生 */
    @ApiModelProperty(value = "项目组成员_博士研究生", position = 22 )
    private Integer memBsCount;
    /** 项目组成员_硕士研究生 */
    @ApiModelProperty(value = "项目组成员_硕士研究生", position = 23 )
    private Integer memSsCount;
    /** 项目组成员_博士(学历) */
    @ApiModelProperty(value = "项目组成员_博士(学历)", position = 24 )
    private Integer memDegree1;
    /** 项目组成员_硕士(学历) */
    @ApiModelProperty(value = "项目组成员_硕士(学历)", position = 25 )
    private Integer memDegree2;

    /** 合作单位 */
    private List<ComProjectCooperativeUnitsDTO> cooperativeUnits;
    /** 项目主要参与单位 */
    private List<ComProjectCooperativeUnitsDTO> participateUnits;
//    /** 项目组成员 */
//    private List<ComProjectMembersDTO> members;
//    /** 经费表 */
//    private List<ComProjectBudgetDTO> budget;
    /** 年度用款计划 */
    private List<ComProjectFundPlanDTO> fundPlan;
    /** 设备仪器经费表 */
    private List<ComProjectEquipmentDTO> equipments;
    /** 单位支出明细预算 */
    private List<ComProjectUnitPaymentDTO> unitPayment;
    /** 项目绩效目标表 */
    private ProjectKPIStatisticDTO projectKPI;

    /** 项目经费构成表   */
    private List<ComProjectFundCompositionDTO> fundCompositions;
    /** 在研或完成基础研究项目情况 */
    private List<ComProjectResearchDTO> projectResearchList;
    /** 项目课颖设置表 */
    private List<ComProjectSubDTO> projectSubList;
    /** 单位科研项目及资金管理制度表 */
    private List<ComProjectManagementRuleDTO> managementRuleList;
    /** 附件列表 */
    private List<ComFileDTO> fileList;

//    /** 审核列表 */
//    private List<ComProjectAuditNoteDTO> auditList;
    /** 项目安排及阶段目标 */
    private List<ComProjectStageGoalDTO> stageGoals;
    /** 成果形式 */
    // private List<ComProjectResultsDTO> results;
    private List<String> results;
}