package com.srs.workstudy.domain;

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.srs.common.annotation.Excel;
import com.srs.common.annotation.Sensitive;
import com.srs.common.core.domain.BaseEntity;
import com.srs.common.enums.DesensitizedType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import java.math.BigDecimal;
import java.util.Date;


/**
 * 勤工助学岗位对象 qgzx_post
 *
 * @author srs
 * @date 2024-05-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(value = "QgzxPost对象", description = "勤工助学岗位")
@TableName("qgzx_post")
public class QgzxPost extends BaseEntity {

    //此枚举用于 勤工助学 岗位 审核状态字典   qgzx_apply_status
    public enum applyStatusDict {
        Save("0"), //保存
        Submit("1"), //已提交待审核
        Dept("2"), //部门审核通过
        High("3"), //资助办审核通过
        Final("6"), //学工审核通过
        Reject("10"), //拒绝
        Return("11"), //驳回
        Replay("14"); //已重新提交
        private final String value;

        applyStatusDict(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }

    /**
     * 驳回内容
     **/
    @TableField("return_msg")
    public String returnMsg;


    private static final long serialVersionUID = 1L;

    @TableField(exist = false)
    public Long deptId;




    /**
     *
     */
    @ApiModelProperty("")
    @TableId(value = "id", type = IdType.AUTO)
    public Long id;

    /**
     * 岗位名称
     */
    @ApiModelProperty("岗位名称")
    @TableField("post_name")
    @Excel(name = "岗位名称")
    public String postName;

    /**
     * 设岗部门
     */
    @ApiModelProperty("设岗部门代码")
    @TableField("dept_code")
    public String deptCode;


    @Excel(name = "设岗部门")
    @TableField(exist = false)
    public String deptName;


    /**
     * 设岗人数
     */
    @ApiModelProperty("设岗人数")
    @TableField("post_count")
    @Excel(name = "设岗人数")
    public String postCount;

    @Excel(name = "在岗人数")
    @TableField(exist = false)
    public int workStus;

    /**
     * 负责人姓名
     */
    @ApiModelProperty("负责人姓名")
    @TableField("fzr_name")
    @Excel(name = "负责人姓名")
    public String fzrName;

    /**
     * 负责人工号
     */
    @ApiModelProperty("负责人工号")
    @TableField("fzr_no")
    public String fzrNo;

    /**
     * 指导老师姓名
     */
    @ApiModelProperty("指导老师姓名")
    @TableField("zdls_name")
    //@Excel(name = "指导老师姓名")
    public String zdlsName;

    /**
     * 指导老师工号
     */
    @ApiModelProperty("指导老师工号")
    @TableField("zdls_no")
    public String zdlsNo;

    /**
     * 指导老师联系电话
     */
    @ApiModelProperty("联系电话")
    @TableField("zdls_phone")
    @Excel(name = "联系电话")
    @Sensitive(desensitizedType = DesensitizedType.PHONE)
    public String zdlsPhone;

    /**
     * 预计金额(元/月*人)
     */
    @ApiModelProperty("预计金额(元/月*人)")
    @TableField("will_money")
    @Excel(name = "预计金额(元/月*人)")
    public BigDecimal willMoney;

    /**
     * 预计金额合计(元/月)
     */
    @ApiModelProperty("预计金额合计(元/月)")
    @TableField("will_money_total")
    @Excel(name = "预计金额合计(元/月)")
    public BigDecimal willMoneyTotal;

    /**
     * 岗位职责
     */
    @ApiModelProperty("岗位职责")
    @TableField("work_need")
    @Excel(name = "岗位职责")
    public String workNeed;

    /**
     * 技能要求
     */
    @ApiModelProperty("技能要求")
    @TableField("skill_need")
    @Excel(name = "技能要求")
    public String skillNeed;

    /**
     * 每周工作时长
     */
    @ApiModelProperty("每周工作时长")
    @TableField("week_time")
    @Excel(name = "每周工作时长")
    public BigDecimal weekTime;

    /**
     * 校区
     */
    @ApiModelProperty("校区")
    @TableField("campus_name")
    @Excel(name = "校区")
    public String campusName;

    /**
     * 工作地点
     */
    @ApiModelProperty("工作地点")
    @TableField("work_addr")
    @Excel(name = "工作地点")
    public String workAddr;

    /**
     * 岗位类型
     */
    @ApiModelProperty("岗位类型")
    @TableField("post_type")
    @Excel(name = "岗位类型")
    public String postType;

    /**
     * 申请人工号
     */
    @ApiModelProperty("申请人工号")
    @TableField("apply_no")
    public String applyNo;

    /**
     * 审核状态
     */
    @ApiModelProperty("审核状态，字典：qgzx_apply_status")
    @TableField("apply_status")
    public String applyStatus;

    @TableField(exist = false)
    @Excel(name = "审核状态")
    public String applyStatusEx;

    /**
     * 申请时间
     */
    @ApiModelProperty("申请时间")
    @TableField("apply_time")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    public Date applyTime;

    /**
     * 申请理由
     */
    @ApiModelProperty("申请理由")
    @TableField("apply_reason")
    public String applyReason;


    @ApiModelProperty("部门领导工号")
    @TableField("dept_no")
    public String deptNo;


    /**
     * 部门领导意见
     */
    @ApiModelProperty("部门领导意见")
    @TableField("dept_cmt")
    public String deptCmt;

    /**
     * 部门领导签章
     */
    @ApiModelProperty("部门领导签章")
    @TableField("dept_sign")
    public String deptSign;

    @ApiModelProperty("资助办领导工号")
    @TableField("high_no")
    public String highNo;


    /**
     * 资助办领导意见
     */
    @ApiModelProperty("资助办领导意见")
    @TableField("high_cmt")
    public String highCmt;

    /**
     * 资助办领导签章
     */
    @ApiModelProperty("资助办领导签章")
    @TableField("high_sign")
    public String highSign;

    /**
     * 删除标志（0代表存在
     */
    @ApiModelProperty("删除标志（0代表存在")
    @TableField("del_flag")
    public String delFlag;

    /**
     * 状态
     */
    @ApiModelProperty("状态")
    @TableField("status")
    public String status;

    @ApiModelProperty("状态")
    @TableField("remark")
    @Excel(name = "备注")
    public String remark;


    @ApiModelProperty("部门领导审核时间")
    @TableField("dept_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date deptTime;

    @ApiModelProperty("资助办领导审核时间")
    @TableField("high_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    public Date highTime;


    @TableField(exist = false)
    public String deptNoName;

    @TableField(exist = false)
    public String highNoName;

}
