package com.ruoyi.doubledefense.domain;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.GnhzBaseEntity;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.model.SysUserSimple;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 承包商对象 tb_contractor
 *
 * @author ruoyi
 * @date 2023-08-04
 */
@TableName("tb_contractor")
@Data
public class Contractor extends GnhzBaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 单位名称
     */
    @Excel(name = "单位名称")
    private String companyName;

    /**
     * 承包商类型：1建筑工程，2设备安装，3检维修，4检测，5设计，6监理服务，7技术服务，8其他
     */
    @Excel(name = "承包商类型：1建筑工程，2设备安装，3检维修，4检测，5设计，6监理服务，7技术服务，8其他")
    private String contractorType;

    /**
     * 税码/社会信用代码
     */
    @Excel(name = "税码/社会信用代码")
    private String socialCreditCode;

    /**
     * 安全许可编号
     */
    @Excel(name = "安全许可编号")
    private String securityClearanceCode;

    /**
     * 通信地址
     */
    @Excel(name = "通信地址")
    private String postalAddress;

    /**
     * 负责人名字
     */
    @Excel(name = "负责人名字")
    private String manageName;

    /**
     * 负责人电话
     */
    @Excel(name = "负责人电话")
    private String managePhone;

    /**
     * 安全许可证证书图片
     */
    @Excel(name = "安全许可证证书图片")
    private String securityClearanceImage;

    /**
     * 营业执照证书图片
     */
    @Excel(name = "营业执照证书图片")
    private String businessLicenseImage;

    /**
     * 业务资质证书图片
     */
    @Excel(name = "业务资质证书图片")
    private String businessQualification;


    /**
     * 父部门ID
     */
    @TableField(exist = false)
    private Long parentId;

    /**
     * 子
     */
    @TableField(exist = false)
    private List<Contractor> children = new ArrayList<>();

    /**
     * 承包商下的用户
     * 为了使前端可以使用统一的组件，这里封装一下
     */
    @Excel(name = "承包商下的用户")
    @TableField(exist = false)
    private List<UserSimple> sysUserList;

    @Data
    public static class UserSimple {
        /**
         * 承包商用户表主键
         */
        private String userId;
        /**
         * 承包商用户表姓名（compellation）
         */
        private String nickName;
    }

}
