package com.pusong.business.domain.bo;

import com.pusong.business.domain.PsContractInfo;
import com.pusong.common.core.validate.AddGroup;
import com.pusong.common.core.validate.EditGroup;
import com.pusong.common.core.validate.QueryGroup;
import com.pusong.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMapping;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 合同基本信息业务对象 ps_contract_info
 *
 * @author wls
 * @date 2024-07-29
 */
@Data
@EqualsAndHashCode
@AutoMapper(target = PsContractInfo.class)
public class PsContractInfoBo  {


    /**
     * 合同编码
     */
    @NotBlank(message = "合同编码不能为空", groups = {  EditGroup.class })
    private String contractCode;
    /**
     * 原合同编码（续费合同使用）
     */
    private String srcContractCode;
    /**
     * 合同主体
     */
    @NotBlank(message = "合同主体不能为空", groups = { AddGroup.class, EditGroup.class })
    private String contractMain;

    /**
     * 客户id
     */
    @NotNull(message = "客户id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long customId;

    /**
     * 签约日期
     */
    @NotNull(message = "签约日期不能为空", groups = { AddGroup.class, EditGroup.class })
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date applyDate;

    /**
     * 服务周期开始时间
     */
    @NotNull(message = "服务周期开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startServiceDate;
    /**
     * 服务周期结束时间
     */
    @NotNull(message = "服务周期结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endServiceDate;
    /**
     * 续期日期
     */
    @NotNull(message = "服务周期结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date renewalDate;
    /**
     * 客户是否到达现场
     */
    @NotBlank(message = "客户是否到达现场不能为空")
    private String customScene;

    /**
     * 是否代账
     */
    @NotBlank(message = "是否代账不能为空")
    private String isProxy;

    /**
     * 签约备注
     */
    private String signDesc;
    /**
     * 付款方式描述
     */
    private String payModeDesc;
    /**
     * 是否老账新接
     */
    private String isOld;

    /**
     * 是否续费
     * o新签 1续费
     */
    private String isDue;


    /**
     * 签约个人时联系人姓名
     */
    @AutoMapping(target = "contactPersonName")
    private String contactPersonName;

    /**
     * 签约个人时联系人手机号
     */
    @AutoMapping(target = "contactPersonPhone")
    private String contactPersonPhone;

    /**
     * 签约个人时联系人身份证号
     */
    @AutoMapping(target = "contactPersonIdcard")
    private String contactPersonIdcard;

    /**
     * 签约公司信息
     */
//    @NotEmpty(message = "公司信息不能为空")
    private PsCompanyInfoBo companyInfoBo;

    /**
     * 服务公司信息集合
     */
    private List<PsCompanyInfoBo> serviceCompanyInfoList;

    /**
     * 修改合同说明
     */
    private String updateDesc;
    /**
     * 合同总金额
     */
    private BigDecimal contractAmount;
    /**
     * 合同签章状态CommonStatusEnum
     */
    private String signStatus;

    /**
     * 合同状态
     */
    private String contractStatusCode;

    /**
     * 修改合同之前的合同状态是什么，记录是否已回款
     */
    private String beforeContractStatus;

    /**
     * 签约主体 1 企业  2个人
     */
    private int firstPartyType;

   public enum FIRSTPARTYTYPE{
        COMPANY(1),
        INDIVIDUALS(2);

        int type;
        FIRSTPARTYTYPE(int type){
            this.type = type;
        }
        public int getType(){
            return this.type;
        }

    }
}
