package com.yifu.cloud.plus.v1.yifu.insurances.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * @author licancan
 * @description 投保列表VO
 * @date 2022-07-20 16:18:41
 */
@Data
@Schema(description = "投保列表VO")
public class InsuranceListVO implements Serializable {
	private static final long serialVersionUID = -6673220061558171816L;

	/**
	 * 主键
	 */
	@Schema(description = "主键")
	private String id;

	/**
	 * 员工姓名
	 */
	@Schema(description = "员工姓名")
	private String empName;

	/**
	 * 员工身份证号
	 */
	@Schema(description = "员工身份证号")
	private String empIdcardNo;

	/**
	 * 投保类型， 1新增、3批增、4替换
	 */
	@Schema(description = " 投保类型， 1新增、3批增、4替换")
	private Integer buyType;

	/**
	 * 购买月数
	 */
	@Schema(description = "购买月数")
	private String buyMonth;

	/**
	 * 项目名称
	 */
	@Schema(description = "项目名称")
	private String projectName;

	/**
	 * 项目编码
	 */
	@JsonIgnore
	private String deptNo;

	/**
	 * 投保岗位
	 */
	@Schema(description = "投保岗位")
	private String post;

	/**
	 * 保单开始时间
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
	@Schema(description = "保单开始时间")
	private LocalDate policyStart;

	/**
	 * 保单结束时间
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
	@Schema(description = "保单结束时间")
	private LocalDate policyEnd;

	/**
	 * 保险公司名称
	 */
	@Schema(description = "保险公司名称")
	private String insuranceCompanyName;

	/**
	 * 险种名称
	 */
	@Schema(description = "险种名称")
	private String insuranceTypeName;

	/**
	 * 购买标准
	 */
	@Schema(description = "购买标准")
	private String buyStandard;

	/**
	 * 创建人姓名
	 */
	@Schema(description = "创建人(派单人)")
	private String createName;

	/**
	 * 创建人部门名称
	 */
	@Schema(description = "创建人部门名称(派单人)")
	private String createUserDeptName;

	/**
	 * 创建者
	 */
	@Schema(description = "创建人")
	private String createBy;

	/**
	 * 投保状态 1待投保 2投保中 3已投保 4投保退回 5 已减员
	 */
	@Schema(description = "投保状态 1待投保 2投保中 3已投保 4投保退回 5 已减员")
	private Integer buyHandleStatus;

	/**
	 * 结算类型 (0、预估 1、实缴)
	 */
	@Schema(description = "结算类型 (0、预估 1、实缴)")
	private Integer settleType;

	/**
	 * 结算月
	 */
	@Schema(description = "结算月")
	private String settleMonth;

	/**
	 * 错误信息
	 */
	@Schema(description = "错误信息")
	private String errorMessage;

	/**
	 * 审批意见
	 */
	@Schema(description = "审批意见")
	private String remark;

	@Schema(description = "退回原因")
	private String backRemark;

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
	@Schema(description = "派单日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("派单日期")
	private LocalDateTime createTime;

	@Schema(description ="客户名称")
	private String unitName;

	@Schema(description ="客户编码")
	private String unitNo;

	/**
	 * 是否有效 0有效 1无效
	 */
	@Schema(description = "是否有效 0有效 1无效")
	private Integer isEffect;

	/**
	 * 是否地市自购0是 1 否
	 */
	@Schema(description = "是否地市自购")
	private String isAdress;

	/**
	 * 预估缴费状态 0待缴费、1已缴费
	 */
	@Schema(description = "预估缴费状态 0待缴费、1已缴费")
	private String paymentStatus;

	/**
	 * 缴费时间： EKP已收/已垫付 更新时间， 退单或撤销匹配 清空时间
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
	@Schema(description = "缴费时间")
	private String paymentTime;

	/**
	 * 是否见费出单 0是 1 否 （新增或批增且启用‘是否启用BPO结算模式’且险种配置‘是否见费出单’为是时 此字段为是，否则为否）
	 */
	@Schema(description = "是否见费出单")
	private String isJfcd;

	/**
	 * 购买周期 （格式：4个月/117天）
	 */
	@Schema(description = "购买周期")
	private String purchaseCycle;

	/**
	 * 预计办理日期
	 */
	@Schema(description = "预计办理日期")
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
	private LocalDate preHandleTime;

	/**
	 * 预估保费
	 */
	@Schema(description = "预估保费")
	private BigDecimal estimatePremium;

	/**
	 * 计费方式
	 */
	@Schema(description = "计费方式(0：按天，1：按月)")
	private Integer billingType;
}
