package com.pusong.business.domain.vo;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pusong.business.domain.PsCompanyInfo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.pusong.common.excel.annotation.ExcelDictFormat;
import com.pusong.common.excel.convert.ExcelDictConvert;
import com.pusong.common.translation.annotation.Translation;
import com.pusong.common.translation.constant.TransConstant;
import com.pusong.system.domain.SysUser;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;


/**
 * 公司信息视图对象 ps_company_info
 *
 * @author wls
 * @date 2024-07-29
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PsCompanyInfo.class)
public class PsCompanyInfoVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 公司ID
     */
    private Long id;

    /**
     * 客户id
     */
    private Long customId;

    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 公司地址,所属区域
     */
    private String companyAdress;

    /**
     * 公司开户行
     */
    private String companyAccountBank;
    /**
     * 公司开户行地址
     */
    private String companyAccountBankAdress;
    /**
     * 法人姓名
     */
    private String legalPersonName;

    /**
     * 法人证件号
     */
    private String legalPersonIdcard;

    /**
     * 法人电话号
     */
    private String legalPersonPhone;
    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 纳税人识别号
     */
    private String customerNum;
    /**
     * 纳税人资格
     */
    private String customerCert;
    /**
     * 个税密码
     */
    private String companyPersonPassword;
    /**
     * 税务密码
     */
    private String companyTaxPassword;
    /**
     * 开户行客户经理电话
     */
    private String companyBankManagerPhone;
    /**
     * 刻章公司名称
     */
    private String madeSignCompanyName;
    /**
     * 公司地址详情
     */
    private String companyAdressDetail;
    /**
     * 账套号
     */
    private String financeAccountNo;
    /**
     * 社保开户时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date socialStartDate;
    /**
     * 公积金开户时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date providentStartDate;
    /**
     * 营业执照开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date licenseStartDate;
    /**
     * 营业执照结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date licenseEndDate;
    /**
     * 经营范围
     */
    private String companyScope;
    /**
     * 注册资金
     */
    private BigDecimal registerAmount;
    /**
     * 注册类型
     */
    private String registerType;
    /**
     * 发票类型
     */
    private String billType;
    /**
     * 服务类别信息
     */
    private List<PsContractBusinessVo> businessVoList;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startServiceDate;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endServiceDate;
    /**
     * 是否代账
     */
    private String isProxy;
    /**
     * 是否老账新接
     */
    private String isOld;

    /**
     * 跟进人员
     */
    private List<SysUser> followUsers;

    /**
     * 客户姓名
     */
    private String customName;
    /**
     * 客户手机号
     */
    private String customMobile;

    /**
     * 销售经理
     */
    @Translation(type  = TransConstant.USER_ID_TO_NICKNAME)
    private Long customManager;

    /**
     * 服务状态0终止1正常
     */
    private Integer serviceStatus;

    /**
     * 终止原因
     */
    private String terminationReason;

    /**
     * 终止审核状态 0未申请，1审核中，2同意 3拒绝
     */
    private Integer terminationStatus;

    /**
     * 公司设立时间
     */
    private String establishmentTime;
    /**
     * 税务登记时间
     */
    private String taxRegTime;
    /**
     * 是否进出口 0否1是
     */
    private String inoutType;
    /**
     * 是否申请发票 0否1是
     */
    private String applyInvoice;
    /**
     * 是否关联三方 0否1是
     */
    private String tripartite;

    /**
     * 开户时间
     */
    private String accountOpeningTime;
    /**
     * 开户行经理姓名
     */
    private String bankManager;
    /**
     * 社保是否开户 0否1是
     */
    private String socialSecurity;

    /**
     * 公积金是否开户0否1是
     */
    private String accumulationFund;
    /**
     * 备注
     */
    private String remark;

}
