
package org.sky.scientific.pojo.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 每月实际参研人员名单
 *
 * @author Kd
 * @since 2025-06-29
 */
@Data
public class XmTechnicianSalaryVO implements Serializable {

	private String xh;

	@Schema(description = "所属年月，如：202505")
	@NotBlank(message = "请选择所属年月")
	private String yearAndMonth;

	@Schema(description = "研发项目ID")
	private Long xmId;

	@Schema(description = "项目编号")
	private String xmbh;

	@Schema(description = "项目名称")
	private String xmmc;

	@Schema(description = "人员唯一标识")
	@NotNull(message = "unicode不能为空")
	private String unicode;

	@Schema(description = "人员编号")
	@TableField(exist = false)
	private String number;

	@Schema(description = "身份证号")
	@TableField(exist = false)
	private String idCard;

	@Schema(description = "姓名")
	@TableField(exist = false)
	private String name;

	@Schema(description = "人员类型")
	@TableField(exist = false)
	private String personnelType;

	@Schema(description = "本月出勤（小时）")
	private double attendanceHours;

	@Schema(description = "研发出勤（小时）")
	private double workHours;

	@Schema(description = "研发占比（%）")
	private BigDecimal yanfazhanbi = BigDecimal.ZERO;

	@Schema(description = "工资(元)")
	private BigDecimal averageMonthlySalary = BigDecimal.ZERO;

	@Schema(description = "养老保险单位部分")
	private BigDecimal pensionInsurance = BigDecimal.ZERO;

	@Schema(description = "医疗保险单位部分")
	private BigDecimal medicalInsurance = BigDecimal.ZERO;

	@Schema(description = "失业保险单位部分")
	private BigDecimal unemploymentInsurance = BigDecimal.ZERO;

	@Schema(description = "工伤保险单位部分")
	private BigDecimal injuryInsurance = BigDecimal.ZERO;

	@Schema(description = "生育保险单位部分")
	private BigDecimal maternityInsurance = BigDecimal.ZERO;

	@Schema(description = "社保合计")
	private BigDecimal totalInsurance = BigDecimal.ZERO;

	@Schema(description = "公积金单位部分")
	private BigDecimal providentFund = BigDecimal.ZERO;

	@Schema(description = "奖金")
	private BigDecimal bonus = BigDecimal.ZERO;

	@Schema(description = "福利费")
	private BigDecimal benefit = BigDecimal.ZERO;

	@Schema(description = "补充养老保险")
	private BigDecimal pensionInsuranceBc = BigDecimal.ZERO;

	@Schema(description = "补充医疗保险")
	private BigDecimal medicalInsuranceBc = BigDecimal.ZERO;

	@Schema(description = "小计=工资+社保合计+公积金+奖金+福利费+补充养老保险+补充医疗保险")
	private BigDecimal subTotal = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的工资薪金")
	private BigDecimal averageMonthlySalaryRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的养老保险单位部分")
	private BigDecimal pensionInsuranceRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的医疗保险单位部分")
	private BigDecimal medicalInsuranceRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的失业保险单位部分")
	private BigDecimal unemploymentInsuranceRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的工伤保险单位部分")
	private BigDecimal injuryInsuranceRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的生育保险单位部分")
	private BigDecimal maternityInsuranceRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的社保合计")
	private BigDecimal totalInsuranceRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的公积金")
	private BigDecimal providentFundRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的奖金")
	private BigDecimal bonusRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的福利费")
	private BigDecimal benefitRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的补充养老保险")
	private BigDecimal pensionInsuranceBcRate = BigDecimal.ZERO;

	@Schema(description = "研发项目分配的补充医疗保险")
	private BigDecimal medicalInsuranceBcRate = BigDecimal.ZERO;

	@Schema(description = "研发费用合计（元）")
	private BigDecimal total = BigDecimal.ZERO;


}
