Commit 155e9959 by 284718418@qq.com

Merge branch 'feature_20220305_V2.3' into develop

# Conflicts:
#	src/main/java/cn/timer/api/bean/yggl/YgglMainEmp.java
#	src/main/java/cn/timer/api/config/interceptor/WebSecurityConfig.java
#	src/main/java/cn/timer/api/controller/yggl/YgglController.java
#	src/main/java/cn/timer/api/dao/yggl/YgglMainEmpMapper.java
#	src/main/resources/application-dev.yml
#	src/main/resources/application-test.yml
#	src/main/resources/mapping/yggl/YgglMainEmpMapper.xml
parents 13ba8374 69e275b2
......@@ -116,12 +116,12 @@
</dependency>
<!-- optional这个需要为 true 热部署才有效 -->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-devtools</artifactId>-->
<!--<optional>true</optional>-->
<!--<scope>runtime</scope>-->
<!--</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>runtime</scope>
</dependency>
<!-- swagger2 -->
<dependency>
......@@ -310,7 +310,13 @@
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.3.0</version>
<version>3.4.1</version>
</dependency>
<!-- mybatis-plus-join -->
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join</artifactId>
<version>1.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok-maven-plugin -->
......@@ -430,6 +436,12 @@
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.9</version>
</dependency>
</dependencies>
<repositories>
......
package cn.timer.api.dto.yggl;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Tang 2019-11-15
*/
@Entity
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("nation_class")
@ApiModel("民族")
public class YgmzDto {
@Id
@GeneratedValue
@TableId (type = IdType.AUTO)
@ApiModelProperty(value="编号",example="1")
private Integer id;
@ApiModelProperty(value="民族名称 ",example="民族名称")
private String name;
@ApiModelProperty(value="拼音",example="pinyin")
private String pinyin;
@ApiModelProperty(value="简写",example="PY")
private String letter;
@ApiModelProperty(value="这个才是排序",example="number")
private Integer number;
@ApiModelProperty(value="排序",example="排序")
private String sort;
}
package cn.timer.api.bean.clazz;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Tang 2019-11-15
*/
@Entity
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("nation_class")
@ApiModel("民族")
public class NationClass extends Model<NationClass> {
@Id
@GeneratedValue
@TableId (type = IdType.AUTO)
@ApiModelProperty(value="编号",example="1")
private Integer id;
@ApiModelProperty(value="民族名称 ",example="民族名称")
private String name;
@ApiModelProperty(value="拼音",example="pinyin")
private String pinyin;
@ApiModelProperty(value="简写",example="PY")
private String letter;
@ApiModelProperty(value="这个才是排序",example="number")
private Integer number;
@ApiModelProperty(value="排序",example="排序")
private String sort;
}
package cn.timer.api.bean.wechat;
/**
*
* 8小时企业管理
* 公众号模板消息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-04-18 15:14:40
* https://mp.weixin.qq.com/advanced/tmplmsg?action=list&t=tmplmsg/list&token=275969966&lang=zh_CN
*/
public class MessageTemplate {
/**
* 通知面试官
* 通知面试者
* 面试安排提醒
* {{first.DATA}}
* 面试职位:{{keyword1.DATA}}
* 面试时间:{{keyword2.DATA}}
* {{remark.DATA}}
*/
public static final String TEMPLATE_ID_TO_INTERVIEWER = "Uz6mVUYk9Tu7EO2V1pqiQ3x4EudDJTYWdaFtdf64h3M";
/**
* 应聘通知
* {{first.DATA}}
* 应聘职位:{{keyword1.DATA}}
* 通知内容:{{keyword2.DATA}}
* 通知人:{{keyword3.DATA}}
* 通知时间:{{keyword4.DATA}}
* {{remark.DATA}}
*/
public static final String TEMPLATE_ID_TO_INTERVIEWE = "YChIP5ho7sT_dL5GMykjR4LCuR5aJ8E0tf73i4p_vvk";
}
......@@ -39,63 +39,63 @@ public class YgglMainEmp extends Model<YgglMainEmp> {
@TableId (type = IdType.AUTO)
@ApiModelProperty(value="员工编号 员工编号",example="101")
private Integer id;
@ApiModelProperty(value="员工工号 ",example="员工工号")
private Integer empNum;
@ApiModelProperty(value="手机号码 手机号码",example="101")
private String phone;
@ApiModelProperty(value="密码 ",example="密码")
private String password;
@ApiModelProperty(value="头像 ",example="base64来处理头像")
private String headUrl;
@ApiModelProperty(value="名称 ",example="名称")
private String name;
@ApiModelProperty(value="英文名称 ",example="英文名称")
private String englishName;
@ApiModelProperty(value="性别 0:男;1:女",example="0")
private Integer sex;
@ApiModelProperty(value="证件类型 0:身份证;1:港澳居民来往内地通行证;2:台湾居民来往大陆通行证;3:外国护照;4:其他",example="101")
private Integer zjType;
@ApiModelProperty(value="证件号码 ",example="证件号码")
private String zjNum;
@ApiModelProperty(value="身份证有效期 ",example="身份证有效到期日")
private Date sfzyxTime;
@ApiModelProperty(value="出生日期 ",example="出生日期")
private Date birthday;
@ApiModelProperty(value="年龄 年龄",example="101")
private Integer age;
@ApiModelProperty(value="是否已婚 0:否、1:是",example="101")
private Integer isMarried;
@ApiModelProperty(value="是否已育 0:否、1:是",example="101")
private Integer isPregnant;
@ApiModelProperty(value="国家地区 0:中国;1:中国香港;2:中国澳门;3:中国台湾",example="101")
private Integer area;
@ApiModelProperty(value="民族 56个名族",example="101")
private Integer mz;
@ApiModelProperty(value="政治面貌 1:中共党员;2:中共预备党员;3共青团员;4:民革党员;5:民盟盟员;6:民建会员;7:民进会员;8:农工党党员;9:致公党党员;10:九三学社社员;11:台盟盟员;12:无党派人士;13:群众",example="101")
private Integer zzmm;
@ApiModelProperty(value="籍贯 省",example="101")
private String jg;
@ApiModelProperty(value="籍贯 省id",example="101")
private String jgId;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "省id")
......@@ -108,113 +108,119 @@ public class YgglMainEmp extends Model<YgglMainEmp> {
private String district;
@ApiModelProperty(value = "区编号")
private String districtId;
@ApiModelProperty(value="户口性质 1:城镇户口;2:农村户口;3:居民户口",example="101")
private Integer hkType;
@ApiModelProperty(value="户籍地址 ",example="详细地址")
private String hkAddress;
@ApiModelProperty(value="QQ QQ",example="101")
private Integer qq;
@ApiModelProperty(value="微信 ",example="微信")
private String wechat;
// @ApiModelProperty(value="个人邮箱 ",example="个人邮箱")
// private String email;
@ApiModelProperty(value="血型 ",example="血型")
private String bloodType;
@ApiModelProperty(value="语言 ",example="语言")
private String language;
@ApiModelProperty(value="最高学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士;",example="101")
private Integer edu;
@ApiModelProperty(value="专业 ",example="专业")
private String zy;
@ApiModelProperty(value="转正备注 ",example="转正备注")
private String zzRemark;
@ApiModelProperty(value="工作性质 0全职、1实习、2兼职、3劳务派遣、4劳务、5派遣、6外包、7退休返聘",example="101")
private Integer jobType;
@ApiModelProperty(value="员工状态 0试用、1正式、2离职中、3已离职",example="101")
private Integer jobStatus;
@ApiModelProperty(value="入职日期 ",example="客户注册后的时间为入职时间")
private Date rzTime;
@ApiModelProperty(value="试用期 0:无试用期;1:1个月;2:2个月;3:3个月;4:4个月;5:5个月;6:6个月(有试用期显示选项)",example="101")
private Integer syq;
@ApiModelProperty(value="应转正日期 ",example="人事记录要自动转正的日期")
private Date zzTime;
@ApiModelProperty(value="实际转正日期 ",example="人事手动记录要转正的日期")
private Date sjzzTime;
@ApiModelProperty(value="是否计入考勤 0:否;1:是",example="101")
private Integer isJrkq;
@ApiModelProperty(value="公司内部工号 就是公司内部自己设置的工号",example="101")
private String jobNum;
@ApiModelProperty(value="工作地点 ",example="工作地点")
private String workAddress;
@ApiModelProperty(value="工作电话 工作电话",example="101")
private Integer workPhone;
@ApiModelProperty(value="工作邮箱 ",example="工作邮箱")
private String workEmail;
@ApiModelProperty(value="招聘渠道 招聘渠道应该是活性的",example="101")
private Integer zpqd;
@ApiModelProperty(value="部门岗位id 部门岗位id",example="101")
private Integer bmgwId;
@ApiModelProperty(value="部门名称",example="")
private String bmgwName;
@ApiModelProperty(value="修改时间",example="修改时间")
private Date updateTime;
@ApiModelProperty(value="修改人",example="修改人")
private Integer updateMan;
@ApiModelProperty(value="组织机构代码 组织机构代码",example="101")
private Integer orgCode;
@ApiModelProperty(value="微信id",example="UnionID微信系统唯一id")
private String unionid;
@ApiModelProperty(value="公众号id",example="openid公众号唯一id")
private String openid;
@ApiModelProperty(value="小程序id",example="mpopenid小程序")
private String mpopenid;
@ApiModelProperty(value="手机APPid",example="appopenid手机app")
private String appopenid;
// @ApiModelProperty(value="是否企业中心管理员 ",example="0-否 1-主账号 2-子账号")
// private Integer isManager;
@ApiModelProperty(value="离职前状态 1试用、2正式 ",example="1试用、2正式")
private Integer beforeLeavingSts;
@ApiModelProperty(value="自定义工号",example="")
private String customNum;
@ApiModelProperty(value="对应合同公司字典ID",example="0")
private Integer zpglCompanyId;
@ApiModelProperty(value="对应工作地点典ID",example="0")
private Integer zpglGzddId;
@Transient
@TableField(exist = false)
private String workTime;//工龄
@Transient
@TableField(exist = false)
private String error;//错误信息提示
......@@ -226,7 +232,7 @@ public class YgglMainEmp extends Model<YgglMainEmp> {
@ApiModelProperty(value="是否已投保:0否 1是 ",example="")
private int isInsure;
}
}
\ No newline at end of file
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理合同公司字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-17 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_company")
@Data
public class ZpglCompany extends Model<ZpglCompany> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 公司名称
*/
@ApiModelProperty(value = "公司名称")
private String companyName;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 创建者
*/
@ApiModelProperty(value = "创建者")
private Integer createUserId;
/**
* 更新者
*/
@ApiModelProperty(value = "更新者")
private Integer updateUserId;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private Integer orgCode;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理测评题库表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_cptk")
@Data
public class ZpglCptk extends Model<ZpglCptk> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 题目
*/
@ApiModelProperty(value = "题目")
private String question;
/**
* 选项
*/
@ApiModelProperty(value = "选项")
private String answerA;
/**
* 选项
*/
@ApiModelProperty(value = "选项")
private String answerB;
/**
* 选项
*/
@ApiModelProperty(value = "选项")
private String answerC;
/**
* 选项
*/
@ApiModelProperty(value = "选项")
private String answerD;
/**
* 排序:从小到大
*/
@ApiModelProperty(value = "排序:从小到大")
private Integer sort;
/**
* 用户ID
*/
@ApiModelProperty(value = "用户ID")
private Integer userId;
/**
* 用户姓名
*/
@ApiModelProperty(value = "用户姓名")
private String userName;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理用户测评答题卡表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_dtk")
@Data
public class ZpglDtk extends Model<ZpglDtk> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 红色值
*/
@ApiModelProperty(value = "红色值")
private Integer red;
/**
* 蓝色值
*/
@ApiModelProperty(value = "蓝色值")
private Integer blue;
/**
* 黄色值
*/
@ApiModelProperty(value = "黄色值")
private Integer yellow;
/**
* 绿色值
*/
@ApiModelProperty(value = "绿色值")
private Integer green;
/**
* 总分值
*/
@ApiModelProperty(value = "总分值")
private Integer count;
/**
* 对应人才信息表ID
*/
@ApiModelProperty(value = "对应人才信息表ID")
private Integer zpglRcxxId;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理淘汰原因字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_fail")
@Data
public class ZpglFail extends Model<ZpglFail> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职
*/
@ApiModelProperty(value = "状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职")
private Integer zpglRcxxStatus;
/**
* 淘汰原因
*/
@ApiModelProperty(value = "淘汰原因")
private String failCause;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 创建者
*/
@ApiModelProperty(value = "创建者")
private Integer createUserId;
/**
* 更新者
*/
@ApiModelProperty(value = "更新者")
private Integer updateUserId;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private Integer orgCode;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理工作地点字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-17 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_gzdd")
@Data
public class ZpglGzdd extends Model<ZpglGzdd> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 省名
*/
@ApiModelProperty(value = "省名")
private String provinceId;
/**
* 省名
*/
@ApiModelProperty(value = "省名")
private String province;
/**
* 区名
*/
@ApiModelProperty(value = "区名")
private String districtId;
/**
* 区名
*/
@ApiModelProperty(value = "区名")
private String district;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String cityId;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String city;
/**
* 工作地点
*/
@ApiModelProperty(value = "工作地点")
private String gzddName;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 创建者
*/
@ApiModelProperty(value = "创建者")
private Integer createUserId;
/**
* 更新者
*/
@ApiModelProperty(value = "更新者")
private Integer updateUserId;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private Integer orgCode;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理面试流程记录表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_mslc_log")
@ApiModel("资源目录表")
public class ZpglMslcLog extends Model<ZpglMslcLog> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 类型,1状态变更,2面试,3Offer,4讨论,5其他
*/
@ApiModelProperty(value = "类型,1状态变更,2面试,3Offer,4讨论,5其他")
private Integer zpglRcxxStatus;
/**
* 详细内容
*/
@ApiModelProperty(value = "详细内容")
private String detail;
/**
* 用户ID
*/
@ApiModelProperty(value = "用户ID")
private Integer userId;
/**
* 用户姓名
*/
@ApiModelProperty(value = "用户姓名")
private String userName;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Date;
/**
* 招聘管理人才信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx")
@Data
public class ZpglRcxx extends Model<ZpglRcxx> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 职位id
*/
@ApiModelProperty(value = "职位id")
private Integer zpglZwxxId;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名")
private String name;
/**
* 手机
*/
@ApiModelProperty(value = "手机")
private String mobile;
/**
* 邮件地址
*/
@ApiModelProperty(value = "邮件地址")
private String mail;
/**
* 身份证号码
*/
@ApiModelProperty(value = "身份证号码")
private String idCard;
/**
* 微信
*/
@ApiModelProperty(value = "微信")
private String weixin;
/**
* 身高CM
*/
@ApiModelProperty(value = "身高CM")
private Integer height;
/**
* 体重KG
*/
@ApiModelProperty(value = "体重KG")
private Integer weight;
/**
* 政治面貌
*/
@ApiModelProperty(value = "政治面貌")
private String face;
/**
* 民族
*/
@ApiModelProperty(value = "民族")
private Integer nationClassId;
/**
* 籍贯
*/
@ApiModelProperty(value = "籍贯")
private String nativePlace;
/**
* 部门岗位ID
*/
@ApiModelProperty(value = "部门岗位ID")
private Integer bmgwId;
/**
* 工作性质 0全职、1实习、2兼职、3劳务派遣、4劳务、5派遣、6外包、7退休返聘
*/
@ApiModelProperty(value = "工作性质 0全职、1实习、2兼职、3劳务派遣、4劳务、5派遣、6外包、7退休返聘")
private Integer jobType;
/**
* 预计入职日期
*/
@ApiModelProperty(value = "预计入职日期")
private Date yjrzTime;
/**
* 省名
*/
@ApiModelProperty(value = "省名")
private String provinceId;
/**
* 省名
*/
@ApiModelProperty(value = "省名")
private String province;
/**
* 区名
*/
@ApiModelProperty(value = "区名")
private String districtId;
/**
* 区名
*/
@ApiModelProperty(value = "区名")
private String district;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String cityId;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String city;
/**
* 详细地址
*/
@ApiModelProperty(value = "详细地址")
private String address;
/**
* 现居住地详址
*/
@ApiModelProperty(value = "现居住地详址")
private String grAddress;
/**
* 是否结婚:0否,1是
*/
@ApiModelProperty(value = "是否结婚:0否,1是")
private Integer marryStatus;
/**
* 语言 1:英语 2:粤语 3:普通话
* 列:1,2,3
*/
@ApiModelProperty(value = "语言 1:英语 2:粤语 3:普通话 ")
private String language;
/**
* 驾照 1:A照 2:B照 3:C照
*/
@ApiModelProperty(value = "驾照 1:A照 2:B照 3:C照")
private Integer drivingLicense;
/**
* 病史 :0无,1有
*/
@ApiModelProperty(value = "病史 :0无,1有")
private Integer medicalHistory;
/**
* 病史1有:具体说明
*/
@ApiModelProperty(value = "具体说明")
private String medicalDetail;
/**
* 待遇要求(税前)单位元/月
*/
@ApiModelProperty(value = "待遇要求(税前)单位元/月")
private Integer salary;
/**
* 求职状态:0离职,1在岗
*/
@ApiModelProperty(value = "求职状态:0离职,1在岗")
private Integer workStatus;
/**
* 可到岗时间:0一周内 1两周内 2一个月内 3两个月内 4不确定
*/
@ApiModelProperty(value = "可到岗时间:0一周内 1两周内 2一个月内 3两个月内 4不确定")
private Integer workTimer;
/**
* 爱好特长
*/
@ApiModelProperty(value = "爱好特长")
private String hobby;
/**
* 自我介绍
*/
@ApiModelProperty(value = "自我介绍")
private String contMyDesc;
/**
* 受到奖励
*/
@ApiModelProperty(value = "受到奖励")
private String reward;
/**
* 处分,违法,犯罪记录
*/
@ApiModelProperty(value = "处分,违法,犯罪记录")
private String record;
/**
* 招聘渠道ID
*/
@ApiModelProperty(value = "招聘渠道ID")
private Integer zpglZpqdId;
/**
* 签名图片
*/
@ApiModelProperty(value = "签名图片")
private String signatureImg;
/**
* 文件名
*/
@ApiModelProperty(value = "文件名")
private String fileName;
/**
* 文件路径
*/
@ApiModelProperty(value = "文件路径")
private String filePath;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 性别 0:男1:女
*/
@ApiModelProperty(value = "性别 0:男1:女")
private Integer sex;
/**
* 出生日期
*/
@ApiModelProperty(value = "出生日期")
private Date datebirth;
/**
* 工作年限
*/
@ApiModelProperty(value = "工作年限")
private Integer workyears;
/**
* 最高学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士
*/
@ApiModelProperty(value = "最高学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士")
private String highesteducation;
/**
* 毕业院校
*/
@ApiModelProperty(value = "毕业院校")
private String universitie;
/**
* 专业名称
*/
@ApiModelProperty(value = "专业名称")
private String subject;
/**
* 最近工作单位
*/
@ApiModelProperty(value = "最近工作单位")
private String company;
/**
* 最近职位
*/
@ApiModelProperty(value = "最近职位")
private String zjzw;
/**
* 参加工作时间
*/
@ApiModelProperty(value = "参加工作时间")
private Date workBeginYear;
/**
* 标签
*/
@ApiModelProperty(value = "标签")
private String label;
/**
* 状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职
*/
@ApiModelProperty(value = "状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职")
private Integer status;
/**
* 对应淘汰原因字典ID
*/
@ApiModelProperty(value = "对应淘汰原因字典ID")
private Integer zpglFailId;
/**
* 对应合同公司字典ID
*/
@ApiModelProperty(value = "对应合同公司字典ID")
private Integer zpglCompanyId;
/**
* 对应职级字典ID
*/
@ApiModelProperty(value = "对应职级字典ID")
private Integer zpglZjId;
/**
* 对应工作地点字典ID
*/
@ApiModelProperty(value = "对应工作地点字典ID")
private Integer zpglGzddId;
/**
* 面试官id
*/
@ApiModelProperty(value = "面试官id")
private Integer interviewerId;
/**
* 面试时间
*/
@ApiModelProperty(value = "面试时间")
private Date interviewTime;
/**
* 面试方式 1:现场面试 2:电话面试 3:视屏面试
*/
@ApiModelProperty(value = "面试方式 1:现场面试 2:电话面试 3:视屏面试")
private Integer interviewWay;
/**
* 通知方式 1:全部 2:短信 3:邮件 4.微信公众号
*/
@ApiModelProperty(value = "通知方式 1:全部 2:短信 3:邮件 4.微信公众号")
private Integer noticeWay;
/**
* 面试轮次
*/
@ApiModelProperty(value = "面试轮次")
private Integer interviewNum;
/**
* 对应用户id
*/
@ApiModelProperty(value = "对应用户id")
private Integer userId;
/**
* 加入原因
*/
@ApiModelProperty(value = "加入原因")
private String joincause;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private String orgCode;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 国家地区 0:中国;1:中国香港;2:中国澳门;3:中国台湾
*/
@ApiModelProperty(value = "国家地区 0:中国;1:中国香港;2:中国澳门;3:中国台湾")
private Integer area;
/**
* 附加操作:0无,1加入人才库
*/
@ApiModelProperty(value = "附加操作:0无,1加入人才库")
private Integer ifrck;
/**
* 附加操作:0无,1加入人才库
*/
@ApiModelProperty(value = "附加操作:0无,1加入人才库")
private Date ifrckTime;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 淘汰原因
*/
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "淘汰原因")
private String failCause;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 简历证书
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_certificate")
@Data
public class ZpglRcxxCertificate extends Model<ZpglRcxxCertificate> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 获得时间
*/
@ApiModelProperty(value = "获得时间")
private Date getTime;
/**
* 证书名称
*/
@ApiModelProperty(value = "证书名称")
private String certificateName;
/**
* 证书图片
*/
@ApiModelProperty(value = "证书图片")
private String image;
/**
*
*/
@ApiModelProperty(value = "")
private Integer isDelete;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 工作经验
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_experience")
@Data
public class ZpglRcxxExperience extends Model<ZpglRcxxExperience> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 公司名称
*/
@ApiModelProperty(value = "公司名称")
private String company;
/**
* 入职时间
*/
@ApiModelProperty(value = "入职时间")
private Date startTime;
/**
* 离职时间 0000-00-00 00:00:00为至今
*/
@ApiModelProperty(value = "离职时间 0000-00-00 00:00:00为至今")
private Date endTime;
/**
* 职位名称
*/
@ApiModelProperty(value = "职位名称")
private String jobName;
/**
* 所在部门
*/
@ApiModelProperty(value = "所在部门")
private String department;
/**
* 薪水(单位元/月)
*/
@ApiModelProperty(value = "薪水(单位元/月)")
private Integer salary;
/**
* 工作内容
*/
@ApiModelProperty(value = "工作内容")
private String workContent;
/**
* 离职原因
*/
@ApiModelProperty(value = "离职原因")
private String reason;
/**
* 联系人姓名
*/
@ApiModelProperty(value = "联系人姓名")
private String linkName;
/**
* 联系人手机
*/
@ApiModelProperty(value = "联系人手机")
private String linkMobile;
/**
*
*/
@ApiModelProperty(value = "")
private Integer isDelete;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 家庭资料表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_jtzl")
@Data
public class ZpglRcxxJtzl extends Model<ZpglRcxxJtzl> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名")
private String name;
/**
* 关系
*/
@ApiModelProperty(value = "关系")
private String relationship;
/**
* 工作(学习)单位
*/
@ApiModelProperty(value = "工作(学习)单位")
private String linkAddress;
/**
* 联系电话
*/
@ApiModelProperty(value = "联系电话")
private String linkMobile;
/**
*
*/
@ApiModelProperty(value = "")
private Integer isDelete;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 联系信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_lxxxb")
@Data
public class ZpglRcxxLxxxb extends Model<ZpglRcxxLxxxb> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 联系人姓名
*/
@ApiModelProperty(value = "联系人姓名")
private String linkName;
/**
* 联系人手机
*/
@ApiModelProperty(value = "联系人手机")
private String linkMobile;
/**
* 省名
*/
@ApiModelProperty(value = "省名")
private String provinceId;
/**
* 省名
*/
@ApiModelProperty(value = "省名")
private String province;
/**
* 区名
*/
@ApiModelProperty(value = "区名")
private String districtId;
/**
* 区名
*/
@ApiModelProperty(value = "区名")
private String district;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String cityId;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String city;
/**
* 联系人详细地址
*/
@ApiModelProperty(value = "联系人详细地址")
private String linkAddressDetail;
/**
*
*/
@ApiModelProperty(value = "")
private Integer isDelete;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.util.Date;
/**
* Offer发送记录表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-04-14 10:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_offer")
@Data
public class ZpglRcxxOffer extends Model<ZpglRcxxOffer> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 邮件标题
*/
@ApiModelProperty(value = "邮件标题")
private String title;
/**
* 部门
*/
@ApiModelProperty(value = "部门")
private String bumen;
/**
* 岗位
*/
@ApiModelProperty(value = "岗位")
private String gangwei;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名")
private String rcxxName;
/**
* 企业名称
*/
@ApiModelProperty(value = "企业名称")
private String companyName;
/**
* 联系人
*/
@ApiModelProperty(value = "联系人")
private String linkName;
/**
* 联系人电话
*/
@ApiModelProperty(value = "联系人电话")
private String linkPhone;
/**
* 联系人邮箱
*/
@ApiModelProperty(value = "联系人邮箱")
private String linkEmail;
/**
* 入职日期
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JSONField(format = "yyyy-MM-dd")
@ApiModelProperty(value = "入职日期")
private Date rzTime;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private Integer orgCode;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private String deleteFlag;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 收件人邮箱
*/
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "收件人邮箱")
private String receiverEmail;
/**
* 发件人邮箱
*/
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "发件人邮箱")
private String senderEmail;
}
package cn.timer.api.bean.zpgl;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 项目信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-04-1 10:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_project")
@Data
public class ZpglRcxxProject extends Model<ZpglRcxxProject> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JSONField(format = "yyyy-MM-dd")
@ApiModelProperty(value = "开始时间")
private Date startTime;
/**
* 结束时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty(value = "结束时间")
private Date endTime;
/**
* 项目名称
*/
@ApiModelProperty(value = "项目名称")
private String projectName;
/**
* 项目角色:职位名称/职位名
*/
@ApiModelProperty(value = "项目角色:职位名称/职位名")
private String job;
/**
* 工作描述:项目详情介绍
*/
@ApiModelProperty(value = "工作描述:项目详情介绍")
private String projectDescribe;
/**
* 个人在该项目负责的具体工作详情
*/
@ApiModelProperty(value = "个人在该项目负责的具体工作详情")
private String duty;
/**
* 项目地点城市或区域
*/
@ApiModelProperty(value = "项目地点城市或区域")
private String location;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 教育经历
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_study")
@Data
public class ZpglRcxxStudy extends Model<ZpglRcxxStudy> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 开始时间
*/
@ApiModelProperty(value = "开始时间")
private Date startTime;
/**
* 结束时间
*/
@ApiModelProperty(value = "结束时间")
private Date endTime;
/**
* 学校名称
*/
@ApiModelProperty(value = "学校名称")
private String schoolName;
/**
* 学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士
*/
@ApiModelProperty(value = "学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士")
private Integer education;
/**
* 专业名称
*/
@ApiModelProperty(value = "专业名称")
private String subject;
/**
*
*/
@ApiModelProperty(value = "")
private Integer isDelete;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 培训经验
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_rcxx_train")
@Data
public class ZpglRcxxTrain extends Model<ZpglRcxxTrain> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 培训中心
*/
@ApiModelProperty(value = "培训中心")
private String trainCompany;
/**
* 培训课程
*/
@ApiModelProperty(value = "培训课程")
private String trainSubject;
/**
* 培训开始时间
*/
@ApiModelProperty(value = "培训开始时间")
private Date startTime;
/**
* 培训结束时间
*/
@ApiModelProperty(value = "培训结束时间")
private Date endTime;
/**
* 培训内容
*/
@ApiModelProperty(value = "培训内容")
private String trainContent;
/**
*
*/
@ApiModelProperty(value = "")
private Integer isDelete;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理职位信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-21 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_wxgzpt_emp_rcxx")
@Data
public class ZpglWxgzptEmpRcxx extends Model<ZpglWxgzptEmpRcxx> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 员工档案表ID
*/
@ApiModelProperty(value = "员工档案表ID")
private Integer ygglMainEmpId;
/**
* 手机号
*/
@ApiModelProperty(value = "手机号")
private String mobile;
/**
* 微信openid
*/
@ApiModelProperty(value = "微信openid")
private String openid;
/**
* 微信unionid
*/
@ApiModelProperty(value = "微信unionid")
private String unionid;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private Integer orgCode;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理职级字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-17 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_zj")
@Data
public class ZpglZj extends Model<ZpglZj> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 职级名称
*/
@ApiModelProperty(value = "职级名称")
private String zjName;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 创建者
*/
@ApiModelProperty(value = "创建者")
private Integer createUserId;
/**
* 更新者
*/
@ApiModelProperty(value = "更新者")
private Integer updateUserId;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private Integer orgCode;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 招聘管理招聘渠道字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-28 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_zpqd")
@Data
public class ZpglZpqd extends Model<ZpglZpqd> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 工作地点
*/
@ApiModelProperty(value = "工作地点")
private String zpqdName;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 创建者
*/
@ApiModelProperty(value = "创建者")
private Integer createUserId;
/**
* 更新者
*/
@ApiModelProperty(value = "更新者")
private Integer updateUserId;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private Integer orgCode;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.bean.zpgl;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.Date;
/**
* 招聘管理职位信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "zpgl_zwxx")
@Data
public class ZpglZwxx extends Model<ZpglZwxx> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@Id
@GeneratedValue
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 职位名称
*/
@ApiModelProperty(value = "职位名称")
private String name;
/**
* 部门id
*/
@ApiModelProperty(value = "部门id")
private Integer deptId;
/**
* 职位类型ID
*/
@ApiModelProperty(value = "职位类型ID")
private Integer jobClassId;
/**
* 工作性质 1:全职 2:兼职 3:实习 4:退休返聘 5:劳务外派 6:劳务外包
*/
@ApiModelProperty(value = "工作性质 1:全职 2:兼职 3:实习 4:退休返聘 5:劳务外派 6:劳务外包")
private Integer workType;
/**
* 对应合工作地点字典ID
*/
@ApiModelProperty(value = "对应合工作地点字典ID")
private Integer zpglGzddId;
/**
* 招聘人数
*/
@ApiModelProperty(value = "招聘人数")
private Integer num;
/**
* 已入职人数
*/
@ApiModelProperty(value = "已入职人数")
private Integer entryNum;
/**
* 招聘原因
*/
@ApiModelProperty(value = "招聘原因")
private String reason;
/**
* 工作经验要求:1:1年一下 2:1-3年 3:3-5年 4:5-10年 5:10年以上
*/
@ApiModelProperty(value = "工作经验要求:1:1年一下 2:1-3年 3:3-5年 4:5-10年 5:10年以上")
private Integer experience;
/**
* 学历要求 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士
*/
@ApiModelProperty(value = "学历要求 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士")
private Integer education;
/**
* 薪资范围
*/
@ApiModelProperty(value = "薪资范围")
private Integer salaryMin;
/**
* 薪资范围
*/
@ApiModelProperty(value = "薪资范围")
private Integer salaryMax;
/**
* 最迟到岗时间
*/
@ApiModelProperty(value = "最迟到岗时间")
private Date registerTime;
/**
* 启动时间
*/
@ApiModelProperty(value = "启动时间")
private Date startTime;
/**
* 截止时间
*/
@ApiModelProperty(value = "截止时间")
private Date endTime;
/**
* 描述
*/
@ApiModelProperty(value = "描述")
private String description;
/**
* 紧急程度状态 1:一般 2:紧急
*/
@ApiModelProperty(value = "紧急程度状态 1:一般 2:紧急")
private Integer urgentStatus;
/**
* 状态 1:招聘中 2:停止招聘
*/
@ApiModelProperty(value = "状态 1:招聘中 2:停止招聘")
private Integer status;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private String orgCode;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 用户ID
*/
@ApiModelProperty(value = "用户ID")
private Integer userId;
/**
* 用户姓名
*/
@ApiModelProperty(value = "用户姓名")
private String userName;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
/**
* 省名
*/
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "省名")
private String province;
/**
* 区名
*/
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "区名")
private String district;
/**
* 城市
*/
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "城市")
private String city;
/**
* 工作地点
*/
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "工作地点")
private String gzddName;
}
......@@ -304,5 +304,65 @@ public interface JxglEnumInterface {
}
}
/**
* 招聘管理-人才信息:状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职
*/
@Getter
enum ResumeStatus implements JxglEnumInterface {
FILTERING(1, "待初筛"),
FILTER_PASS(2, "初筛通过"), INTERVIEW(3, "已安排面试"),
INTERVIEWED(4, "已面试"), INTERVIEW_PASS(5, "面试通过"),
EMPLOY(6, "拟录用"), OFFER(7, "已发Offer"),
ENTRYING(8, "待入职"), PASS_OUT(9, "9已淘汰"),ENTRY(10, "已入职");
private Integer type;
private String name;
ResumeStatus(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
* 招聘管理-面试流程:类型,1状态变更,2面试,3Offer,4讨论,5其他
*/
@Getter
enum MslcLogStatus implements JxglEnumInterface {
CHANGEING(1, "状态变更"),
INTERVIEW(2, "面试"), OFFER(3, "Offer"),
DISCUSS(4, "讨论"), OTHER(5, "其他");
private Integer type;
private String name;
MslcLogStatus(Integer type, String name) {
this.type = type;
this.name = name;
}
}
/**
* 招聘管理-面试流程:通知方式 1:全部 2:短信 3:邮件 4.微信公众号
*/
@Getter
enum NoticeWay implements JxglEnumInterface {
ALL(1, "全部"),
SHORT_MESSAGE(2, "短信"), EMAIL(3, "邮件"),
WECHAT_PUBLIC(4, "微信公众号");
private Integer type;
private String name;
NoticeWay(Integer type, String name) {
this.type = type;
this.name = name;
}
}
}
......@@ -19,10 +19,10 @@ import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
@Configuration
public class WebSecurityConfig implements WebMvcConfigurer {
@Resource
private UserMethodArgumentResolver userMethodArgumentResolver;
@Bean
public RedisSessionInterceptor getSessionInterceptor() {
return new RedisSessionInterceptor();
......@@ -30,7 +30,7 @@ public class WebSecurityConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 所有已api开头的访问都要进入RedilsSessionInterceptor拦截器进行登录验证,并排除login接口(全路径)。必须写成链式,分别设置的话会创建多个拦截器。
// 所有已api开头的访问都要进入RedisSessionInterceptor拦截器进行登录验证,并排除login接口(全路径)。必须写成链式,分别设置的话会创建多个拦截器。
// 必须写成getSessionInterceptor(),否则SessionInterceptor中的@Autowired会无效
//.excludePathPatterns("/")
registry.addInterceptor(getSessionInterceptor())
......@@ -53,17 +53,24 @@ public class WebSecurityConfig implements WebMvcConfigurer {
.excludePathPatterns("/druid/login*")
.excludePathPatterns("/app/**")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/check/**");
.excludePathPatterns("/zpgl/h5/**")
.excludePathPatterns("/yggl/mz/*")
.excludePathPatterns("/yggl/sysRegion")
.excludePathPatterns("/wxgzh/**")
.excludePathPatterns("/wxgzpt/**")
.excludePathPatterns("/MP_verify_VohzppEKB3VfeKxw.txt")
.excludePathPatterns("/evaluation/**")
.excludePathPatterns("/oss/uploadImg");
// registry.addInterceptor(getSessionInterceptor()).addPathPatterns("/**").excludePathPatterns("/swagger-ui*");
}
/**
* 配置消息转换器--这里我用的是alibaba 开源的 fastjson
* @param converters
*/
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// Iterator<HttpMessageConverter<?>> iterator = converters.iterator();
// while(iterator.hasNext()){
// HttpMessageConverter<?> converter = iterator.next();
......@@ -110,12 +117,12 @@ public class WebSecurityConfig implements WebMvcConfigurer {
converters.add(0,fastConverter);
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(userMethodArgumentResolver);
}
// @Override
// public void addCorsMappings(CorsRegistry registry) {
//// System.out.println("我是MyWebConfig跨域");
......
......@@ -53,6 +53,15 @@ public class SftpConfiguration {
@Value("${sftp.client.serverUrl}")
private String serverUrl;
@Value("${sftp.client.targetPath}")
private String targetPath;
@Value("${sftp.client.reservedName}")
private boolean reservedName;
@Value("${config-8timer.file-address.type}")
public String fileAddress;
/**
* @Title: getSftpSocket
* @Description: 获取连接
......
......@@ -7,11 +7,13 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.timer.api.utils.redis.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -169,6 +171,9 @@ public class LoginController {
@Autowired
private AliyunSMS aliyunSMS;
@Resource
private RedisUtil redisUtil;
// @Autowired
// private DataSourceTransactionManager transactionManager;
......@@ -253,9 +258,52 @@ public class LoginController {
String message = j.getString("Message");
if ("OK".equals(message)) {
session.setAttribute(phone, code);
// redisTemplate.set(phone, code);
// redisTemplate.expire(phone, 60);
// redisTemplate.set(phone, code);
// redisTemplate.expire(phone, 60);
return ResultUtil.data("发送验证码成功");
} else {
return ResultUtil.error("发送验证码失败");
}
} catch (Exception e) {
e.printStackTrace();
return ResultUtil.error("发送验证码失败");
}
}
/**
* 发送验证码
*
* @param entRegisterDto
* @return
*/
@PostMapping(value = "/sendcode1")
@ApiOperation(value = "1.发送验证码", httpMethod = "POST", notes = "接口发布说明")
@ApiOperationSupport(order = 1)
@Log(title = "发送验证码", businessType = BusinessType.SEND_CODE)
public Result<String> sendCode1(@RequestBody EntRegisterDto entRegisterDto) {
String phone = entRegisterDto.getPhone();
if (phone == null || StrUtil.hasBlank(phone)) {
return ResultUtil.error("请输入手机号");
}
// 6位随机数验证码
try {
Integer code = (int) ((Math.random() * 9 + 1) * 100000);
if (phone == null || "".equals(phone)) {
phone = entRegisterDto.getUsername();
entRegisterDto.setPhone(phone);
}
List<Object> list = aliyunSMS.authCode(entRegisterDto, entRegisterDto.getTc(), code);
Integer useId = (Integer) list.get(0);
JSONObject j = (JSONObject) list.get(1);
// 获取当前日期的字符串格式
String message = j.getString("Message");
if ("OK".equals(message)) {
session.setAttribute(phone, code);
redisUtil.set(phone, code,60*5);
return ResultUtil.data("发送验证码成功");
} else {
return ResultUtil.error("发送验证码失败");
......
......@@ -11,6 +11,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import cn.timer.api.controller.zpgl.sevice.ZpglService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.DeleteMapping;
......@@ -89,6 +90,8 @@ public class CrmController {
@Autowired
private CrmClientContactsMapper crmClientContactsMapper;
@Autowired
private ZpglService zpglService;
private Integer getEmpNum(UserBean userBean) {
return userBean.getEmpNum();
......@@ -369,12 +372,6 @@ public class CrmController {
// return ResultUtil.data(crmSeaRules, "获取成功");
// }
private SysRegion getSysRegion(Integer keyId) {
return SysRegion.builder().build()
.selectOne(new QueryWrapper<SysRegion>().lambda().eq(SysRegion::getKeyId, keyId).select(
SysRegion::getRegionName, SysRegion::getKeyId, SysRegion::getZipCode,
SysRegion::getRegionCode));
}
@PostMapping("addClient")
@Transactional
......@@ -384,14 +381,14 @@ public class CrmController {
Integer orgCode = getOrgCode(userBean);
crmClientData.setClientStatus(1);
crmClientData.setCreateUser(empNum);
SysRegion district = getSysRegion(crmClientData.getDistrictId());
SysRegion district = zpglService.getSysRegion(crmClientData.getDistrictId());
// crmClientData.setZipCode(district.getZipCode());
if (district != null) {
crmClientData.setDistrict(district.getRegionName());
SysRegion city = getSysRegion(district.getRegionCode());
SysRegion city = zpglService.getSysRegion(district.getRegionCode());
crmClientData.setCity(city.getRegionName());
crmClientData.setCityId(city.getKeyId());
SysRegion province = getSysRegion(city.getRegionCode());
SysRegion province = zpglService.getSysRegion(city.getRegionCode());
crmClientData.setProvinceId(province.getKeyId());
crmClientData.setProvince(province.getRegionName());
}
......
......@@ -59,17 +59,8 @@ public class DiskFilesController {
@Autowired
private DiskFilesService diskFilesService;
@Value("${sftp.client.root}")
private String root;
@Value("${sftp.client.targetPath}")
private String targetPath;
@Value("${sftp.client.reservedName}")
private boolean reservedName;
@Value("${sftp.client.serverUrl}")
private String serverUrl;
@Autowired
private SftpConfiguration config;
@ResponseBody
......@@ -112,12 +103,12 @@ public class DiskFilesController {
List<FileInfoDto> imageUrls;
try {
//上传文件到服务器
imageUrls = ftpService.uploadFile(targetPath, file, reservedName);
imageUrls = ftpService.uploadFile(file);
for (FileInfoDto dto : imageUrls) {
//新增资源上传文件
diskFiles.setFileType(dto.getFileSuffix());
//"/home/disk/123456.jpg"
diskFiles.setDiskPath(root + targetPath + "/" + dto.getFileName());
diskFiles.setDiskPath(config.getRoot() + config.getTargetPath() + "/" + dto.getFileName());
diskFiles.setUrlPath(dto.getUrlPath());
diskFiles.setTitle(dto.getResourceFileName());
diskFiles.setFileSize(dto.getFileSize());
......
package cn.timer.api.controller.disk.constant;
/**
* 文件存储地址常量
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-04-02 11:05:49
*/
public class FileAddressConstant {
/**
* aliyun-oss(阿里云OSS)
*/
public static final String ALIYUN_OSS = "aliyun-oss";
/**
* physics-oss(物理机器OSS)
*/
public static final String PHYSICS_OSS = "physics-oss";
}
package cn.timer.api.controller.oss;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import cn.timer.api.service.OSSService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
......@@ -20,6 +21,8 @@ import cn.timer.api.utils.aliyun.OSSUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.servlet.http.HttpServletRequest;
@Api(tags = "9.0阿里云OSS操作")
@Transactional
@RequestMapping(value = "/oss", produces = { "application/json" })
......@@ -176,4 +179,33 @@ public class OSSController {
return data;
}
@PostMapping(value = "/uploadImg")
@ApiOperation(value = "上传图片", httpMethod = "POST", notes = "接口发布说明")
@ResponseBody
public Result<String> uploadImg(@RequestParam(required = true) String param,@RequestParam(required = false) String moudle, @Param("file") MultipartFile file) throws Exception {
if (file == null || file.getSize() <= 0) {
return ResultUtil.error("上传的文件为空,请重新选择!");
}
Set<String> typeSet = new HashSet<>();
typeSet.add(".jpg");
typeSet.add(".png");
typeSet.add(".gif");
String fileName = file.getOriginalFilename();
int index = fileName.lastIndexOf(".");
String fileType = fileName.substring(index);
//校验图片类型是否有效
if (!typeSet.contains(fileType)) {
return ResultUtil.error("只能上传图片文件!");
}
JSONObject jsonObject = JSON.parseObject(param);
Integer id = jsonObject.getInteger("id");
String orgid = jsonObject.getString("orgid");
moudle=id+"";
Result<String> data = ossService.upload(1, moudle, file);
return data;
}
}
package cn.timer.api.controller.verify;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
*
* @author longys
* @date 2022/3/30 15:35
*/
@RestController
@RequestMapping("/")
public class VerifyController {
/**
* 网页授权域名
* 验证文件
* @param response
*/
@GetMapping("/MP_verify_VohzppEKB3VfeKxw.txt")
public void verify(HttpServletResponse response){
PrintWriter out = null;
try {
out = response.getWriter();
out.write("VohzppEKB3VfeKxw");
} catch (IOException e) {
e.printStackTrace();
} finally {
out.close();
}
}
}
/**
* @date 2019年11月15日
* @date 2019年11月15日
* @author 翁东州
* @方法中文名称:
*/
......@@ -105,7 +105,7 @@ import cn.timer.api.dao.kqmk.KqglAssoKqzdkfsMapper;
import cn.timer.api.dao.kqmk.KqglAssoLeaveBalanceMapper;
import cn.timer.api.dao.qyzx.QyzxEmpEntAssoMapper;
import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper;
import cn.timer.api.dao.yggl.YgMzDtoMapper;
import cn.timer.api.dao.clazz.NationClassMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dao.yggl.YgglMainLzbMapper;
import cn.timer.api.dao.zzgl.ZzglBmgwMMapper;
......@@ -124,7 +124,7 @@ import cn.timer.api.dto.yggl.YgKVDto;
import cn.timer.api.dto.yggl.YgQueryDto;
import cn.timer.api.dto.yggl.YgbintuDto;
import cn.timer.api.dto.yggl.YgglCartogramDto;
import cn.timer.api.dto.yggl.YgmzDto;
import cn.timer.api.bean.clazz.NationClass;
import cn.timer.api.dto.yggl.YgzzDto;
import cn.timer.api.utils.DateFormatUtils;
import cn.timer.api.utils.Md5;
......@@ -164,7 +164,7 @@ public class YgglController {
// weng(民族)
@Autowired
private YgMzDtoMapper ygMzDtoMapper;
private NationClassMapper nationClassMapper;
@Resource
private RedisUtil redisUtil;
......@@ -174,7 +174,7 @@ public class YgglController {
/**
* 获取员工档案
*
*
* @param
* @return
*/
......@@ -214,7 +214,7 @@ public class YgglController {
/**
* 根据岗位id获取员工档案部门岗位名称
*
*
* @param
* @return
*/
......@@ -244,20 +244,20 @@ public class YgglController {
return ResultUtil.data(bmgw);
}
@Autowired
private RealTimeUpdate realtimeupdate;
@Autowired
private KqglAssoKqzdkfsMapper kqglassokqzdkfsmapper;
@Value("${config-8timer.machine8timerUrl}")
public String mac_command; // 回调地址
@Autowired
private UserEquiRelationMapper userequirelationmapper;
/**
* 添加员工档案
*
*
* @param userBean
* @param addygdaDto
* @return
......@@ -275,27 +275,29 @@ public class YgglController {
String zjNum = addygdaDto.getZjNum();
Integer attgroupid = addygdaDto.getAttgroupid();//考勤组id
boolean isvalid = true;
switch (zjType) {
case 0:
isvalid = IdcardUtil.isValidCard15(zjNum) || IdcardUtil.isValidCard18(zjNum);
break;
case 1:
String[] strs = IdcardUtil.isValidCard10(zjNum);
if (strs == null) {
isvalid = false;
if(zjType != null){
switch (zjType) {
case 0:
isvalid = IdcardUtil.isValidCard15(zjNum) || IdcardUtil.isValidCard18(zjNum);
break;
case 1:
String[] strs = IdcardUtil.isValidCard10(zjNum);
if (strs == null) {
isvalid = false;
break;
}
String str2 = strs != null && strs.length > 2 ? strs[2] : "false";
isvalid = "澳门/香港".contains(strs[0]) && "true".equals(str2);
break;
case 2:
isvalid = IdcardUtil.isValidTWCard(zjNum);
break;
case 3:
isvalid = ReUtil.isMatch(Regular.PASSPORT1, zjNum) || ReUtil.isMatch(Regular.PASSPORT2, zjNum);
break;
default:
break;
}
String str2 = strs != null && strs.length > 2 ? strs[2] : "false";
isvalid = "澳门/香港".contains(strs[0]) && "true".equals(str2);
break;
case 2:
isvalid = IdcardUtil.isValidTWCard(zjNum);
break;
case 3:
isvalid = ReUtil.isMatch(Regular.PASSPORT1, zjNum) || ReUtil.isMatch(Regular.PASSPORT2, zjNum);
break;
default:
break;
}
// if (!isvalid) {
// return ResultUtil.error("证件格式不对!");
......@@ -306,7 +308,7 @@ public class YgglController {
Integer syq = addygdaDto.getSyq();
Integer sex = addygdaDto.getSex();
Integer bmgwId = addygdaDto.getBmgwId();
QyzxEmpLogin login = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper)
.eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one();
......@@ -329,17 +331,17 @@ public class YgglController {
ygglMainEmp = YgglMainEmp.builder().name(name).phone(phone).zjType(zjType).zjNum(zjNum).jobType(jobType)
.jobStatus(jobStatus.SHIYONG.getType()).rzTime(rzTime).syq(syq).sex(sex)
.empNum(login.getId()).orgCode(orgCode).bmgwId(bmgwId).customNum(customNum).build();
if(addygdaDto.getAttgroupid() != null) {
KqglAssoYhkqz.builder().kqzid(attgroupid).userid(login.getId()).qyid(userBean.getOrgCode()).build().insert();
List<KqglAssoKqzdkfs> kqjs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, addygdaDto.getAttgroupid()).eq(KqglAssoKqzdkfs::getType, 1));
for(KqglAssoKqzdkfs abp:kqjs) {
KqglAssoKqj kqj = KqglAssoKqj.builder().id(abp.getDkfsid()).build().selectById();
KqglAssoYhsb kqjry = KqglAssoYhsb.builder().build().selectOne(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, login.getId()).eq(KqglAssoYhsb::getKqjid, kqj.getId()));
if(kqjry == null) {
// YgglMainEmp yggluser = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).eq(YgglMainEmp::getEmpNum, login.getId()));
String url = mac_command+"/addUserName";
HttpHeaders headers = new HttpHeaders();
......@@ -350,37 +352,38 @@ public class YgglController {
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
KqglAssoYhsb.builder().build().delete(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, login.getId()).eq(KqglAssoYhsb::getKqjid, kqj.getId()));
KqglAssoYhsb uskqj = KqglAssoYhsb.builder().userId(login.getId()).kqjid(kqj.getId()).type(1).build();
UserEquiRelation isgly = userequirelationmapper.selectByuserId(login.getId());
if(isgly != null) {
uskqj.setIsGly(isgly.getIsGly());
}else {
uskqj.setIsGly(0);
}
if (!uskqj.insert())
if (!uskqj.insert())
return ResultUtil.error("操作失败--新增用户与设备关系");
}
}
}
if(syq != null){
if(syq == 0) {
ygglMainEmp.setZzTime(rzTime);
}else {
if(syq == 0) {
ygglMainEmp.setZzTime(rzTime);
}else {
String sdf = new SimpleDateFormat("yyyy-MM-dd").format(rzTime);
String sdf = new SimpleDateFormat("yyyy-MM-dd").format(rzTime);
String zztime = ClockInTool.requires_extra_times(sdf, syq, 4, 1);
String zztime = ClockInTool.requires_extra_times(sdf, syq, 4, 1);
ygglMainEmp.setZzTime(ClockInTool.strToDateLong(zztime));
ygglMainEmp.setZzTime(ClockInTool.strToDateLong(zztime));
}
}
ygglMainEmp.insert();
//假期规则初始化
String current_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
List<KqglAssoLeaveRules> rul = KqglAssoLeaveRules.builder().build().selectList(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, orgCode));
......@@ -391,14 +394,14 @@ public class YgglController {
KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(r.getId()).userid(ygglMainEmp.getEmpNum()).balanceDays(0.0).modifyUserid(userBean.getEmpNum()).modifyTimer(current_time).orgCode(userBean.getOrgCode()).build().insert();
}
}
try {
realtimeupdate.AttendanceTask(userBean.getOrgCode(), ygglMainEmp.getEmpNum(), 2,null);
} catch (ParseException e) {
e.printStackTrace();
}
return ResultUtil.data(ygglMainEmp, "添加员工成功!");
} else {
return ResultUtil.error("该手机号已被使用,请输入正确手机号");
......@@ -408,7 +411,7 @@ public class YgglController {
/**
* 修改员工档案
*
*
* @param
* @return
*/
......@@ -447,7 +450,7 @@ public class YgglController {
/**
* 员工搜索
*
*
* @param
* @return
*/
......@@ -480,13 +483,13 @@ public class YgglController {
return ResultUtil.data(ygglMainEmpPage);
}
@Autowired
private ZzglBmgwMService zzglBmgwMService;
/**
* 员工列表-分页
*
*
* @param
* @return
*/
......@@ -498,7 +501,7 @@ public class YgglController {
Integer bmgwId = empQuery.getBmgwid();
Page<YgglMainEmp> page = new Page<YgglMainEmp>(empQuery.getCurrentPage(), empQuery.getTotalPage());
List<Integer> empNums = CollUtil.toList();
if (bmgwId != null) {
List<YgglMainEmp> usersQuery = zzglBmgwMService.selectOtherlistent(userBean.getOrgCode(), bmgwId);
if (CollectionUtil.isNotEmpty(usersQuery)) {
......@@ -506,7 +509,7 @@ public class YgglController {
}else {
return ResultUtil.data(null);
}
if (CollectionUtil.isEmpty(empNums)) {
return ResultUtil.data(null);
}
......@@ -515,9 +518,23 @@ public class YgglController {
empQuery.setEmpNums(empNums);
IPage<YgglMainEmp> ygglMainEmpPage = ygglMainEmpMapper.selectME(page, empQuery);
List<YgglMainEmp> ygglMainEmps = ygglMainEmpPage.getRecords();
Map<String, Object> map = new HashMap<>(9);
// 在职
map.put("list", ygglMainEmpPage.getRecords());
// 在职
map.put("zaizhi", ygglMainEmpMapper.selectEmpCount(orgCode,1));
// 全职
map.put("quanzhi", ygglMainEmpMapper.selectEmpCount(orgCode,2));
// 试用期
map.put("shiyongqi", ygglMainEmpMapper.selectEmpCount(orgCode,3));
// 正式
map.put("zhengshi", ygglMainEmpMapper.selectEmpCount(orgCode,4));
// 待离职
map.put("dailizhi", ygglMainEmpMapper.selectEmpCount(orgCode,5));
// 已离职
map.put("yilizhi", ygglMainEmpMapper.selectEmpCount(orgCode,6));
return ResultUtil.data(page, ygglMainEmps);
return ResultUtil.data(ygglMainEmpPage, map);
}
/**
......@@ -553,7 +570,7 @@ public class YgglController {
// List<AddygdaDto> list = listAddygdaDto.stream()
// .filter(o -> o != null && !listPhone.contains(o.getPhone()) && !listzjNum.contains(o.getZjNum()))
// .collect(Collectors.toList());
// 过滤掉 导入数据中, listPhone已存在 的 phone 的对象集合
List<AddygdaDto> list = listAddygdaDto.stream()
.filter(o -> o != null && !listPhone.contains(o.getPhone())).collect(Collectors.toList());
......@@ -630,9 +647,9 @@ public class YgglController {
// 存放 插入失败的 数据
insertErrors.add(yme);
}
//假期规则初始化
String current_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
List<KqglAssoLeaveRules> rul = KqglAssoLeaveRules.builder().build().selectList(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, orgCode));
......@@ -643,8 +660,8 @@ public class YgglController {
KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(r.getId()).userid(login.getId()).balanceDays(0.0).modifyUserid(userBean.getEmpNum()).modifyTimer(current_time).orgCode(userBean.getOrgCode()).build().insert();
}
}
}
JSONObject obj = JSONUtil.createObj();
......@@ -660,7 +677,7 @@ public class YgglController {
/**
* 获取导入模板
*
*
* @param
* @return
* @throws IOException
......@@ -717,7 +734,7 @@ public class YgglController {
/**
* 导出员工
*
*
* @param
* @return
*/
......@@ -732,7 +749,7 @@ public class YgglController {
/**
* 获取员工教育经历表
*
*
* @param
* @return
*/
......@@ -759,7 +776,7 @@ public class YgglController {
/**
* 添加/修改员工教育经历表
*
*
* @param
* @return
*/
......@@ -775,7 +792,7 @@ public class YgglController {
/**
* 删除员工教育经历表
*
*
* @param
* @return
*/
......@@ -790,7 +807,7 @@ public class YgglController {
/**
* 获取员工培训经历信息表
*
*
* @param
* @return
*/
......@@ -818,7 +835,7 @@ public class YgglController {
/**
* 添加/修改员工培训经历信息表
*
*
* @param
* @return
*/
......@@ -835,7 +852,7 @@ public class YgglController {
/**
* 删除员工培训经历信息表
*
*
* @param
* @return
*/
......@@ -850,7 +867,7 @@ public class YgglController {
/**
* 获取员工工作经历表
*
*
* @param
* @return
*/
......@@ -877,7 +894,7 @@ public class YgglController {
/**
* 添加/修改员工工作经历表
*
*
* @param
* @return
*/
......@@ -893,7 +910,7 @@ public class YgglController {
/**
* 删除员工工作经历表
*
*
* @param
* @return
*/
......@@ -908,7 +925,7 @@ public class YgglController {
/**
* 获取员工职称信息表
*
*
* @param
* @return
*/
......@@ -935,7 +952,7 @@ public class YgglController {
/**
* 添加/修改员工职称信息表
*
*
* @param
* @return
*/
......@@ -951,7 +968,7 @@ public class YgglController {
/**
* 删除员工职称信息表
*
*
* @param
* @return
*/
......@@ -966,7 +983,7 @@ public class YgglController {
/**
* 获取员工证书证件表
*
*
* @param
* @return
*/
......@@ -993,7 +1010,7 @@ public class YgglController {
/**
* 添加/修改员工证书证件表
*
*
* @param
* @return
*/
......@@ -1009,7 +1026,7 @@ public class YgglController {
/**
* 删除员工证书证件表
*
*
* @param
* @return
*/
......@@ -1024,7 +1041,7 @@ public class YgglController {
/**
* 获取员工联系信息表
*
*
* @param
* @return
*/
......@@ -1051,7 +1068,7 @@ public class YgglController {
/**
* 添加/修改员工联系信息表
*
*
* @param
* @return
*/
......@@ -1067,7 +1084,7 @@ public class YgglController {
/**
* 删除员工联系信息表
*
*
* @param
* @return
*/
......@@ -1082,7 +1099,7 @@ public class YgglController {
/**
* 获取员工紧急联系人表
*
*
* @param
* @return
*/
......@@ -1109,7 +1126,7 @@ public class YgglController {
/**
* 添加/修改员工紧急联系人表
*
*
* @param
* @return
*/
......@@ -1125,7 +1142,7 @@ public class YgglController {
/**
* 删除员工紧急联系人表
*
*
* @param
* @return
*/
......@@ -1141,7 +1158,7 @@ public class YgglController {
// 获取工资卡信息
/**
* 获取员工工资卡信息
*
*
* @param
* @return
*/
......@@ -1167,7 +1184,7 @@ public class YgglController {
/**
* 添加/修改工资卡信息
*
*
* @param
* @return
*/
......@@ -1183,7 +1200,7 @@ public class YgglController {
/**
* 删除工资卡信息
*
*
* @param
* @return
*/
......@@ -1198,7 +1215,7 @@ public class YgglController {
/**
* 获取员工合同信息表
*
*
* @param
* @return
*/
......@@ -1225,7 +1242,7 @@ public class YgglController {
/**
* 添加/修改员工合同信息表
*
*
* @param
* @return
*/
......@@ -1241,7 +1258,7 @@ public class YgglController {
/**
* 删除员工合同信息表
*
*
* @param
* @return
*/
......@@ -1256,7 +1273,7 @@ public class YgglController {
/**
* 获取员工材料附件表
*
*
* @param
* @return
*/
......@@ -1283,7 +1300,7 @@ public class YgglController {
/**
* 添加/修改员工材料附件表
*
*
* @param
* @return
*/
......@@ -1299,7 +1316,7 @@ public class YgglController {
/**
* 删除员工材料附件表
*
*
* @param
* @return
*/
......@@ -1314,7 +1331,7 @@ public class YgglController {
/**
* 获取成长记录表
*
*
* @param
* @return
*/
......@@ -1341,7 +1358,7 @@ public class YgglController {
/**
* 添加/修改成长记录表
*
*
* @param
* @return
*/
......@@ -1357,7 +1374,7 @@ public class YgglController {
/**
* 获取单个离职员工信息(管)
*
*
* @param
* @return
*/
......@@ -1372,7 +1389,7 @@ public class YgglController {
/**
* 员工转正 0-1
*
*
* @param
* @return
*/
......@@ -1389,7 +1406,7 @@ public class YgglController {
/**
* 计划离职 type1-2
*
*
* @param
* @return
*/
......@@ -1403,11 +1420,11 @@ public class YgglController {
YgglMainEmp ygglMainEmp = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda()
.eq(YgglMainEmp::getEmpNum, empNum)
.eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()));
if (ygglMainEmp.getJobStatus() == jobStatus.LIZHIZHONG.getType()) {
return ResultUtil.success("你已在离职中");
}
YgglMainLzb ygglMainLzb = YgglMainLzb.builder().empNum(lzygQueryDto.getEmpNum()).build();
// 移动员工表数据到离职表
BeanUtil.copyProperties(ygglMainEmp, ygglMainLzb, "before_leaving_sts");
......@@ -1431,7 +1448,7 @@ public class YgglController {
/**
* 确认离职 type2-3
*
*
* @param
* @return
*/
......@@ -1469,11 +1486,11 @@ public class YgglController {
if (listEEA != null && listEEA.size() > 0) {
QyzxEmpLogin.builder().id(empNum).orgId(CollUtil.getFirst(listEEA).getOrgCode()).build().updateById();
}
QyzxEmpLogin.builder().build().delete(new QueryWrapper<QyzxEmpLogin>().lambda().eq(QyzxEmpLogin::getOrgId, userBean.getOrgCode()).eq(QyzxEmpLogin::getId, empNum));
KqglAssoYhkqz.builder().build().delete(new QueryWrapper<KqglAssoYhkqz>().lambda().eq(KqglAssoYhkqz::getUserid, empNum).eq(KqglAssoYhkqz::getQyid, userBean.getOrgCode()));
try {
realtimeupdate.AttendanceTask(userBean.getOrgCode(), empNum, 2,null);
......@@ -1481,13 +1498,13 @@ public class YgglController {
} catch (ParseException e) {
e.printStackTrace();
}
return ResultUtil.success("确认离职员工成功");
}
/**
* 放弃离职 type 2-1
*
*
* @param
* @return
*/
......@@ -1526,7 +1543,7 @@ public class YgglController {
/**
* 查询离职员工列表
*
*
* @param
* @return
*/
......@@ -1545,19 +1562,19 @@ public class YgglController {
/**
* 展示民族/展示所有民族
*
*
* @param
* @return
*/
@PostMapping(value = "/mz/{id}")
@ApiOperation(value = "60.展示民族/展示所有民族", httpMethod = "POST", notes = "接口发布说明")
@ApiOperationSupport(order = 60)
public Result<List<YgmzDto>> selectmzs(@CurrentUser UserBean userBean, @PathVariable Integer id) {
public Result<List<NationClass>> selectmzs(@PathVariable Integer id) {
if (id == null || id == 0) {
List<YgmzDto> allmz = new LambdaQueryChainWrapper<YgmzDto>(ygMzDtoMapper).list();
List<NationClass> allmz = new LambdaQueryChainWrapper<NationClass>(nationClassMapper).list();
return ResultUtil.data(allmz, "展示所有民族");
}
List<YgmzDto> mz = new LambdaQueryChainWrapper<YgmzDto>(ygMzDtoMapper).eq(YgmzDto::getNumber, id).list();
List<NationClass> mz = new LambdaQueryChainWrapper<NationClass>(nationClassMapper).eq(NationClass::getNumber, id).list();
return ResultUtil.data(mz, "展示该民族");
}
......@@ -1566,7 +1583,7 @@ public class YgglController {
/**
* 籍贯树
*
*
* @param
* @return
*/
......@@ -1582,7 +1599,7 @@ public class YgglController {
/**
* 查询员工列表
*
*
* @param
* @return
*/
......@@ -1590,7 +1607,7 @@ public class YgglController {
@ApiOperation(value = "62.查询员工列表", httpMethod = "GET", notes = "接口发布说明")
@ApiOperationSupport(order = 62)
public Result<List<YgQueryDto>> queryEmpMessage(@CurrentUser UserBean userBean) {
List<YgQueryDto> ygQueryDto = ygglMainEmpMapper.queryEmpMessage(userBean.getOrgCode(),null);
List<YgQueryDto> ygQueryDto = ygglMainEmpMapper.queryEmpMessage(userBean.getOrgCode());
for (YgQueryDto yg : ygQueryDto) {
if (StringUtil.isEmpty(yg.getHeadUrl())) {
yg.setHeadUrl("");
......@@ -1602,7 +1619,7 @@ public class YgglController {
/*************** 统计图 ***************/
/**
* 查询统计图
*
*
* @return 成功信息
*/
@GetMapping("/yggl")
......@@ -1645,7 +1662,7 @@ public class YgglController {
/**
* 员工信息统计图
*
*
* @return 成功信息(weng)
*/
@GetMapping("/Cartogram")
......@@ -1723,7 +1740,7 @@ public class YgglController {
/**
* 获取员工社保公积金
*
*
* @param
* @return
*/
......@@ -1739,7 +1756,7 @@ public class YgglController {
/**
* 获取员工社保公积金
*
*
* @param
* @return
*/
......@@ -1756,7 +1773,7 @@ public class YgglController {
/**
* 添加/修改员工社保公积金
*
*
* @param
* @return
*/
......@@ -1781,7 +1798,7 @@ public class YgglController {
/**
* 删除员工社保公积金
*
*
* @param
* @return
*/
......@@ -1823,7 +1840,7 @@ public class YgglController {
/**
* 获取登录人的相关信息
*
*
* @param
* @return
*/
......@@ -1858,22 +1875,22 @@ public class YgglController {
loginInfo.setGwId(gw);
loginInfo.setGwName(gwObj != null ? gwObj.getName() : "");
loginInfo.setEntryTime(ygglMainEmp.getRzTime());
if(ygglMainEmp.getSyq()!=null) {
// System.out.println(ygglMainEmp.getSyq());
Date expireDate = DateUtil.offsetMonth(ygglMainEmp.getRzTime(), ygglMainEmp.getSyq()); // 时间偏移
loginInfo.setRegularTime(expireDate);
loginInfo.setRegularTime(expireDate);
}else {
loginInfo.setRegularTime(new Date());
loginInfo.setRegularTime(new Date());
}
}
return ResultUtil.data(loginInfo);
}
/**
* 获取登录人和上级主管的empNum和名称
*
*
* @param
* @return
*/
......@@ -1881,16 +1898,16 @@ public class YgglController {
@ApiOperation(value = "70.获取登录人和上级主管的empNum和名称", httpMethod = "GET", notes = "接口发布说明")
@ApiOperationSupport(order = 70)
public Result<List<LoginerChargeDto>> loginerChargers(@CurrentUser UserBean userBean) {
List<LoginerChargeDto> loginerChargeDtos = new ArrayList<LoginerChargeDto>();
Integer orgCode = userBean.getOrgCode();
ArrayList<Integer> list = new ArrayList<Integer>();
Integer empNum = userBean.getEmpNum();
Integer gw = empNumConfirm(orgCode, empNum).getBmgwId();
if(gw != null && gw > 0) {
ZzglBmgwM buid = ZzglBmgwM.builder().id(gw).build().selectById();
List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper)
.eq(ZzglBmgwM::getOrgCode, orgCode).eq(ZzglBmgwM::getType, 0).list();
// 获取该员工的上级部门id 的数组list
......@@ -1906,7 +1923,7 @@ public class YgglController {
}
List<YgglMainEmp> ygglMainEmps = empNumsConfirm(orgCode, leaderList);
// List<LoginerChargeDto> loginerChargeDtos = new ArrayList<LoginerChargeDto>();
for (Integer leaderId : leaderList) {
for (YgglMainEmp m : ygglMainEmps) {
if(leaderId.equals(m.getEmpNum())) {
......@@ -1916,10 +1933,10 @@ public class YgglController {
loginerChargeDtos.add(new LoginerChargeDto(m.getEmpNum(), m.getName(), m.getHeadUrl()));
}
}
}
Collections.reverse(loginerChargeDtos);
if(loginerChargeDtos.size()>0) {
if((userBean.getEmpNum()).equals(loginerChargeDtos.get(loginerChargeDtos.size()-1).getLeaderEmpNum())) {
......@@ -1929,7 +1946,7 @@ public class YgglController {
return ResultUtil.data(loginerChargeDtos);
}
return ResultUtil.data(loginerChargeDtos);
}
// 根据传来的empNum获取该人员信息,没有则传全部
......@@ -1959,7 +1976,7 @@ public class YgglController {
/**
* 获取用户头像
*
*
* @param
* @return
*/
......@@ -1973,7 +1990,7 @@ public class YgglController {
List<YgglMainEmp> yglList = YgglMainEmp.builder().build()
.selectList(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode())
.in(YgglMainEmp::getEmpNum, empNumList)
.select(YgglMainEmp::getId,YgglMainEmp::getEmpNum, YgglMainEmp::getName, YgglMainEmp::getHeadUrl).orderByDesc(YgglMainEmp::getId));
.select(YgglMainEmp::getId, YgglMainEmp::getEmpNum, YgglMainEmp::getName, YgglMainEmp::getHeadUrl).orderByDesc(YgglMainEmp::getId));
for (YgglMainEmp yg : yglList) {
if (StringUtil.isEmpty(yg.getHeadUrl())) {
yg.setHeadUrl(CommonEnum.NULL_STR.getDesc());
......@@ -1981,51 +1998,51 @@ public class YgglController {
}
return ResultUtil.data(yglList);
}
@Autowired
private KqglAssoLeaveBalanceMapper kqglassoleavebalancemapper;
@GetMapping(value = "/address_book")
@ApiOperation(value = "APP 获取通讯录", httpMethod = "GET", notes = "接口发布说明")
@ApiOperationSupport(order = 70)
public Result<Object> Getaddressbook(@CurrentUser UserBean userBean) {
List<AdditionalDto> userlist = kqglassoleavebalancemapper.selectAdditionalList(userBean.getOrgCode());
return ResultUtil.data(userlist);
}
@PostMapping(value = "/modify_avatar")
@ApiOperation(value = "APP_修改头像", httpMethod = "POST", notes = "接口发布说明")
public Result<YgglAttaSbgjj> Modify_Avatar(@CurrentUser UserBean userBean, @RequestBody ModifyAvatarDto modifyavatardto) {
YgglMainEmp.builder().headUrl(modifyavatardto.getAvatar_path()).build().update(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getOrgCode, userBean.getOrgCode())
.eq(YgglMainEmp::getEmpNum, userBean.getEmpNum()));
QyzxEmpLogin.builder().headUrl(modifyavatardto.getAvatar_path()).build().update(new QueryWrapper<QyzxEmpLogin>().lambda().eq(QyzxEmpLogin::getOrgId, userBean.getOrgCode())
.eq(QyzxEmpLogin::getPhone, userBean.getQyzxEmpLogin().getPhone()));
return ResultUtil.success("上传成功");
}
@PostMapping(value = "/new_account")
@ApiOperation(value = "修改账号", httpMethod = "POST", notes = "接口发布说明")
public Result<Object> New_account(@CurrentUser UserBean userBean, @RequestBody UserInfo userinfo) {
YgglMainEmp sjhpd = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getPhone, userinfo.getPhone())
.eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()));
if(sjhpd == null) {
YgglMainEmp.builder().phone(userinfo.getPhone()).build().update(new QueryWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, userinfo.getName()).eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()));
QyzxEmpLogin.builder().phone(userinfo.getPhone()).build().update(new QueryWrapper<QyzxEmpLogin>().lambda().eq(QyzxEmpLogin::getId,userinfo.getName()).eq(QyzxEmpLogin::getOrgId, userBean.getOrgCode()));
return ResultUtil.success("修改成功");
}else {
return ResultUtil.error("该号码已存在");
}
}
@GetMapping(value = "/getUserList")
......
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.zpgl.ZpglCompany;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-18 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
public class ZpglCompanyController {
/**
* 招聘-合同公司字典
*
* @param
* @return
*/
@GetMapping(value = "/conpany")
@ApiOperation(value = "1.合同公司字典", httpMethod = "GET", notes = "合同公司字典")
@ApiOperationSupport(order = 1)
public Result<Object> fail(@CurrentUser UserBean userBean) {
try {
QueryWrapper<ZpglCompany> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ZpglCompany::getDeleteFlag, 0).eq(ZpglCompany::getOrgCode, userBean.getOrgCode());
List<ZpglCompany> zpglCompany = ZpglCompany.builder().build().selectList(queryWrapper);
return ResultUtil.data(zpglCompany, "查询成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-合同公司字典失败");
}
}
/**
* 招聘-添加合同公司
*
* @param
* @return
*/
@PostMapping(value = "/company/save")
@ApiOperation(value = "2.招聘-添加合同公司", httpMethod = "POST", notes = "招聘-添加合同公司")
@ApiOperationSupport(order = 2)
public Result<Object> save(@CurrentUser UserBean userBean, @RequestBody ZpglCompany zpglCompany) {
try {
zpglCompany.setCreateUserId(userBean.getEmpNum());
zpglCompany.setUpdateUserId(userBean.getEmpNum());
zpglCompany.setOrgCode(userBean.getOrgCode());
return zpglCompany.insert() ? ResultUtil.success() : ResultUtil.error();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-添加合同公司失败");
}
}
}
package cn.timer.api.controller.zpgl;
import cn.hutool.core.util.StrUtil;
import cn.timer.api.bean.kqgl.UserEquiRelation;
import cn.timer.api.bean.kqmk.*;
import cn.timer.api.bean.qyzx.QyzxEmpEntAsso;
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import cn.timer.api.bean.spmk.SpmkCustomApproval;
import cn.timer.api.bean.wechat.MessageTemplate;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.bean.zpgl.*;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enuminterface.JxglEnumInterface;
import cn.timer.api.config.enums.CommonEnum;
import cn.timer.api.config.enums.SysRoleType;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.controller.kqgl.ClockInTool;
import cn.timer.api.controller.kqgl.atttimer.RealTimeUpdate;
import cn.timer.api.controller.zpgl.sevice.ZpglService;
import cn.timer.api.controller.zpgl.sevice.ZpglWxgzptService;
import cn.timer.api.dao.kqgl.UserEquiRelationMapper;
import cn.timer.api.dao.kqmk.KqglAssoKqzdkfsMapper;
import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dao.zpgl.ZpglRcxxMapper;
import cn.timer.api.dto.template.InterviewNotice;
import cn.timer.api.dto.zpgl.ImportCandidateDto;
import cn.timer.api.dto.zpgl.ZpglRcxxDto;
import cn.timer.api.dto.zpgl.ZpglRcxxEntryDto;
import cn.timer.api.utils.Md5;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import cn.timer.api.utils.ZpglMessageTemplate;
import cn.timer.api.utils.query.BaseQuery;
import cn.timer.api.config.enuminterface.YgEnumInterface.jobStatus;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.yulichang.query.MPJQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.transaction.Transactional;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
@Slf4j
public class ZpglController {
@Value(value = "${config-8timer.init-password}")
private String pwd;
// 回调地址
@Value("${config-8timer.machine8timerUrl}")
public String mac_command;
@Autowired
private KqglAssoKqzdkfsMapper kqglassokqzdkfsmapper;
@Autowired
private QyzxEmpLoginMapper qyzxEmpLoginMapper;
@Autowired
private RealTimeUpdate realtimeupdate;
@Autowired
private UserEquiRelationMapper userequirelationmapper;
@Autowired
private YgglMainEmpMapper ygglMainEmpMapper;
@Autowired
private ZpglService zpglService;
@Autowired
private ZpglRcxxMapper zpglRcxxMapper;
@Autowired
private ZpglWxgzptService zpglWxgzptService;
/**
* 0应聘登记
*/
public static final int APPLY_STATUS = 0;
/**
* 1测评
*/
public static final int CP_STATUS = 1;
@Value("${h5.url}")
private String h5Url;
/**
* 招聘-招聘中
*
* @param
* @return
*/
@GetMapping(value = "/recruit")
@ApiOperation(value = "1.招聘列表", httpMethod = "GET", notes = "招聘列表")
@ApiOperationSupport(order = 1)
public Result<Object> recruit(@CurrentUser UserBean userBean, BaseQuery baseQuery,
@ApiParam("搜索关键字") @RequestParam(required = false) String query,
@ApiParam("职位ID") @RequestParam(required = false) Integer zpglZwxxId,
@ApiParam("状态") @RequestParam(required = false) Integer status) {
try {
Page<ZpglRcxx> page = new Page<ZpglRcxx>(baseQuery.getPageNum(), baseQuery.getPageSize());
QueryWrapper<ZpglRcxx> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ZpglRcxx::getOrgCode, userBean.getOrgCode()).eq(ZpglRcxx::getDeleteFlag, 0);
if (!StringUtils.isEmpty(zpglZwxxId) && zpglZwxxId > 0) {
queryWrapper.lambda().eq(ZpglRcxx::getZpglZwxxId, zpglZwxxId);
}
if (!StringUtils.isEmpty(query)) {
queryWrapper.lambda().and(qw -> qw.like(ZpglRcxx::getName, query).or().eq(ZpglRcxx::getMobile, query).or().eq(ZpglRcxx::getMail, query));
}
queryWrapper.lambda().eq(ZpglRcxx::getStatus, status).orderByDesc(ZpglRcxx::getUpdateTime);
IPage<ZpglRcxx> zpglRcxxPage = ZpglRcxx.builder().build().selectPage(page, queryWrapper);
List<ZpglRcxx> zpglRcxxs = page.getRecords();
zpglRcxxPage.getCurrent();
zpglRcxxPage.getPages();
zpglRcxxPage.getTotal();
zpglRcxxPage.getSize();
Map<String, Object> map = new HashMap<>(9);
map.put("zpglRcxxs", zpglRcxxs);
map.put("FILTERING", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.FILTERING.getType(), userBean.getOrgCode()));
map.put("FILTER_PASS", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.FILTER_PASS.getType(), userBean.getOrgCode()));
map.put("INTERVIEW", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.INTERVIEW.getType(), userBean.getOrgCode()));
map.put("INTERVIEWED", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.INTERVIEWED.getType(), userBean.getOrgCode()));
map.put("INTERVIEW_PASS", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.INTERVIEW_PASS.getType(), userBean.getOrgCode()));
map.put("EMPLOY", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.EMPLOY.getType(), userBean.getOrgCode()));
map.put("OFFER", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.OFFER.getType(), userBean.getOrgCode()));
map.put("ENTRYING", this.getNum(queryWrapper, JxglEnumInterface.ResumeStatus.ENTRYING.getType(), userBean.getOrgCode()));
return ResultUtil.data(zpglRcxxPage, map, "搜索成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-招聘列表失败");
}
}
/**
* 招聘-招聘中-职位信息
*
* @param
* @return
*/
@GetMapping(value = "/zwxx/{deleteFlag}")
@ApiOperation(value = "2.职位信息", httpMethod = "GET", notes = "职位信息deleteFlag:0")
@ApiOperationSupport(order = 2)
public Result<Object> zwxx(@CurrentUser UserBean userBean, @PathVariable Integer deleteFlag) {
try {
QueryWrapper<ZpglZwxx> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ZpglZwxx::getOrgCode, userBean.getOrgCode());
if (deleteFlag.intValue() == 1) {
queryWrapper.lambda().eq(ZpglZwxx::getDeleteFlag, 0);
}
List<ZpglZwxx> zpglZwxxs = ZpglZwxx.builder().build().selectList(queryWrapper);
return ResultUtil.data(zpglZwxxs, "查询成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-职位信息失败");
}
}
/**
* 招聘-变更人才信息状态
*
* @param
* @return
*/
@PostMapping(value = "/operation")
@ApiOperation(value = "3.招聘-变更人才信息状态", httpMethod = "POST", notes = "招聘-变更人才信息状态")
@ApiOperationSupport(order = 3)
public Result<Object> operation(@CurrentUser UserBean userBean, @RequestBody ZpglRcxxDto zpglRcxxDto) {
try {
return zpglService.updateZpglRcxx(userBean, zpglRcxxDto) ? ResultUtil.success() : ResultUtil.error();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-变更状态失败");
}
}
/**
* 添加员工档案
*
* @param userBean
* @param addygdaDto
* @return
*/
@PostMapping(value = "/addygda")
@ApiOperation(value = "4.招聘-确认入职添加员工档案", httpMethod = "POST", notes = "接口发布说明")
@ApiOperationSupport(order = 4)
public Result<Object> addygda(@CurrentUser UserBean userBean, @Validated @RequestBody ZpglRcxxEntryDto addygdaDto) {
try {
ZpglRcxx zpglRcxx = ZpglRcxx.builder().id(addygdaDto.getId()).build().selectById();
if (StringUtils.isEmpty(zpglRcxx)) {
return ResultUtil.error("确认入职添加员工档案失败");
}
Integer orgCode = userBean.getOrgCode();
//自定义工号
String customNum = addygdaDto.getCustomNum();
String name = addygdaDto.getName();
String phone = zpglRcxx.getMobile();
String zjNum = zpglRcxx.getIdCard();
//考勤组id
Integer attgroupid = addygdaDto.getAttgroupid();
Integer jobType = addygdaDto.getJobType();
Date rzTime = addygdaDto.getRzTime() == null ? new Date() : addygdaDto.getRzTime();
Integer syq = addygdaDto.getSyq();
Integer sex = addygdaDto.getSex();
Integer bmgwId = addygdaDto.getBmgwId();
ZpglRcxxDto zpglRcxxDto = new ZpglRcxxDto();
zpglRcxxDto.setId(zpglRcxx.getId());
zpglRcxxDto.setStatus(addygdaDto.getStatus());
zpglRcxxDto.setZpglZwxxId(zpglRcxx.getZpglZwxxId());
QyzxEmpLogin login = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper)
.eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one();
if (login == null) {
// 初始化密码 pwd
login = QyzxEmpLogin.builder().phone(phone).pw(Md5.md5(pwd))
.sts(CommonEnum.U_STS_ON.getType()).orgId(userBean.getOrgCode()).username(name).build();
if (!login.insert()) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultUtil.error("添加员工登录表失败,请检查输入信息");
}
}
YgglMainEmp ygglMainEmp = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda()
.eq(YgglMainEmp::getPhone, phone).eq(YgglMainEmp::getOrgCode, orgCode));
if (!StringUtils.isEmpty(ygglMainEmp)) {
return ResultUtil.error("该手机号已被使用,请输入正确手机号");
}
QyzxEmpEntAsso.builder().empNum(login.getId()).orgCode(orgCode).userType(SysRoleType.U_TYPE_EMP.getType())
.status(CommonEnum.U_STS_ON.getType()).build().insert();
ygglMainEmp = YgglMainEmp.builder().name(name).phone(phone).zjType(addygdaDto.getZjType()).zjNum(zjNum).jobType(jobType)
.jobStatus(jobStatus.SHIYONG.getType()).rzTime(rzTime).syq(syq).sex(sex)
.empNum(login.getId()).orgCode(orgCode).bmgwId(bmgwId).customNum(customNum).build();
if (addygdaDto.getAttgroupid() != null) {
KqglAssoYhkqz.builder().kqzid(attgroupid).userid(login.getId()).qyid(userBean.getOrgCode()).build().insert();
List<KqglAssoKqzdkfs> kqjs = kqglassokqzdkfsmapper.selectList(new QueryWrapper<KqglAssoKqzdkfs>().lambda().eq(KqglAssoKqzdkfs::getKqzId, addygdaDto.getAttgroupid()).eq(KqglAssoKqzdkfs::getType, 1));
for (KqglAssoKqzdkfs abp : kqjs) {
KqglAssoKqj kqj = KqglAssoKqj.builder().id(abp.getDkfsid()).build().selectById();
KqglAssoYhsb kqjry = KqglAssoYhsb.builder().build().selectOne(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, login.getId()).eq(KqglAssoYhsb::getKqjid, kqj.getId()));
if (kqjry == null) {
String url = mac_command + "/addUserName";
HttpHeaders headers = new HttpHeaders();
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("devId", kqj.getCode());
params.add("userId", login.getId());
params.add("userName", ygglMainEmp.getName());
RestTemplate restTemplate = new RestTemplate();
HttpEntity httpEntity = new HttpEntity(params, headers);
ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
KqglAssoYhsb.builder().build().delete(new QueryWrapper<KqglAssoYhsb>().lambda().eq(KqglAssoYhsb::getUserId, login.getId()).eq(KqglAssoYhsb::getKqjid, kqj.getId()));
KqglAssoYhsb uskqj = KqglAssoYhsb.builder().userId(login.getId()).kqjid(kqj.getId()).type(1).build();
UserEquiRelation isgly = userequirelationmapper.selectByuserId(login.getId());
if (isgly != null) {
uskqj.setIsGly(isgly.getIsGly());
} else {
uskqj.setIsGly(0);
}
if (!uskqj.insert()) {
return ResultUtil.error("操作失败--新增用户与设备关系");
}
}
}
}
if (syq == 0) {
ygglMainEmp.setZzTime(rzTime);
} else {
String sdf = new SimpleDateFormat("yyyy-MM-dd").format(rzTime);
String zztime = ClockInTool.requires_extra_times(sdf, syq, 4, 1);
ygglMainEmp.setZzTime(ClockInTool.strToDateLong(zztime));
}
ygglMainEmp.insert();
//假期规则初始化
String current_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
List<KqglAssoLeaveRules> rul = KqglAssoLeaveRules.builder().build().selectList(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, orgCode));
for (KqglAssoLeaveRules r : rul) {
if (r.getLeaveBalance() == 0) {
KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(r.getId()).userid(ygglMainEmp.getEmpNum()).balanceDays(-1).modifyUserid(userBean.getEmpNum()).modifyTimer(current_time).orgCode(userBean.getOrgCode()).build().insert();
} else {
KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(r.getId()).userid(ygglMainEmp.getEmpNum()).balanceDays(0.0).modifyUserid(userBean.getEmpNum()).modifyTimer(current_time).orgCode(userBean.getOrgCode()).build().insert();
}
}
/**
* 职位信息已入职人数+1
* 招聘-变更人才信息状态
* 添加面试流程记录
* 维护微信公众平台表
*/
zpglService.updateZpglOther(userBean, zpglRcxxDto, ygglMainEmp.getEmpNum());
try {
realtimeupdate.AttendanceTask(userBean.getOrgCode(), ygglMainEmp.getEmpNum(), 2, null);
} catch (ParseException e) {
e.printStackTrace();
}
return ResultUtil.success("确认入职成功!");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-确认入职失败");
}
}
/**
* 招聘-已淘汰
*
* @param
* @return
*/
@GetMapping(value = "/recruit/fail")
@ApiOperation(value = "5.招聘-已淘汰列表", httpMethod = "GET", notes = "招聘-已淘汰列表")
@ApiOperationSupport(order = 5)
public Result<Object> recruitFail(@CurrentUser UserBean userBean, BaseQuery baseQuery,
@ApiParam("搜索关键字") @RequestParam(required = false) String query,
@ApiParam("职位ID") @RequestParam(required = false) Integer zpglZwxxId,
@ApiParam("状态") @RequestParam(required = false) Integer status,
@ApiParam("排序") @RequestParam(required = false) Integer orderBy) {
try {
Page<ZpglRcxx> page = new Page<ZpglRcxx>(baseQuery.getPageNum(), baseQuery.getPageSize());
MPJQueryWrapper<ZpglRcxx> queryWrapper = new MPJQueryWrapper<>();
queryWrapper.selectAll(ZpglRcxx.class).select("zf.fail_cause")
.leftJoin("zpgl_fail zf on t.zpgl_fail_id = zf.id");
queryWrapper.eq("t.org_code", userBean.getOrgCode()).eq("t.delete_flag", 0).eq("zf.org_code", userBean.getOrgCode());
if (!StringUtils.isEmpty(zpglZwxxId) && zpglZwxxId > 0) {
queryWrapper.eq("t.zpgl_zwxx_id", zpglZwxxId);
}
if (!StringUtils.isEmpty(query)) {
queryWrapper.and(qw -> qw.like("t.name", query).or().eq("t.mobile", query).or().eq("t.mail", query));
}
if (!StringUtils.isEmpty(status)) {
queryWrapper.eq("t.status", 9);
queryWrapper.eq("zf.zpgl_rcxx_status", status);
} else {
queryWrapper.eq("t.ifrck", 1);
}
if (!StringUtils.isEmpty(orderBy)) {
// 排序 1最近跟进时间 2最近入库时间 3最早入库时间
if (orderBy.intValue() == 1) {
queryWrapper.orderByDesc("t.update_time");
} else if (orderBy.intValue() == 2) {
queryWrapper.orderByDesc("t.ifrck_time");
} else if (orderBy.intValue() == 3) {
queryWrapper.orderByAsc("t.ifrck_time");
}
}
IPage<ZpglRcxx> zpglRcxxPage = zpglRcxxMapper.selectJoinPage(page, ZpglRcxx.class, queryWrapper);
List<ZpglRcxx> zpglRcxxs = page.getRecords();
zpglRcxxPage.getCurrent();
zpglRcxxPage.getPages();
zpglRcxxPage.getTotal();
zpglRcxxPage.getSize();
return ResultUtil.data(zpglRcxxPage, zpglRcxxs, "搜索成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-已淘汰,人才库列表失败");
}
}
/**
* 招聘-移入/出人才库
*
* @param
* @return
*/
@PostMapping(value = "/remove/{id}/{ifrck}")
@ApiOperation(value = "6.招聘-移入/出人才库", httpMethod = "GET", notes = "招聘-移入/出人才库")
@ApiOperationSupport(order = 6)
public Result<Object> remove(@CurrentUser UserBean userBean, @PathVariable Integer id, @PathVariable Integer ifrck) {
try {
return ZpglRcxx.builder().id(id).ifrck(ifrck).ifrckTime(new Date()).userId(userBean.getEmpNum()).build().updateById() ? ResultUtil.success("操作成功") : ResultUtil.error("操作失败");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-删除人才信息失败");
}
}
/**
* 招聘-导入候选人简历
*
* @param userBean
* @param file
* @param request
* @return
*/
@ResponseBody
@PostMapping("/resume_import_candidate")
@ApiOperation(value = "7.招聘-导入候选人简历", httpMethod = "POST", notes = "招聘-导入候选人简历")
@ApiOperationSupport(order = 7)
public Result<Object> resumeImportCandidate(@CurrentUser UserBean userBean, @RequestParam(required = true) MultipartFile file,
@ApiParam("招聘渠道ID") @RequestParam(required = false) Integer zpglZpqdId,
@ApiParam("职位信息Id") @RequestParam(required = true) Integer zpglZwxxId,
@ApiParam("状态") @RequestParam(required = true) Integer status, HttpServletRequest request) {
try {
ImportCandidateDto importCandidateDto = new ImportCandidateDto();
importCandidateDto.setStatus(status);
importCandidateDto.setZpglZpqdId(zpglZpqdId);
importCandidateDto.setZpglZwxxId(zpglZwxxId);
// 获取文件 文档类型,目前支持pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif格式
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
if (StringUtils.isEmpty(suffix)) {
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
if ("pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif".indexOf(suffix) == -1) {
return ResultUtil.error("导入简历失败,目前支持pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif格式~");
}
importCandidateDto.setSuffix(suffix);
// return zpglService.addResumeImportCandidate(userBean, file, importCandidateDto);
return zpglService.addCandidateByResumeSDK(userBean, file, importCandidateDto);
} catch (CustomException e) {
e.printStackTrace();
throw e;
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-导入候选人简历失败");
}
}
/**
* 招聘-更改招聘职位
*
* @param
* @return
*/
@PostMapping(value = "/edit/zwxx")
@ApiOperation(value = "8.招聘-更改招聘职位", httpMethod = "POST", notes = "招聘-更改招聘职位")
@ApiOperationSupport(order = 8)
public Result<Object> deitZwxx(@CurrentUser UserBean userBean, @RequestBody ZpglRcxxDto zpglRcxxDto) {
try {
return zpglService.updateZpglRcxxZwxx(userBean, zpglRcxxDto) ? ResultUtil.success("更改招聘职位成功") : ResultUtil.error("更改招聘职位失败");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-更改招聘职位失败");
}
}
/**
* 招聘-标准简历信息
*
* @param
* @return
*/
@GetMapping(value = "/standard/recruit")
@ApiOperation(value = "9.招聘-标准简历信息", httpMethod = "GET", notes = "招聘-标准简历信息")
@ApiOperationSupport(order = 9)
public Result<Object> standardRecruit(@CurrentUser UserBean userBean,
@ApiParam("人才信息ID") @RequestParam(required = false) Integer zpglRcxxId) {
try {
ZpglRcxx zpglRcxx = ZpglRcxx.builder().id(zpglRcxxId).build().selectById();
// 工作经验
List<ZpglRcxxExperience> zpglRcxxExperiences = ZpglRcxxExperience.builder().build().selectList(
new QueryWrapper<ZpglRcxxExperience>().lambda().eq(ZpglRcxxExperience::getZpglRcxxId, zpglRcxxId)
.eq(ZpglRcxxExperience::getIsDelete, 0).orderByDesc(ZpglRcxxExperience::getEndTime)
);
// 教育经历
List<ZpglRcxxStudy> zpglRcxxStudys = ZpglRcxxStudy.builder().build().selectList(
new QueryWrapper<ZpglRcxxStudy>().lambda().eq(ZpglRcxxStudy::getZpglRcxxId, zpglRcxxId)
.eq(ZpglRcxxStudy::getIsDelete, 0).orderByDesc(ZpglRcxxStudy::getEndTime)
);
// 项目经历
List<ZpglRcxxProject> zpglRcxxProjects = ZpglRcxxProject.builder().build().selectList(
new QueryWrapper<ZpglRcxxProject>().lambda().eq(ZpglRcxxProject::getZpglRcxxId, zpglRcxxId)
.eq(ZpglRcxxProject::getDeleteFlag, 0).orderByDesc(ZpglRcxxProject::getEndTime)
);
// 培训经验
List<ZpglRcxxTrain> zpglRcxxTrains = ZpglRcxxTrain.builder().build().selectList(
new QueryWrapper<ZpglRcxxTrain>().lambda().eq(ZpglRcxxTrain::getZpglRcxxId, zpglRcxxId)
.eq(ZpglRcxxTrain::getIsDelete, 0).orderByDesc(ZpglRcxxTrain::getEndTime)
);
// FPA性格测评数据
ZpglDtk zpglDtk = ZpglDtk.builder().build().selectOne(new QueryWrapper<ZpglDtk>().lambda().eq(ZpglDtk::getZpglRcxxId, zpglRcxxId));
// offer
ZpglRcxxOffer zpglRcxxOffer = ZpglRcxxOffer.builder().build().selectOne(new QueryWrapper<ZpglRcxxOffer>().lambda().eq(ZpglRcxxOffer::getZpglRcxxId, zpglRcxxId).eq(ZpglRcxxOffer::getDeleteFlag, 0).orderByDesc(ZpglRcxxOffer::getCreateTime));
Map<String, Object> map = new HashMap<>(7);
map.put("zpglRcxx", zpglRcxx);
map.put("zpglRcxxExperiences", zpglRcxxExperiences);
map.put("zpglRcxxStudys", zpglRcxxStudys);
map.put("zpglRcxxProjects", zpglRcxxProjects);
map.put("zpglRcxxTrains", zpglRcxxTrains);
map.put("zpglDtk", zpglDtk);
map.put("zpglRcxxOffer", zpglRcxxOffer);
return ResultUtil.data(map, "搜索成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("获取招聘-标准简历信息失败");
}
}
/**
* 招聘-发起录用审批选择
*
* @param
* @return
*/
@GetMapping(value = "/custom_approval")
@ApiOperation(value = "10.招聘-发起录用审批选择", httpMethod = "GET", notes = "招聘-发起录用审批选择")
@ApiOperationSupport(order = 10)
public Result<Object> customApproval(@CurrentUser UserBean userBean) {
try {
List<SpmkCustomApproval> spmkCustomApprovals = SpmkCustomApproval.builder().build().selectList(
new QueryWrapper<SpmkCustomApproval>().select("id", "name")
.lambda().eq(SpmkCustomApproval::getOrgCode, userBean.getOrgCode())
.eq(SpmkCustomApproval::getAssoType, 10)
);
return ResultUtil.data(spmkCustomApprovals);
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("获取招聘-发起录用审批选择信息失败");
}
}
/**
* 招聘-发起应聘登记或者测评 status:0应聘登记,1测评
*
* @param
* @return
*/
@GetMapping(value = "/send_apply_cp/{id}/{status}")
@ApiOperation(value = "11.招聘-发起应聘登记或者测评", httpMethod = "GET", notes = "status:0应聘登记,1测评")
@ApiOperationSupport(order = 11)
public Result<Object> sendApplyOrCp(@CurrentUser UserBean userBean, @PathVariable Integer id, @PathVariable Integer status) {
try {
ZpglRcxx zpglRcxx = ZpglRcxx.builder().id(id).build().selectById();
if (StringUtils.isEmpty(zpglRcxx)) {
log.error("招聘-发起应聘登记或测评:id={} 空数据", id);
return ResultUtil.error("操作失败~");
}
InterviewNotice interviewNotice = new InterviewNotice();
ZpglZwxx zpglZwxx = ZpglZwxx.builder().id(zpglRcxx.getZpglZwxxId()).build().selectById();
if (!StringUtils.isEmpty(zpglZwxx)) {
interviewNotice.setZpglZwxxName(zpglZwxx.getName());
}
interviewNotice.setName(zpglRcxx.getName());
interviewNotice.setEmail(zpglRcxx.getMail());
//公众号类型 1:8小时企业管理 2:优领人才网
interviewNotice.setWxgzhType(1);
//0 即时发送,1 定时发送
interviewNotice.setTiming(0);
interviewNotice.setType(JxglEnumInterface.NoticeWay.WECHAT_PUBLIC.getType());
interviewNotice.setInterviewTime(new Date());
// 通知面试者
interviewNotice.setZpglRcxxId(zpglRcxx.getId());
interviewNotice.setMobile(zpglRcxx.getMobile());
interviewNotice.setNoticeName(userBean.getQyzxEmpLogin().getUsername());
interviewNotice.setRemark("请点击详情填写");
interviewNotice.setTemplateId(MessageTemplate.TEMPLATE_ID_TO_INTERVIEWE);
// 发送应聘登记表消息
if (APPLY_STATUS == status.intValue()) {
interviewNotice.setContentNotice(ZpglMessageTemplate.TO_APPLY);
interviewNotice.setContentStr(ZpglMessageTemplate.print(ZpglMessageTemplate.THANKS, new String[]{zpglRcxx.getName(),interviewNotice.getZpglZwxxName()}));
interviewNotice.setUrl(h5Url + "?mobile=" + zpglRcxx.getMobile() + "&orgId=" + userBean.getOrgCode() + "#/basicInfo");
// 发送FPA测评消息
} else {
interviewNotice.setContentNotice(ZpglMessageTemplate.TO_CEPIN);
interviewNotice.setContentStr(ZpglMessageTemplate.print(ZpglMessageTemplate.THANKS, new String[]{zpglRcxx.getName(),interviewNotice.getZpglZwxxName()}));
interviewNotice.setUrl(h5Url + "/?zpglRcxxId=" + zpglRcxx.getId() + "#/cpxt");
}
log.info("TO_INTERVIEWEE sendApplyOrCePin MessageQueue info:{}", zpglWxgzptService.sendApplyOrCePin(interviewNotice));
return ResultUtil.success();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("操作失败");
}
}
/**
* 招聘-逻辑删除人才信息
*
* @param
* @return
*/
@PostMapping(value = "/edit/{id}")
@ApiOperation(value = "12.招聘-删除人才信息", httpMethod = "GET", notes = "删除人才信息")
@ApiOperationSupport(order = 12)
public Result<Object> edit(@CurrentUser UserBean userBean, @PathVariable Integer id) {
try {
return ZpglRcxx.builder().id(id).deleteFlag(1).userId(userBean.getEmpNum()).build().updateById() ? ResultUtil.success("操作成功") : ResultUtil.error("操作失败");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-删除人才信息失败");
}
}
/**
* 招聘-人才库
*
* @param
* @return
*/
@GetMapping(value = "/recruit/envelope")
@ApiOperation(value = "13.招聘-人才库列表", httpMethod = "GET", notes = "招聘-人才库列表")
@ApiOperationSupport(order = 13)
public Result<Object> envelope(@CurrentUser UserBean userBean, BaseQuery baseQuery,
@ApiParam("搜索关键字") @RequestParam(required = false) String query,
@ApiParam("职位ID") @RequestParam(required = false) Integer zpglZwxxId,
@ApiParam("状态") @RequestParam(required = false) Integer status,
@ApiParam("排序") @RequestParam(required = false) Integer orderBy) {
try {
Page<ZpglRcxx> page = new Page<ZpglRcxx>(baseQuery.getPageNum(), baseQuery.getPageSize());
QueryWrapper<ZpglRcxx> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("org_code", userBean.getOrgCode()).eq("delete_flag", 0);
if (!StringUtils.isEmpty(zpglZwxxId) && zpglZwxxId > 0) {
queryWrapper.eq("zpgl_zwxx_id", zpglZwxxId);
}
if (!StringUtils.isEmpty(query)) {
queryWrapper.and(qw -> qw.like("name", query).or().eq("mobile", query).or().eq("mail", query));
}
queryWrapper.eq("ifrck", 1);
if (!StringUtils.isEmpty(orderBy)) {
// 排序 1最近跟进时间 2最近入库时间 3最早入库时间
if (orderBy.intValue() == 1) {
queryWrapper.orderByDesc("update_time");
} else if (orderBy.intValue() == 2) {
queryWrapper.orderByDesc("ifrck_time");
} else if (orderBy.intValue() == 3) {
queryWrapper.orderByAsc("ifrck_time");
}
}else {
queryWrapper.orderByDesc("update_time");
}
IPage<ZpglRcxx> zpglRcxxPage = ZpglRcxx.builder().build().selectPage(page, queryWrapper);
List<ZpglRcxx> zpglRcxxs = page.getRecords();
for (ZpglRcxx entity : zpglRcxxs) {
if(!StringUtils.isEmpty(entity.getZpglFailId()) && entity.getZpglFailId()>0){
ZpglFail fail = ZpglFail.builder().id(entity.getZpglFailId()).build().selectById();
entity.setFailCause(fail.getFailCause());
}
}
zpglRcxxPage.getCurrent();
zpglRcxxPage.getPages();
zpglRcxxPage.getTotal();
zpglRcxxPage.getSize();
return ResultUtil.data(zpglRcxxPage, zpglRcxxs, "搜索成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-已淘汰,人才库列表失败");
}
}
/**
* 获取统计数据
*
* @param queryWrapper
* @param status
* @param orgCode
* @return
*/
private Integer getNum(QueryWrapper<ZpglRcxx> queryWrapper, Integer status, Integer orgCode) {
queryWrapper.clear();
queryWrapper.lambda().eq(ZpglRcxx::getOrgCode, orgCode).eq(ZpglRcxx::getDeleteFlag, 0);
return ZpglRcxx.builder().build().selectCount(queryWrapper.lambda().eq(ZpglRcxx::getStatus, status));
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.zpgl.ZpglCptk;
import cn.timer.api.bean.zpgl.ZpglDtk;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author longys
* @date 2022/4/14 15:48
*/
@Api(tags = "性格颜色测评")
@RestController
@RequestMapping(value = "/evaluation")
public class ZpglEvaluationController {
@ApiOperation(value = "获取测评题库", httpMethod = "GET", notes = "获取测评题库")
@RequestMapping("/get_cptk_list")
public Result<List<ZpglCptk>> getCptkList(){
List<ZpglCptk> zpglCptks = ZpglCptk.builder().build()
.selectList(new QueryWrapper<ZpglCptk>().lambda().orderByAsc(ZpglCptk::getSort));
return ResultUtil.data(zpglCptks);
}
@ApiOperation(value = "提交测评", httpMethod = "POST", notes = "提交测评")
@RequestMapping("/add_evaluation")
public Result<Object> addEvaluation(@RequestBody ZpglDtk zpglDtk){
ZpglDtk dtk = zpglDtk.selectOne(new QueryWrapper<ZpglDtk>()
.lambda().eq(ZpglDtk::getZpglRcxxId, zpglDtk.getZpglRcxxId()));
if (dtk!=null){
return ResultUtil.error("你已提交测评!");
}
try {
zpglDtk.insert();
} catch (Exception e) {
e.printStackTrace();
return ResultUtil.error();
}
return ResultUtil.success();
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.zpgl.ZpglFail;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
public class ZpglFailController {
/**
* 招聘-淘汰原因字典
*
* @param
* @return
*/
@GetMapping(value = "/fail")
@ApiOperation(value = "1.淘汰原因字典", httpMethod = "GET", notes = "淘汰原因字典")
@ApiOperationSupport(order = 1)
public Result<Object> fail(@CurrentUser UserBean userBean, @ApiParam("招聘状态") @RequestParam(required = false) Integer status) {
try {
QueryWrapper<ZpglFail> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ZpglFail::getDeleteFlag, 0).eq(ZpglFail::getOrgCode, userBean.getOrgCode()).eq(ZpglFail::getZpglRcxxStatus, status);
List<ZpglFail> zpglFail = ZpglFail.builder().build().selectList(queryWrapper);
return ResultUtil.data(zpglFail, "查询成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-淘汰原因字典失败");
}
}
/**
* 招聘-添加淘汰原因
*
* @param
* @return
*/
@PostMapping(value = "/save")
@ApiOperation(value = "2.招聘-添加淘汰原因", httpMethod = "POST", notes = "招聘-添加淘汰原因")
@ApiOperationSupport(order = 2)
public Result<Object> save(@CurrentUser UserBean userBean, @RequestBody ZpglFail zpglFail) {
try {
zpglFail.setCreateUserId(userBean.getEmpNum());
zpglFail.setUpdateUserId(userBean.getEmpNum());
zpglFail.setOrgCode(userBean.getOrgCode());
return zpglFail.insert() ? ResultUtil.success() : ResultUtil.error();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-添加淘汰原因失败");
}
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.clazz.SysRegion;
import cn.timer.api.bean.zpgl.ZpglGzdd;
import cn.timer.api.bean.zpgl.ZpglZj;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.controller.zpgl.sevice.ZpglService;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-18 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
public class ZpglGzddController {
@Autowired
private ZpglService zpglService;
/**
* 招聘-工作地点
*
* @param
* @return
*/
@GetMapping(value = "/gzdd")
@ApiOperation(value = "1.工作地点字典", httpMethod = "GET", notes = "工作地点字典")
@ApiOperationSupport(order = 1)
public Result<Object> fail(@CurrentUser UserBean userBean) {
try {
QueryWrapper<ZpglGzdd> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ZpglGzdd::getDeleteFlag, 0).eq(ZpglGzdd::getOrgCode, userBean.getOrgCode());
List<ZpglGzdd> zpglGzdd = ZpglGzdd.builder().build().selectList(queryWrapper);
zpglGzdd.forEach(zg -> {
zg.setGzddName(zg.getProvince()+"/"+zg.getCity()+"/"+zg.getDistrict()+"/"+zg.getGzddName());
});
return ResultUtil.data(zpglGzdd, "查询成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-工作地点失败");
}
}
/**
* 招聘-添加职级
*
* @param
* @return
*/
@PostMapping(value = "/gzdd/save")
@ApiOperation(value = "2.招聘-添加工作地点", httpMethod = "POST", notes = "招聘-添加工作地点")
@ApiOperationSupport(order = 2)
public Result<Object> save(@CurrentUser UserBean userBean, @RequestBody ZpglGzdd zpglGzdd) {
try {
if(StringUtils.isEmpty(zpglGzdd.getDistrictId()) || zpglGzdd.getDistrictId().length() <= 0){
return ResultUtil.error();
}
SysRegion district = zpglService.getSysRegion(Integer.parseInt(zpglGzdd.getDistrictId()));
if (district != null) {
zpglGzdd.setDistrict(district.getRegionName());
SysRegion city = zpglService.getSysRegion(district.getRegionCode());
zpglGzdd.setCity(city.getRegionName());
zpglGzdd.setCityId(city.getKeyId().toString());
SysRegion province = zpglService.getSysRegion(city.getRegionCode());
zpglGzdd.setProvinceId(province.getKeyId().toString());
zpglGzdd.setProvince(province.getRegionName());
}
zpglGzdd.setCreateUserId(userBean.getEmpNum());
zpglGzdd.setUpdateUserId(userBean.getEmpNum());
zpglGzdd.setOrgCode(userBean.getOrgCode());
return zpglGzdd.insert() ? ResultUtil.success() : ResultUtil.error();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-添加职级失败");
}
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.aspect.lang.annotation.Log;
import cn.timer.api.aspect.lang.enums.BusinessType;
import cn.timer.api.bean.zpgl.*;
import cn.timer.api.config.enuminterface.JxglEnumInterface;
import cn.timer.api.controller.zpgl.sevice.ZpglMslcLogService;
import cn.timer.api.dto.zpgl.InterviewApplicationDto;
import cn.timer.api.utils.DateFormatUtils;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import cn.timer.api.utils.ZpglMessageTemplate;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.Date;
import java.util.List;
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl/h5")
public class ZpglH5Controller {
@Autowired
private ZpglMslcLogService zpglMslcLogService;
/**
* 添加面试申请
* @param
* @return
*/
@RequestMapping("/add_interview_application")
@ApiOperation(value = "添加面试申请", httpMethod = "POST", notes = "添加面试申请")
@Log(title = "addInterviewApplication", businessType = BusinessType.INSERT_UPDATE)
public Result<Object> addInterviewApplication(@Validated @RequestBody InterviewApplicationDto dto) {
System.out.println(dto);
ZpglRcxx zpglRcxx = new ZpglRcxx();
//复制到 ZpglRcxx 实体对象
BeanUtils.copyProperties(dto,zpglRcxx);
// 计算工作年限
if(!StringUtils.isEmpty(zpglRcxx.getWorkBeginYear())){
zpglRcxx.setWorkyears(DateFormatUtils.yearCompare(zpglRcxx.getWorkBeginYear(),new Date()));
}
zpglRcxx.insertOrUpdate();
if(StringUtils.isEmpty(zpglRcxx.getId())){
// 新增人才信息 初始化流程记录
ZpglMslcLog zpglMslcLog = new ZpglMslcLog();
zpglMslcLog.setZpglRcxxId(zpglRcxx.getId());
zpglMslcLog.setUserId(0);
zpglMslcLog.setUserName("");
zpglMslcLog.setZpglRcxxStatus(JxglEnumInterface.MslcLogStatus.OTHER.getType());
zpglMslcLog.setDetail(ZpglMessageTemplate.SYS_ADD);
zpglMslcLogService.addZpglMslcLog(zpglMslcLog);
}
//添加紧急联系人
if(dto.getZpglRcxxLxxxb() != null){
ZpglRcxxLxxxb zpglRcxxLxxxb = dto.getZpglRcxxLxxxb();
zpglRcxxLxxxb.setZpglRcxxId(zpglRcxx.getId());
zpglRcxxLxxxb.insertOrUpdate();
}
//新增/修改工作经验
if(dto.getZpglRcxxExperience() !=null && dto.getZpglRcxxExperience().size()>0){
List<ZpglRcxxExperience> experiences = dto.getZpglRcxxExperience();
for(ZpglRcxxExperience experience : experiences){
if(experience.getCompany() != null){
experience.setZpglRcxxId(zpglRcxx.getId());
experience.insertOrUpdate();
}
}
}
//新增/修改教育经历
if(dto.getZpglRcxxStudy() !=null && dto.getZpglRcxxStudy().size()>0){
List<ZpglRcxxStudy> zpglRcxxStudys = dto.getZpglRcxxStudy();
for(ZpglRcxxStudy study : zpglRcxxStudys){
if(study.getSchoolName() != null){
study.setZpglRcxxId(zpglRcxx.getId());
study.insertOrUpdate();
}
}
}
//新增/修改家庭资料
if(dto.getZpglRcxxJtzls() !=null && dto.getZpglRcxxJtzls().size()>0){
List<ZpglRcxxJtzl> zpglRcxxJtzls = dto.getZpglRcxxJtzls();
for(ZpglRcxxJtzl jtzl : zpglRcxxJtzls){
if(jtzl.getName() != null){
jtzl.setZpglRcxxId(zpglRcxx.getId());
jtzl.insertOrUpdate();
}
}
}
return ResultUtil.success();
}
/**
* 查询面试申请信息
* @param
* @return
*/
@RequestMapping("/interview_application_info/{mobile}")
@ApiOperation(value = "查询面试申请信息", httpMethod = "GET", notes = "查询面试申请信息")
@Log(title = "interviewApplicationIofo", businessType = BusinessType.INSERT_UPDATE)
public Result<InterviewApplicationDto> interviewApplicationIofo(@PathVariable String mobile) {
System.out.println(mobile);
if(mobile == null || "".equals(mobile)){
return ResultUtil.error("手机号不能为空");
}
InterviewApplicationDto dto = new InterviewApplicationDto();
List<ZpglRcxx> zpglRcxxes = ZpglRcxx.builder().build()
.selectList(new QueryWrapper<ZpglRcxx>().lambda()
.eq(ZpglRcxx::getMobile, mobile));
if(zpglRcxxes.size() == 0){
return ResultUtil.error("没有简历信息");
}
ZpglRcxx zpglRcxx = zpglRcxxes.get(0);
//复制到dto
BeanUtils.copyProperties(zpglRcxx,dto);
//联系人信息
List<ZpglRcxxLxxxb> zpglRcxxLxxxbs = ZpglRcxxLxxxb.builder().build().selectList(new QueryWrapper<ZpglRcxxLxxxb>()
.lambda().select(ZpglRcxxLxxxb::getId,ZpglRcxxLxxxb::getLinkName,ZpglRcxxLxxxb::getLinkMobile)
.eq(ZpglRcxxLxxxb::getZpglRcxxId, zpglRcxx.getId()));
if(zpglRcxxLxxxbs.size()>0)
dto.setZpglRcxxLxxxb(zpglRcxxLxxxbs.get(0));
//工作经验
List<ZpglRcxxExperience> experiences = ZpglRcxxExperience.builder().build()
.selectList(new QueryWrapper<ZpglRcxxExperience>()
.lambda().eq(ZpglRcxxExperience::getZpglRcxxId, zpglRcxx.getId()));
if (experiences.size()>0)
dto.setZpglRcxxExperience(experiences);
//教育经历
List<ZpglRcxxStudy> study = ZpglRcxxStudy.builder().build()
.selectList(new QueryWrapper<ZpglRcxxStudy>()
.lambda().eq(ZpglRcxxStudy::getZpglRcxxId, zpglRcxx.getId()));
if (study.size()>0)
dto.setZpglRcxxStudy(study);
//家庭资料
List<ZpglRcxxJtzl> jtzl = ZpglRcxxJtzl.builder().build()
.selectList(new QueryWrapper<ZpglRcxxJtzl>()
.lambda().eq(ZpglRcxxJtzl::getZpglRcxxId, zpglRcxx.getId()));
if (jtzl.size()>0)
dto.setZpglRcxxJtzls(jtzl);
return ResultUtil.data(dto,"查询成功");
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.zpgl.ZpglMslcLog;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enuminterface.JxglEnumInterface;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.dto.zpgl.ZpglMslcLogDto;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
@Slf4j
public class ZpglMslcController {
/**
* 招聘-招聘中
*
* @param
* @return
*/
@GetMapping(value = "/mslc_list")
@ApiOperation(value = "1.招聘管理面试流程记录", httpMethod = "GET", notes = "招聘管理面试流程记录")
@ApiOperationSupport(order = 1)
public Result<Object> mslcList(@CurrentUser UserBean userBean,
@ApiParam("人才信息ID") @RequestParam(required = false) Integer zpglRcxxId,
@ApiParam("状态") @RequestParam(required = false) Integer zpglRcxxStatus) {
try {
QueryWrapper<ZpglMslcLog> queryWrapper = new QueryWrapper<ZpglMslcLog>();
queryWrapper.lambda().eq(ZpglMslcLog::getZpglRcxxId,zpglRcxxId);
// 0全部类型,1状态变更,2面试,3Offer,4讨论,5其他
// JxglEnumInterface.MslcLogStatus
if(zpglRcxxStatus>0){
queryWrapper.lambda().eq(ZpglMslcLog::getZpglRcxxStatus,zpglRcxxStatus);
}
queryWrapper.lambda().orderByDesc(ZpglMslcLog::getCreateTime);
List<ZpglMslcLog> zpglMslcLogs = ZpglMslcLog.builder().build().selectList(queryWrapper);
return ResultUtil.data(zpglMslcLogs, "搜索成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-招聘列表失败");
}
}
/**
* 招聘-添加讨论
*
* @param
* @return
*/
@PostMapping(value = "/mslc/save")
@ApiOperation(value = "2.招聘-添加讨论", httpMethod = "POST", notes = "招聘-添加讨论")
@ApiOperationSupport(order = 2)
public Result<Object> save(@CurrentUser UserBean userBean, @RequestBody @Validated ZpglMslcLogDto zpglMslcLogDto) {
try {
ZpglMslcLog zpglMslcLog = ZpglMslcLog.builder().build();
BeanUtils.copyProperties(zpglMslcLogDto, zpglMslcLog);
zpglMslcLog.setUserId(userBean.getEmpNum());
zpglMslcLog.setUserName(userBean.getQyzxEmpLogin().getUsername());
zpglMslcLog.setDetail(userBean.getQyzxEmpLogin().getUsername()+" "+zpglMslcLogDto.getDetail());
zpglMslcLog.setZpglRcxxStatus(JxglEnumInterface.MslcLogStatus.DISCUSS.getType());
return zpglMslcLog.insert() ? ResultUtil.data(zpglMslcLog) : ResultUtil.error();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-添加讨论");
}
}
}
package cn.timer.api.controller.zpgl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.bean.zpgl.ZpglRcxx;
import cn.timer.api.bean.zpgl.ZpglWxgzptEmpRcxx;
import cn.timer.api.controller.zpgl.sevice.ZpglWxgzptServiceImpl;
import cn.timer.api.dto.template.TemplateData;
import cn.timer.api.dto.wxgzh.LoginDto;
import cn.timer.api.dto.wxgzh.MessageQueueDto;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import cn.timer.api.utils.redis.RedisUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author longys
* @date 2022/3/25 17:18
*/
@Api(tags = "微信公众平台")
@RestController
@RequestMapping(value = "/wxgzpt")
public class ZpglWxgzptController {
@Value("${wxgzh.appid}")
private String appid;
@Value("${wxgzh.appSecret}")
private String appSecret;
@Value("${config-8timer.authentication-code}")
public String authentication_code;
@Value("${h5.url}")
public String h5Url;
public static final String OAUTH_GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
@Resource
private ZpglWxgzptServiceImpl zpglWxgzptService;
@Resource
private RedisUtil redisUtil;
/**
* 重定向到绑定登录页面
* @param request
* @return
*/
@RequestMapping("/toLoginPage")
@ApiOperation(value = "重定向到绑定登录页面", httpMethod = "GET", notes = "重定向到绑定登录页面")
public ModelAndView toLoginPage(HttpServletRequest request){
String state = request.getParameter("state");
String code = request.getParameter("code");
//用code获取openid
String url = OAUTH_GET_ACCESS_TOKEN_URL.replace("APPID",appid).replace("SECRET",appSecret).replace("CODE",code);
String s = HttpUtil.get(url);
JSONObject jsonObject = JSON.parseObject(s);
String openid = jsonObject.getString("openid");
//查询是否已绑定人才信息
ZpglWxgzptEmpRcxx wxgzptEmpRcxx = ZpglWxgzptEmpRcxx.builder().build()
.selectOne(new QueryWrapper<ZpglWxgzptEmpRcxx>().lambda()
.eq(ZpglWxgzptEmpRcxx::getOpenid, openid));
ModelAndView mav = new ModelAndView();
mav.addObject("openid",openid);
if (wxgzptEmpRcxx != null){
mav.setViewName("redirect:"+h5Url+"/#/wxgzhIndex");
}else {
mav.setViewName("redirect:"+h5Url+"/#/wxgzhLogin");
}
return mav;
}
/**
* 重定向到绑定登录页面
* @param request
* @return
*/
@RequestMapping("/basic_info")
@ApiOperation(value = "重定向到面试申请页面", httpMethod = "GET", notes = "重定向到面试申请页面")
public ModelAndView basicInfo(HttpServletRequest request){
String mobile = request.getParameter("mobile");
String orgId = request.getParameter("orgId");
ModelAndView mav = new ModelAndView();
mav.addObject("mobile",mobile);
mav.addObject("orgId",Integer.valueOf(orgId));
mav.setViewName("redirect:"+h5Url+"/#/basicInfo");
return mav;
}
/**
* 查询是否已绑定人才信息
* @param openid
* @return
*/
@RequestMapping("/checkBind")
@ApiOperation(value = "查询是否已绑定人才信息", httpMethod = "GET", notes = "查询是否已绑定人才信息")
public Result<Object> checkBind(String openid){
ZpglWxgzptEmpRcxx wxgzptEmpRcxx = ZpglWxgzptEmpRcxx.builder().build()
.selectOne(new QueryWrapper<ZpglWxgzptEmpRcxx>().lambda()
.eq(ZpglWxgzptEmpRcxx::getOpenid, openid)
.eq(ZpglWxgzptEmpRcxx::getDeleteFlag, 0));
if (wxgzptEmpRcxx == null)
return ResultUtil.error("25001","未绑定");
return ResultUtil.success("已绑定.");
}
/**
* 查询已绑定信息
* @param openid
* @return
*/
@RequestMapping("/getBindInfo")
@ApiOperation(value = "查询已绑定信息", httpMethod = "GET", notes = "查询已绑定信息")
public Result<LoginDto> getBindInfo(String openid){
//查询是否已绑定人才信息
ZpglWxgzptEmpRcxx wxgzptEmpRcxx = ZpglWxgzptEmpRcxx.builder().build()
.selectOne(new QueryWrapper<ZpglWxgzptEmpRcxx>().lambda()
.eq(ZpglWxgzptEmpRcxx::getOpenid, openid)
.eq(ZpglWxgzptEmpRcxx::getDeleteFlag, 0));
if (wxgzptEmpRcxx != null){
LoginDto loginDao = new LoginDto();
YgglMainEmp userInfo = new YgglMainEmp();
//判断是否有人才信息表id
if(wxgzptEmpRcxx.getZpglRcxxId() != null && wxgzptEmpRcxx.getZpglRcxxId() != 0){
//查询人才信息表
ZpglRcxx zpglRcxx = ZpglRcxx.builder().build().selectOne(new QueryWrapper<ZpglRcxx>()
.lambda().eq(ZpglRcxx::getId, wxgzptEmpRcxx.getZpglRcxxId()));
userInfo.setPhone(zpglRcxx.getMobile());
userInfo.setName(zpglRcxx.getName());
}
//判断员工档案ID不等于空
if(wxgzptEmpRcxx.getYgglMainEmpId() != null){
userInfo = userInfo.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda()
.select(YgglMainEmp::getId,YgglMainEmp::getEmpNum, YgglMainEmp::getName, YgglMainEmp::getPhone, YgglMainEmp::getBmgwId, YgglMainEmp::getOrgCode)
.eq(YgglMainEmp::getId, wxgzptEmpRcxx.getYgglMainEmpId())
.eq(YgglMainEmp::getOrgCode, wxgzptEmpRcxx.getOrgCode()));
loginDao.setUserName(userInfo.getName());
loginDao.setPhone(userInfo.getPhone());
loginDao.setAvatar(userInfo.getHeadUrl());
}else {
loginDao.setPhone(wxgzptEmpRcxx.getMobile());
}
return ResultUtil.data(loginDao);
}
return null;
}
/**
* 公众号登录绑定
*/
@RequestMapping("/login")
@ApiOperation(value = "公众号登录绑定", httpMethod = "POST", notes = "公众号登录绑定")
public Result<Object> login(@RequestBody LoginDto loginDao, HttpServletRequest request){
System.out.println(loginDao);
HttpSession session = request.getSession();
String code = loginDao.getCode();
String phone = loginDao.getPhone();
String openid = loginDao.getOpenid();
if (StringUtils.isEmpty(code)) {
return ResultUtil.error("请输入验证码");
}
//String codeRedis = session.getAttribute(phone) != null ? session.getAttribute(phone).toString() : "";
String codeRedis = redisUtil.get(phone) != null ? redisUtil.get(phone).toString() : null;
if(authentication_code !=null && !("").equals(authentication_code)) {
if (authentication_code.equals(code)) {
return loginhan(phone,openid);
}
}
if (codeRedis == null || !code.equals(codeRedis)){
return ResultUtil.error("验证码不符");
}
return loginhan(phone,openid);
}
public Result<Object> loginhan(String phone, String openid) {
//查询该手机号是否绑定了公众号
ZpglWxgzptEmpRcxx wxgzptEmpRcxx = ZpglWxgzptEmpRcxx.builder().build()
.selectOne(new QueryWrapper<ZpglWxgzptEmpRcxx>().lambda()
.eq(ZpglWxgzptEmpRcxx::getMobile, phone)
.eq(ZpglWxgzptEmpRcxx::getDeleteFlag,0));
//如果绑定过其他微信openid 替换成当前的openid
if (wxgzptEmpRcxx != null){
wxgzptEmpRcxx.setOpenid(openid);
wxgzptEmpRcxx.updateById();
}else {
//查询员工登录表
QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().build()
.selectOne(new QueryWrapper<QyzxEmpLogin>().lambda()
.eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone));
YgglMainEmp userInfo = null;
if (qyzxEmpLogin != null){
//查询员工档案表
userInfo = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda()
.select(YgglMainEmp::getId,YgglMainEmp::getEmpNum, YgglMainEmp::getName, YgglMainEmp::getPhone, YgglMainEmp::getBmgwId, YgglMainEmp::getOrgCode)
.eq(YgglMainEmp::getEmpNum, qyzxEmpLogin.getId())
.eq(YgglMainEmp::getOrgCode, qyzxEmpLogin.getOrgId()));
}
//查询人才信息表
ZpglRcxx zpglRcxx = ZpglRcxx.builder().build().selectOne(new QueryWrapper<ZpglRcxx>()
.lambda().eq(!StrUtil.hasBlank(phone), ZpglRcxx::getMobile, phone));
//没有加入企业
/*if (userInfo == null && zpglRcxx == null){
return ResultUtil.error("25002","没有找到匹配的企业");
}*/
ZpglWxgzptEmpRcxx empRcxx = new ZpglWxgzptEmpRcxx();
empRcxx.setZpglRcxxId(zpglRcxx!=null?zpglRcxx.getId():null);
empRcxx.setYgglMainEmpId(userInfo!=null?userInfo.getId():null);
empRcxx.setOrgCode(userInfo!=null?userInfo.getOrgCode():null);
empRcxx.setOpenid(openid);
empRcxx.setMobile(phone);
empRcxx.insert();
}
return ResultUtil.success();
}
/**
*根据手机号查询绑定的openid
* @return
*/
@GetMapping(value = "/getOpenid")
@ApiOperation(value = "获取openid", httpMethod = "POST", notes = "根据手机号查询绑定的openid")
public Result<ZpglWxgzptEmpRcxx> getOpenid(String phone){
//查询该手机号是否绑定了公众号
ZpglWxgzptEmpRcxx wxgzptEmpRcxx = ZpglWxgzptEmpRcxx.builder().build()
.selectOne(new QueryWrapper<ZpglWxgzptEmpRcxx>().lambda()
.eq(ZpglWxgzptEmpRcxx::getMobile, phone)
.eq(ZpglWxgzptEmpRcxx::getDeleteFlag,0));
return ResultUtil.data(wxgzptEmpRcxx);
}
@RequestMapping("/addMessageQueue")
public Result<Object> addMessageQueue(){
//消息队列对象
MessageQueueDto mqd = new MessageQueueDto();
/**
* 模板消息内容 start
*/
List<TemplateData> templateData = new ArrayList<>();
TemplateData key1 = new TemplateData("first", "您好,JAVA工程师张三已安排由您面试", "#000000");
TemplateData key2 = new TemplateData("keyword1", "JAVA工程师", "#000000");
TemplateData key3 = new TemplateData("keyword2", "2021-03-23 10:00", "#000000");
TemplateData key4 = new TemplateData("remark", "点击填写面试申请", "#000000");
templateData.add(key1);
templateData.add(key2);
templateData.add(key3);
templateData.add(key4);
//数据处理成固定好的json格式
String content = mqd.getContentJson(templateData);
/**
* 模板消息内容 end
*/
mqd.setContent(content);//消息内容模板消息 json格式 普通消息字符串类型
mqd.setMobile("18212310017");//手机号
mqd.setType(2);//类型(1 短信,2 邮件,3 微信模板消息)
mqd.setWxgzhType(1);//公众号类型 1:8小时企业管理 2:优领人才网
mqd.setTiming(1);//1 即时发送,2 定时发送
mqd.setTemplateId("Uz6mVUYk9Tu7EO2V1pqiQ3x4EudDJTYWdaFtdf64h3M");//模板id
mqd.setUrl(null);//网页地址
mqd.setWxxcxPageId(null);//小程序页面地址
Map map = JSON.parseObject(JSON.toJSONString(mqd), Map.class);
String s = zpglWxgzptService.addMessageQueue(map);
return ResultUtil.success(s);
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import cn.timer.api.bean.zpgl.ZpglWxgzptEmpRcxx;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.transaction.Transactional;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-04-25 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
@Slf4j
public class ZpglWxgzptEmpRcxxController {
/**
* 招聘-检测用户是否关注并且注册 8小时企业管理 微信公众号
*
* @param
* @return
*/
@GetMapping(value = "/check_user_wechat")
@ApiOperation(value = "1.检测用户是否关注并且注册 8小时企业管理 微信公众号", httpMethod = "GET", notes = "招聘列表")
@ApiOperationSupport(order = 1)
public Result<Object> checkUserWechat(@CurrentUser UserBean userBean,
@ApiParam("面试官ID") @RequestParam(required = false) Integer interviewerId,
@ApiParam("面试者手机号") @RequestParam(required = false) String mobile) {
try {
int interviewer = 0,interviewee=0;
ZpglWxgzptEmpRcxx zpglWxgzptEmpRcxx = ZpglWxgzptEmpRcxx.builder().build().selectOne(
new QueryWrapper<ZpglWxgzptEmpRcxx>().select("openid").lambda().eq(ZpglWxgzptEmpRcxx::getMobile,mobile)
);
// 面试者已绑定
if(!StringUtils.isEmpty(zpglWxgzptEmpRcxx) && !StringUtils.isEmpty(zpglWxgzptEmpRcxx.getOpenid()) && zpglWxgzptEmpRcxx.getOpenid().length()>0){
interviewee = 1;
}
QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().id(interviewerId).build().selectById();
ZpglWxgzptEmpRcxx zpglWxgzptEmpRcxxee = ZpglWxgzptEmpRcxx.builder().build().selectOne(
new QueryWrapper<ZpglWxgzptEmpRcxx>().select("openid").lambda().eq(ZpglWxgzptEmpRcxx::getMobile,qyzxEmpLogin.getPhone())
);
// 面试官已绑定
if(!StringUtils.isEmpty(zpglWxgzptEmpRcxxee) && !StringUtils.isEmpty(zpglWxgzptEmpRcxxee.getOpenid()) && zpglWxgzptEmpRcxxee.getOpenid().length()>0){
interviewer = 1;
}
if(interviewer==0 && interviewee==0){
return ResultUtil.data(1,"面试官和候选人未绑定公众号,请提醒面试官、候选人关注8小时企业管理公众号!");
}
if(interviewer==0){
return ResultUtil.data(1,"面试官未绑定公众号,请提醒面试官关注8小时企业管理公众号!");
}
if(interviewee==0){
return ResultUtil.data(1,"候选人未绑定公众号,请提醒候选人关注8小时企业管理公众号!");
}
return ResultUtil.data(0,"都绑定了");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-检测失败");
}
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.zpgl.ZpglZj;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-18 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
public class ZpglZjController {
/**
* 招聘-职级字典
*
* @param
* @return
*/
@GetMapping(value = "/zj")
@ApiOperation(value = "1.职级字典", httpMethod = "GET", notes = "职级字典")
@ApiOperationSupport(order = 1)
public Result<Object> fail(@CurrentUser UserBean userBean) {
try {
QueryWrapper<ZpglZj> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ZpglZj::getDeleteFlag, 0).eq(ZpglZj::getOrgCode, userBean.getOrgCode());
List<ZpglZj> zpglCompany = ZpglZj.builder().build().selectList(queryWrapper);
return ResultUtil.data(zpglCompany, "查询成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-职级字典失败");
}
}
/**
* 招聘-添加职级
*
* @param
* @return
*/
@PostMapping(value = "/zj/save")
@ApiOperation(value = "2.招聘-添加职级", httpMethod = "POST", notes = "招聘-添加职级")
@ApiOperationSupport(order = 2)
public Result<Object> save(@CurrentUser UserBean userBean, @RequestBody ZpglZj zpglZj) {
try {
zpglZj.setCreateUserId(userBean.getEmpNum());
zpglZj.setUpdateUserId(userBean.getEmpNum());
zpglZj.setOrgCode(userBean.getOrgCode());
return zpglZj.insert() ? ResultUtil.success() : ResultUtil.error();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-添加职级失败");
}
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.zpgl.ZpglZpqd;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
/**
* 招聘管理
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-28 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpgl", produces = {"application/json"})
public class ZpglZpqdController {
/**
* 招聘-招聘渠道字典
*
* @param
* @return
*/
@GetMapping(value = "/zpqd/{OrgCode}")
@ApiOperation(value = "1.招聘渠道字典", httpMethod = "GET", notes = "招聘渠道字典")
@ApiOperationSupport(order = 1)
public Result<Object> zpqd(@PathVariable Integer OrgCode) {
try {
QueryWrapper<ZpglZpqd> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(ZpglZpqd::getDeleteFlag, 0).eq(ZpglZpqd::getOrgCode, OrgCode);
List<ZpglZpqd> zpglZpqd = ZpglZpqd.builder().build().selectList(queryWrapper);
return ResultUtil.data(zpglZpqd, "查询成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-招聘渠道字典失败");
}
}
/**
* 招聘-添加招聘渠道
*
* @param
* @return
*/
@PostMapping(value = "/zpqd/save")
@ApiOperation(value = "2.招聘-添加招聘渠道", httpMethod = "POST", notes = "招聘-添加招聘渠道")
@ApiOperationSupport(order = 2)
public Result<Object> save(@CurrentUser UserBean userBean, @RequestBody ZpglZpqd zpglZpqd) {
try {
zpglZpqd.setCreateUserId(userBean.getEmpNum());
zpglZpqd.setUpdateUserId(userBean.getEmpNum());
zpglZpqd.setOrgCode(userBean.getOrgCode());
return zpglZpqd.insert() ? ResultUtil.success() : ResultUtil.error();
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-添加招聘渠道失败");
}
}
}
package cn.timer.api.controller.zpgl;
import cn.timer.api.bean.zpgl.*;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.controller.kqgl.atttimer.RealTimeUpdate;
import cn.timer.api.controller.zpgl.sevice.ZpglService;
import cn.timer.api.dao.kqgl.UserEquiRelationMapper;
import cn.timer.api.dao.kqmk.KqglAssoKqzdkfsMapper;
import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dao.zpgl.ZpglRcxxMapper;
import cn.timer.api.dto.zpgl.ZpglZwxxAddUpdateDto;
import cn.timer.api.dto.zpgl.ZpglZwxxDto;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import cn.timer.api.utils.query.BaseQuery;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.yulichang.query.MPJQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.transaction.Transactional;
import java.util.List;
/**
* 招聘管理-招聘职位
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-22 15:14:40
*/
@Api(tags = "招聘管理")
@Transactional(rollbackOn = Exception.class)
@RestController
@RequestMapping(value = "/zpzw", produces = {"application/json"})
@Slf4j
public class ZpglZwxxController {
/**
* 招聘职位列表
*
* @param
* @return
*/
@GetMapping(value = "/list")
@ApiOperation(value = "1.招聘职位列表", httpMethod = "GET", notes = "招聘职位表")
@ApiOperationSupport(order = 1)
public Result<Object> recruit(@CurrentUser UserBean userBean, BaseQuery baseQuery,
@ApiParam("搜索关键字") @RequestParam(required = false) String query,
@ApiParam("职位ID") @RequestParam(required = false) Integer zpglZwxxId,
@ApiParam("状态") @RequestParam(required = false) Integer status) {
try {
Page<ZpglZwxx> page = new Page<ZpglZwxx>(baseQuery.getPageNum(), baseQuery.getPageSize());
MPJQueryWrapper<ZpglZwxx> queryWrapper = new MPJQueryWrapper<>();
queryWrapper.selectAll(ZpglZwxx.class).select("zg.gzdd_name","zg.province","zg.district","zg.city")
.leftJoin("zpgl_gzdd zg on t.zpgl_gzdd_id = zg.id");
queryWrapper.eq("t.org_code", userBean.getOrgCode()).eq("t.delete_flag",0);
if (!StringUtils.isEmpty(zpglZwxxId) && zpglZwxxId > 0) {
queryWrapper.eq("t.id", zpglZwxxId);
}
if (!StringUtils.isEmpty(query)) {
queryWrapper.like("t.name", query);
}
queryWrapper.eq("t.status", status).orderByDesc("t.create_time");
IPage<ZpglZwxx> zpglZwxxPage = ZpglZwxx.builder().build().selectPage(page, queryWrapper);
List<ZpglZwxx> zpglRcxxs = page.getRecords();
zpglZwxxPage.getCurrent();
zpglZwxxPage.getPages();
zpglZwxxPage.getTotal();
zpglZwxxPage.getSize();
return ResultUtil.data(zpglZwxxPage, zpglRcxxs, "搜索成功");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("获取招聘职位列表失败");
}
}
/**
* 招聘职位-停止招聘
*
* @param
* @return
*/
@PostMapping(value = "/edit")
@ApiOperation(value = "2.招聘职位-停止招聘", httpMethod = "POST", notes = "招聘职位-停止招聘")
@ApiOperationSupport(order = 2)
public Result<Object> edit(@CurrentUser UserBean userBean, @RequestBody ZpglZwxxDto zpglZwxxDto) {
try {
return ZpglZwxx.builder().id(zpglZwxxDto.getId()).status(zpglZwxxDto.getStatus()).userId(userBean.getEmpNum()).userName(userBean.getQyzxEmpLogin().getUsername()).build().updateById()?ResultUtil.success("操作成功"):ResultUtil.error("操作失败");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-删除人才信息失败");
}
}
/**
* 招聘职位-删除
*
* @param
* @return
*/
@PostMapping(value = "/delete")
@ApiOperation(value = "3.招聘职位-删除", httpMethod = "POST", notes = "招聘职位-删除")
@ApiOperationSupport(order = 3)
public Result<Object> delete(@CurrentUser UserBean userBean, @RequestBody ZpglZwxxDto zpglZwxxDto) {
try {
return ZpglZwxx.builder().id(zpglZwxxDto.getId()).deleteFlag(zpglZwxxDto.getDeleteFlag()).userId(userBean.getEmpNum()).userName(userBean.getQyzxEmpLogin().getUsername()).build().updateById()?ResultUtil.success("操作成功"):ResultUtil.error("操作失败");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招聘-删除人才信息失败");
}
}
/**
* 招聘职位-添加
*
* @param
* @return
*/
@PostMapping(value = "/add")
@ApiOperation(value = "4.招聘职位-添加", httpMethod = "POST", notes = "招聘职位-添加")
@ApiOperationSupport(order = 4)
public Result<Object> add(@CurrentUser UserBean userBean, @RequestBody ZpglZwxxAddUpdateDto zpglZwxxAddUpdateDto) {
try {
ZpglZwxx zpglZwxx = new ZpglZwxx();
BeanUtils.copyProperties(zpglZwxxAddUpdateDto,zpglZwxx);
zpglZwxx.setUserId(userBean.getEmpNum());
zpglZwxx.setUserName(userBean.getQyzxEmpLogin().getUsername());
zpglZwxx.setStatus(1);
zpglZwxx.setOrgCode(userBean.getOrgCode().toString());
return zpglZwxx.insertOrUpdate()?ResultUtil.success("操作成功"):ResultUtil.error("操作失败");
} catch (Exception e) {
e.printStackTrace();
throw new CustomException("招招聘职位-添加失败");
}
}
}
package cn.timer.api.controller.zpgl.sevice;
import cn.timer.api.bean.zpgl.ZpglMslcLog;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/14
*/
public interface ZpglMslcLogService {
/**
* 添加面试流程记录
* @param zpglMslcLog
* @return
*/
boolean addZpglMslcLog(ZpglMslcLog zpglMslcLog);
}
package cn.timer.api.controller.zpgl.sevice;
import cn.timer.api.bean.zpgl.ZpglMslcLog;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/14
*/
@Service
@Transactional(rollbackOn = Exception.class)
public class ZpglMslcLogServiceImpl implements ZpglMslcLogService {
@Override
public boolean addZpglMslcLog(ZpglMslcLog zpglMslcLog) {
return zpglMslcLog.insert();
}
}
package cn.timer.api.controller.zpgl.sevice;
import cn.timer.api.bean.email.SendMessage;
import cn.timer.api.bean.zpgl.ZpglRcxxOffer;
import cn.timer.api.utils.DateFormatUtils;
import cn.timer.api.utils.ZpglMessageTemplate;
import cn.timer.api.utils.email.EmailUtils;
import com.aliyun.tea.utils.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.mail.javamail.JavaMailSender;
import java.util.Date;
public class ZpglSendMessageThread implements Runnable {
public JavaMailSender mailSender;
private ZpglRcxxOffer zpglRcxxOffer;
public ZpglSendMessageThread(JavaMailSender mailSender, ZpglRcxxOffer zpglRcxxOffer) {
this.mailSender = mailSender;
this.zpglRcxxOffer = zpglRcxxOffer;
}
@Override
public void run() {
try {
EmailUtils.sendThymeleafMail(
mailSender,
ZpglMessageTemplate.print(ZpglMessageTemplate.OFFER_TEMPLATE, new String[]{
zpglRcxxOffer.getRcxxName(),
zpglRcxxOffer.getCompanyName(),
zpglRcxxOffer.getBumen(),
zpglRcxxOffer.getGangwei(),
DateFormatUtils.tranDate(zpglRcxxOffer.getRzTime(), DateFormatUtils.YYYYMMDD),
zpglRcxxOffer.getLinkName(),
StringUtils.isEmpty(zpglRcxxOffer.getLinkPhone()) ? "" : zpglRcxxOffer.getLinkPhone(),
StringUtils.isEmpty(zpglRcxxOffer.getLinkEmail()) ? "" : zpglRcxxOffer.getLinkEmail()}),
zpglRcxxOffer.getTitle(),
new String[]{zpglRcxxOffer.getReceiverEmail()});
SendMessage sendMessage = SendMessage.builder().build();
BeanUtils.copyProperties(zpglRcxxOffer, sendMessage);
sendMessage.setCreatedTime(new Date());
sendMessage.insert();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package cn.timer.api.controller.zpgl.sevice;
import cn.timer.api.bean.clazz.SysRegion;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.dto.zpgl.ImportCandidateDto;
import cn.timer.api.dto.zpgl.ZpglRcxxDto;
import cn.timer.api.utils.Result;
import org.springframework.web.multipart.MultipartFile;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/18
*/
public interface ZpglService {
/**
* 招聘-变更人才信息状态
* 添加面试流程记录
* @param userBean zpglRcxxDto
* @return
*/
boolean updateZpglRcxx(UserBean userBean, ZpglRcxxDto zpglRcxxDto);
/**
* 地址字典
* @param keyId
* @return
*/
SysRegion getSysRegion(Integer keyId);
/**
* BaiduTicResume
* @param file
* @return
*/
Result<Object> addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto);
/**
* ResumeSDK
* @param file
* @return
*/
Result<Object> addCandidateByResumeSDK(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto);
/**
* 招聘-更改招聘职位
* 添加面试流程记录
* @param userBean zpglRcxxDto
* @return
*/
boolean updateZpglRcxxZwxx(UserBean userBean, ZpglRcxxDto zpglRcxxDto);
/**
* 入职维护
* 职位信息已入职人数+1
* 招聘-变更人才信息状态
* 添加面试流程记录
* 维护微信公众平台表
* @param userBean
* @param zpglRcxxDto
* @return
*/
boolean updateZpglOther(UserBean userBean, ZpglRcxxDto zpglRcxxDto,Integer userId);
}
package cn.timer.api.controller.zpgl.sevice;
import cn.timer.api.bean.clazz.SysRegion;
import cn.timer.api.bean.wechat.MessageTemplate;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.bean.zpgl.*;
import cn.timer.api.bean.zzgl.ZzglBmgwM;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enuminterface.JxglEnumInterface;
import cn.timer.api.controller.kqgl.ClockInTool;
import cn.timer.api.dto.baidu.*;
import cn.timer.api.bean.clazz.NationClass;
import cn.timer.api.dto.resumesdk.*;
import cn.timer.api.dto.resumesdk.enumresume.ResumeSdk;
import cn.timer.api.dto.template.InterviewNotice;
import cn.timer.api.dto.zpgl.ImportCandidateDto;
import cn.timer.api.dto.zpgl.ZpglRcxxDto;
import cn.timer.api.service.OSSService;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import cn.timer.api.utils.ZpglMessageTemplate;
import cn.timer.api.utils.baidu.BaiduTicUtil;
import cn.timer.api.utils.baidu.Base64;
import cn.timer.api.utils.resumesdk.ResumeSDKUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.transaction.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/18
*/
@Slf4j
@Service
@Transactional(rollbackOn = Exception.class)
public class ZpglServiceImpl implements ZpglService {
@Value("${spring.mail.username}")
private String username;
@Autowired
private BaiduTicUtil baiduTicUtil;
@Autowired
private ResumeSDKUtil resumeSDKUtil;
@Autowired
private JavaMailSender mailSender;
@Autowired
private ZpglMslcLogService zpglMslcLogService;
@Autowired
private ZpglWxgzptServiceImpl zpglWxgzptService;
@Autowired
private OSSService ossService;
@Value("${config-8timer.Aliyun.RESUMESDK_APPCODE}")
private String RESUMESDK_APPCODE;
@Override
public boolean updateZpglRcxx(UserBean userBean, ZpglRcxxDto zpglRcxxDto) {
boolean count = false;
ZpglRcxx zpglRcxxEntity = ZpglRcxx.builder().id(zpglRcxxDto.getId()).build().selectById();
if (StringUtils.isEmpty(zpglRcxxEntity)) {
return count;
}
zpglRcxxDto.setName(zpglRcxxEntity.getName());
ZpglRcxx zpglRcxx = ZpglRcxx.builder().id(zpglRcxxDto.getId()).status(zpglRcxxDto.getStatus()).build();
ZpglMslcLog zpglMslcLog = new ZpglMslcLog();
zpglMslcLog.setZpglRcxxId(zpglRcxxDto.getId());
zpglMslcLog.setUserId(userBean.getEmpNum());
zpglMslcLog.setUserName(userBean.getQyzxEmpLogin().getUsername());
if (!StringUtils.isEmpty(zpglRcxxDto.getIfrck()) && zpglRcxxDto.getIfrck().intValue() == 1) {
zpglRcxx.setIfrckTime(new Date());
}
String detail = "";
// 类型,1状态变更,2面试,3Offer,4讨论,5其他
int zpglRcxxStatus = 0;
switch (zpglRcxxDto.getStatus()) {
case 1:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.CHANGEING.getType();
//待初筛 填充字段
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.FILTERING, new String[]{
userBean.getQyzxEmpLogin().getUsername()});
break;
case 2:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.CHANGEING.getType();
//初筛通过 填充字段
zpglRcxx.setIfrck(zpglRcxxDto.getIfrck());
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.FILTER_PASS, new String[]{
userBean.getQyzxEmpLogin().getUsername()});
break;
case 3:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.INTERVIEW.getType();
//安排面试 填充字段
zpglRcxx.setInterviewNum(zpglRcxxDto.getInterviewNum());
zpglRcxx.setInterviewWay(zpglRcxxDto.getInterviewWay());
zpglRcxx.setInterviewerId(zpglRcxxDto.getInterviewerId());
zpglRcxx.setInterviewTime(zpglRcxxDto.getInterviewTime());
zpglRcxx.setNoticeWay(zpglRcxxDto.getNoticeWay());
YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().select("name").lambda().eq(YgglMainEmp::getEmpNum, zpglRcxxDto.getInterviewerId()));
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.INTERVIEW, new String[]{
userBean.getQyzxEmpLogin().getUsername(),
zpglRcxxDto.getInterviewNum().toString(),
new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss").format(zpglRcxxDto.getInterviewTime()),
ygglMainEmp.getName()});
break;
case 4:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.INTERVIEW.getType();
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.INTERVIEWED, new String[]{
userBean.getQyzxEmpLogin().getUsername(), zpglRcxxEntity.getInterviewNum().toString()});
break;
case 5:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.INTERVIEW.getType();
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.INTERVIEW_PASS, new String[]{
userBean.getQyzxEmpLogin().getUsername()});
break;
case 6:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.INTERVIEW.getType();
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.EMPLOY, new String[]{
userBean.getQyzxEmpLogin().getUsername()});
break;
case 7:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OFFER.getType();
//发送offer 填充字段
zpglRcxx.setBmgwId(zpglRcxxDto.getBmgwId());
zpglRcxx.setJobType(zpglRcxxDto.getJobType());
zpglRcxx.setYjrzTime(zpglRcxxDto.getYjrzTime());
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.OFFER, new String[]{
userBean.getQyzxEmpLogin().getUsername()});
//发送offer
ZpglRcxxOffer zpglRcxxOffer = this.insertZpglRcxxOffer(userBean, zpglRcxxDto);
zpglRcxxOffer.setReceiverEmail(zpglRcxxEntity.getMail());
Thread pthread = new Thread(new ZpglSendMessageThread(mailSender, zpglRcxxOffer));
pthread.start();
break;
case 8:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
//待入职 填充字段
zpglRcxx.setBmgwId(zpglRcxxDto.getBmgwId());
zpglRcxx.setJobType(zpglRcxxDto.getJobType());
zpglRcxx.setYjrzTime(zpglRcxxDto.getYjrzTime());
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.WAIT, new String[]{
userBean.getQyzxEmpLogin().getUsername()});
break;
case 9:
//淘汰 填充字段
if(!StringUtils.isEmpty(zpglRcxxDto.getIfrck())){
zpglRcxx.setIfrck(zpglRcxxDto.getIfrck());
zpglRcxx.setIfrckTime(new Date());
}
zpglRcxx.setZpglFailId(zpglRcxxDto.getZpglFailId());
zpglRcxx.setRemarks(zpglRcxxDto.getRemarks());
ZpglFail zpglFail = ZpglFail.builder().id(zpglRcxxDto.getZpglFailId()).build().selectById();
String messageTemplate = ZpglMessageTemplate.ENTRYING, titleLabel = "";
if (!StringUtils.isEmpty(zpglFail)) {
if (zpglFail.getZpglRcxxStatus().equals(JxglEnumInterface.ResumeStatus.INTERVIEWED.getType())) {
titleLabel = JxglEnumInterface.ResumeStatus.INTERVIEWED.getName();
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
messageTemplate = ZpglMessageTemplate.INTERVIEWED_ENTRYING;
}
if (zpglFail.getZpglRcxxStatus().equals(JxglEnumInterface.ResumeStatus.INTERVIEW_PASS.getType())) {
titleLabel = JxglEnumInterface.ResumeStatus.INTERVIEW_PASS.getName();
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
messageTemplate = ZpglMessageTemplate.INTERVIEWED_ENTRYING;
}
if (zpglFail.getZpglRcxxStatus().equals(JxglEnumInterface.ResumeStatus.INTERVIEW.getType())) {
titleLabel = JxglEnumInterface.ResumeStatus.INTERVIEW.getName();
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
messageTemplate = ZpglMessageTemplate.INTERVIEWED_ENTRYING;
}
if (zpglFail.getZpglRcxxStatus().equals(JxglEnumInterface.ResumeStatus.EMPLOY.getType())) {
titleLabel = JxglEnumInterface.ResumeStatus.EMPLOY.getName();
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
messageTemplate = ZpglMessageTemplate.OFFER_ENTRYING;
}
if (zpglFail.getZpglRcxxStatus().equals(JxglEnumInterface.ResumeStatus.OFFER.getType())) {
titleLabel = JxglEnumInterface.ResumeStatus.OFFER.getName();
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
messageTemplate = ZpglMessageTemplate.OFFER_ENTRYING;
}
if (zpglFail.getZpglRcxxStatus().equals(JxglEnumInterface.ResumeStatus.ENTRYING.getType())) {
titleLabel = JxglEnumInterface.ResumeStatus.ENTRYING.getName();
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
messageTemplate = ZpglMessageTemplate.OFFER_ENTRYING;
}
if (zpglFail.getZpglRcxxStatus().equals(JxglEnumInterface.ResumeStatus.ENTRY.getType())) {
titleLabel = JxglEnumInterface.ResumeStatus.ENTRY.getName();
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
messageTemplate = ZpglMessageTemplate.OFFER_ENTRYING;
}
detail = ZpglMessageTemplate.print(messageTemplate, new String[]{
userBean.getQyzxEmpLogin().getUsername(), zpglFail.getFailCause(), zpglRcxxDto.getRemarks(), titleLabel});
}
break;
case 10:
zpglRcxxStatus = JxglEnumInterface.MslcLogStatus.OTHER.getType();
//确认入职
detail = ZpglMessageTemplate.print(ZpglMessageTemplate.ENTRY, new String[]{
userBean.getQyzxEmpLogin().getUsername()});
break;
default:
break;
}
zpglMslcLog.setZpglRcxxStatus(zpglRcxxStatus);
zpglMslcLog.setDetail(detail);
count = zpglRcxx.updateById();
zpglMslcLogService.addZpglMslcLog(zpglMslcLog);
// 发送面试通知
if (count && JxglEnumInterface.ResumeStatus.INTERVIEW.getType().equals(zpglRcxxDto.getStatus()) && JxglEnumInterface.NoticeWay.WECHAT_PUBLIC.getType().equals(zpglRcxxDto.getNoticeWay())) {
InterviewNotice interviewNotice = new InterviewNotice();
ZpglZwxx zpglZwxx = ZpglZwxx.builder().id(zpglRcxxEntity.getZpglZwxxId()).build().selectById();
if (!StringUtils.isEmpty(zpglZwxx)) {
interviewNotice.setZpglZwxxName(zpglZwxx.getName());
}
interviewNotice.setName(zpglRcxxEntity.getName());
interviewNotice.setType(zpglRcxxDto.getNoticeWay());
interviewNotice.setEmail(zpglRcxxEntity.getMail());
//公众号类型 1:8小时企业管理 2:优领人才网
interviewNotice.setWxgzhType(1);
//0 即时发送,1 定时发送
interviewNotice.setTiming(0);
interviewNotice.setInterviewTime(zpglRcxxDto.getInterviewTime());
// 通知面试官
YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().select("phone").lambda()
.eq(YgglMainEmp::getOrgCode, userBean.getOrgCode()).eq(YgglMainEmp::getEmpNum, zpglRcxxDto.getInterviewerId()));
if (!StringUtils.isEmpty(ygglMainEmp)) {
interviewNotice.setMobile(ygglMainEmp.getPhone());
interviewNotice.setYgglMainEmpId(ygglMainEmp.getId());
}
interviewNotice.setTemplateId(MessageTemplate.TEMPLATE_ID_TO_INTERVIEWER);
interviewNotice.setContentStr(ZpglMessageTemplate.print(ZpglMessageTemplate.TO_INTERVIEWER, new String[]{interviewNotice.getZpglZwxxName(), interviewNotice.getName()}));
log.info("TO_INTERVIEWER addInterviewMessageQueue info:{}", zpglWxgzptService.addInterviewMessageQueue(interviewNotice));
// 通知面试者
interviewNotice.setZpglRcxxId(zpglRcxxEntity.getId());
interviewNotice.setMobile(zpglRcxxEntity.getMobile());
interviewNotice.setRemark("请您提前做好准备,妥善安排接面试的时间~如有疑问,请联系 HR");
interviewNotice.setContentStr(ZpglMessageTemplate.print(ZpglMessageTemplate.TO_INTERVIEWEE, new String[]{interviewNotice.getName(), interviewNotice.getZpglZwxxName()}));
log.info("TO_INTERVIEWEE addInterviewMessageQueue info:{}", zpglWxgzptService.addInterviewMessageQueue(interviewNotice));
}
return count;
}
@Override
public SysRegion getSysRegion(Integer keyId) {
return SysRegion.builder().build()
.selectOne(new QueryWrapper<SysRegion>().lambda().eq(SysRegion::getKeyId, keyId).select(
SysRegion::getRegionName, SysRegion::getKeyId, SysRegion::getZipCode,
SysRegion::getRegionCode));
}
@Override
public Result<Object> addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto) {
BaiduTicResumeDto baiduTicResumeDto = BaiduTicResumeDto.builder().filename(file.getOriginalFilename()).filetype(importCandidateDto.getSuffix()).filedata(Base64.getStrFromPath(file)).build();
ResponseEntity<String> resumeString = baiduTicUtil.getResumeByCvParser(baiduTicResumeDto);
JSONObject json = (JSONObject) JSONObject.parse(resumeString.getBody());
log.info("招聘-导入候选人简历{}", resumeString.getBody());
ResumeExtract resumeExtract = null;
if ("success".equals(json.get("error_msg"))) {
if (StringUtils.isEmpty(json.get("results"))) {
log.info("招聘-导入候选人简历:results is null");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
JSONArray array = (JSONArray) json.get("results");
if (StringUtils.isEmpty(array.get(0))) {
log.info("招聘-导入候选人简历:results is null");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
JSONObject resultsJsonObject = (JSONObject) array.get(0);
resumeExtract = JSONObject.toJavaObject((JSONObject) resultsJsonObject.get("extract"), ResumeExtract.class);
} else {
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
if (StringUtils.isEmpty(resumeExtract) || StringUtils.isEmpty(resumeExtract.getBasic_infos())) {
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
Result<String> data = ossService.upload(userBean.getOrgCode(), "zpgl", file);
if(!StringUtils.isEmpty(data) && !StringUtils.isEmpty(data.getData())){
importCandidateDto.setFilePath(data.getData());
importCandidateDto.setFileName(file.getOriginalFilename());
}
return this.addZpglRcxx(userBean, resumeExtract, importCandidateDto);
}
@Override
public Result<Object> addCandidateByResumeSDK(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto) {
ResumeSdkDto resumeSdkDto = ResumeSdkDto.builder().ocr_type(1).need_avatar(0).file_name(file.getOriginalFilename()).file_cont(Base64.getStrFromPath(file)).build();
String resumeString = "";
try {
resumeString = resumeSDKUtil.getResumeByCvParser(resumeSdkDto, RESUMESDK_APPCODE);
}catch (Exception e){
e.printStackTrace();
}
JSONObject json = (JSONObject) JSONObject.parse(resumeString);
log.info("招聘-导入候选人简历{}", resumeString);
if(StringUtils.isEmpty(json)){
log.error("招聘-导入候选人简历: resumeSDKUtil.getResumeByCvParser return null. ");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
Status statusEntity = JSONObject.toJavaObject((JSONObject) json.get("status"), Status.class);
if(StringUtils.isEmpty(statusEntity) || !ResumeSdk.StatusCodeEnum.SUCCESSS.getType().equals(statusEntity.getCode())){
log.error("招聘-导入候选人简历:{}",ResumeSdk.StatusCodeEnum.getName(statusEntity.getCode()));
return ResultUtil.error("导入简历失败,请联系管理员~("+ResumeSdk.StatusCodeEnum.getName(statusEntity.getCode())+")");
}
Result<String> data = ossService.upload(userBean.getOrgCode(), "zpgl", file);
if(!StringUtils.isEmpty(data) && !StringUtils.isEmpty(data.getData())){
importCandidateDto.setFilePath(data.getData());
importCandidateDto.setFileName(file.getOriginalFilename());
}
return this.addZpglRcxx(userBean, json, importCandidateDto);
}
@Override
public boolean updateZpglRcxxZwxx(UserBean userBean, ZpglRcxxDto zpglRcxxDto) {
ZpglRcxx zpglRcxx = ZpglRcxx.builder().id(zpglRcxxDto.getId()).zpglZwxxId(zpglRcxxDto.getZpglZwxxId()).build();
ZpglMslcLog zpglMslcLog = new ZpglMslcLog();
zpglMslcLog.setZpglRcxxId(zpglRcxxDto.getId());
zpglMslcLog.setUserId(userBean.getEmpNum());
zpglMslcLog.setUserName(userBean.getQyzxEmpLogin().getUsername());
zpglMslcLog.setZpglRcxxStatus(JxglEnumInterface.MslcLogStatus.OTHER.getType());
zpglMslcLog.setDetail(userBean.getQyzxEmpLogin().getUsername() + " 更改候选人应聘职位.");
zpglRcxx.updateById();
return zpglMslcLogService.addZpglMslcLog(zpglMslcLog);
}
@Override
public boolean updateZpglOther(UserBean userBean, ZpglRcxxDto zpglRcxxDto,Integer userId) {
// 招聘-变更人才信息状态
// 添加面试流程记录
this.updateZpglRcxx(userBean,zpglRcxxDto);
// 职位信息已入职人数+1
ZpglZwxx zpglZwxx = ZpglZwxx.builder().id(zpglRcxxDto.getZpglZwxxId()).build().selectById();
if(!StringUtils.isEmpty(zpglZwxx)){
zpglZwxx.setEntryNum(zpglZwxx.getEntryNum()+1);
zpglZwxx.updateById();
}
// 维护微信公众平台表
ZpglRcxx zpglRcxx = ZpglRcxx.builder().id(zpglRcxxDto.getId()).build().selectById();
if(!StringUtils.isEmpty(zpglRcxx) && !StringUtils.isEmpty(zpglRcxx.getMobile())){
ZpglWxgzptEmpRcxx zpglWxgzptEmpRcxx = ZpglWxgzptEmpRcxx.builder().build().selectOne(
new QueryWrapper<ZpglWxgzptEmpRcxx>().select("id","zpgl_rcxx_id").lambda().eq(ZpglWxgzptEmpRcxx::getMobile,zpglRcxx.getMobile())
);
if(!StringUtils.isEmpty(zpglWxgzptEmpRcxx) && (StringUtils.isEmpty(zpglWxgzptEmpRcxx.getZpglRcxxId()) || zpglWxgzptEmpRcxx.getZpglRcxxId() <= 0)){
zpglWxgzptEmpRcxx.setOrgCode(userBean.getOrgCode());
zpglWxgzptEmpRcxx.setZpglRcxxId(zpglRcxx.getId());
zpglWxgzptEmpRcxx.setYgglMainEmpId(userId);
zpglWxgzptEmpRcxx.updateById();
}
if(StringUtils.isEmpty(zpglWxgzptEmpRcxx)){
zpglWxgzptEmpRcxx = new ZpglWxgzptEmpRcxx();
zpglWxgzptEmpRcxx.setOrgCode(userBean.getOrgCode());
zpglWxgzptEmpRcxx.setZpglRcxxId(zpglRcxx.getId());
zpglWxgzptEmpRcxx.setYgglMainEmpId(userId);
zpglWxgzptEmpRcxx.setMobile(zpglRcxx.getMobile());
zpglWxgzptEmpRcxx.insert();
}
}
return true;
}
/**
* 导入简历
* 同步人才信息 教育资讯 基本信息 其他信息 项目信息 工作信息
*
* @param resumeExtract
* @param importCandidateDto
*/
private Result<Object> addZpglRcxx(UserBean userBean, ResumeExtract resumeExtract, ImportCandidateDto importCandidateDto) {
ZpglRcxx zpglRcxx = ZpglRcxx.builder().build();
zpglRcxx.setZpglZwxxId(importCandidateDto.getZpglZwxxId());
zpglRcxx.setStatus(importCandidateDto.getStatus());
zpglRcxx.setZpglZpqdId(importCandidateDto.getZpglZpqdId());
zpglRcxx.setOrgCode(userBean.getOrgCode().toString());
zpglRcxx.setFileName(importCandidateDto.getFileName());
zpglRcxx.setFilePath(importCandidateDto.getFilePath());
Integer highesteducation = null;
// 添加人才信息
if (!StringUtils.isEmpty(resumeExtract.getBasic_infos())) {
zpglRcxx.setName(resumeExtract.getBasic_infos().getName());
String phone = resumeExtract.getBasic_infos().getPhone_numbers();
if (StringUtils.isEmpty(phone)) {
return ResultUtil.error("导入简历失败,手机号码不存在~");
}
// 查询简历是否重复导入
ZpglRcxx zpglRcxxEntiyt = ZpglRcxx.builder().build().selectOne(new QueryWrapper<ZpglRcxx>().lambda().eq(ZpglRcxx::getMobile, phone).eq(ZpglRcxx::getDeleteFlag, 0));
if (!StringUtils.isEmpty(zpglRcxxEntiyt)) {
return ResultUtil.error("简历已入库,请勿重复导入");
}
zpglRcxx.setMobile(phone);
zpglRcxx.setMail(resumeExtract.getBasic_infos().getEmail_address());
zpglRcxx.setWeixin(resumeExtract.getBasic_infos().getWechat());
zpglRcxx.setIdCard(resumeExtract.getBasic_infos().getId_number());
if (!StringUtils.isEmpty(resumeExtract.getBasic_infos().getGender())) {
zpglRcxx.setSex(resumeExtract.getBasic_infos().getGender().indexOf("男") != -1 ? 0 : 1);
}
//出生日期,格式化为 年-月,如2000-01,若只有年,则只显示年,如2000
if (!StringUtils.isEmpty(resumeExtract.getBasic_infos().getBirth_date()) && resumeExtract.getBasic_infos().getBirth_date().length() > 0) {
zpglRcxx.setDatebirth(this.getDate(resumeExtract.getBasic_infos().getBirth_date()));
}
if (!StringUtils.isEmpty(resumeExtract.getBasic_infos().getNation())) {
NationClass nationClass = NationClass.builder().build().selectOne(new QueryWrapper<NationClass>().lambda().like(NationClass::getName, resumeExtract.getBasic_infos().getNation()));
if (!StringUtils.isEmpty(nationClass)) {
zpglRcxx.setNationClassId(nationClass.getId());
}
}
zpglRcxx.setAddress(resumeExtract.getBasic_infos().getHome_location());
zpglRcxx.setUniversitie(resumeExtract.getBasic_infos().getSchool());
if (!StringUtils.isEmpty(resumeExtract.getBasic_infos().getCur_duration())) {
zpglRcxx.setWorkyears(Integer.parseInt(resumeExtract.getBasic_infos().getCur_duration()));
}
zpglRcxx.setCompany(resumeExtract.getBasic_infos().getCur_company());
zpglRcxx.insert();
}
if (!StringUtils.isEmpty(zpglRcxx.getId())) {
// 添加教育经历
if (!StringUtils.isEmpty(resumeExtract.getEducation_infos())) {
ZpglRcxxStudy zpglRcxxStudy = ZpglRcxxStudy.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<EducationInfo> list = resumeExtract.getEducation_infos();
for (EducationInfo entity : list) {
if (!StringUtils.isEmpty(entity.getStart_time()) && entity.getStart_time().length() > 0) {
zpglRcxxStudy.setStartTime(this.getDate(entity.getStart_time()));
}
if (!StringUtils.isEmpty(entity.getEnd_time()) && entity.getEnd_time().length() > 0) {
zpglRcxxStudy.setEndTime(this.getDate(entity.getEnd_time()));
}
zpglRcxxStudy.setSubject(entity.getMajor());
zpglRcxxStudy.setSchoolName(StringUtils.isEmpty(entity.getSchool()) ? entity.getCollege() : entity.getSchool());
zpglRcxxStudy.setEducation(this.getEducation(entity.getSchooling_record()));
highesteducation = zpglRcxxStudy.getEducation();
zpglRcxxStudy.insert();
}
}
// 添加工作经验
if (!StringUtils.isEmpty(resumeExtract.getWork_infos())) {
ZpglRcxxExperience zpglRcxxExperience = ZpglRcxxExperience.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<WorkInfo> list = resumeExtract.getWork_infos();
for (WorkInfo entity : list) {
zpglRcxxExperience.setCompany(entity.getCompany());
zpglRcxxExperience.setJobName(entity.getJob());
zpglRcxxExperience.setDepartment(entity.getDepartment());
zpglRcxxExperience.setWorkContent(entity.getDescribe());
if (!StringUtils.isEmpty(entity.getEnd_time()) && entity.getEnd_time().length() > 0) {
zpglRcxxExperience.setEndTime(this.getDate(entity.getEnd_time()));
}
if (!StringUtils.isEmpty(entity.getStart_time()) && entity.getStart_time().length() > 0) {
zpglRcxxExperience.setStartTime(this.getDate(entity.getStart_time()));
}
zpglRcxxExperience.insert();
}
}
// 添加项目信息
if (!StringUtils.isEmpty(resumeExtract.getProject_infos())) {
ZpglRcxxProject zpglRcxxProject = ZpglRcxxProject.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<ProjectInfo> list = resumeExtract.getProject_infos();
for (ProjectInfo entity : list) {
zpglRcxxProject.setProjectDescribe(entity.getDescribe());
zpglRcxxProject.setDuty(entity.getDuty());
zpglRcxxProject.setJob(entity.getJob());
zpglRcxxProject.setLocation(entity.getLocation());
zpglRcxxProject.setProjectName(entity.getProject_name());
if (!StringUtils.isEmpty(entity.getStart_time()) && entity.getStart_time().length() > 0) {
zpglRcxxProject.setStartTime(this.getDate(entity.getStart_time()));
}
if (!StringUtils.isEmpty(entity.getEnd_time()) && entity.getEnd_time().length() > 0) {
zpglRcxxProject.setEndTime(this.getDate(entity.getEnd_time()));
}
zpglRcxxProject.insert();
}
}
if (!StringUtils.isEmpty(highesteducation)) {
ZpglRcxx.builder().id(zpglRcxx.getId()).highesteducation(highesteducation.toString()).build().updateById();
}
}
return ResultUtil.success();
}
/**
* 导入简历
* 同步人才信息 教育资讯 基本信息 其他信息 项目信息 工作信息
* @sdkdocs http://www.resumesdk.com/docs/rs-parser.html
* @param json
* @param importCandidateDto
*/
private Result<Object> addZpglRcxx(UserBean userBean, JSONObject json, ImportCandidateDto importCandidateDto) {
ReumeSdkResult reumeSdkResult = JSONObject.toJavaObject((JSONObject) json.get("result"), ReumeSdkResult.class);
if(StringUtils.isEmpty(reumeSdkResult)){
log.info("招聘-导入候选人简历:results is null");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
/** 基础信息开始 */
ZpglRcxx zpglRcxx = ZpglRcxx.builder().build();
zpglRcxx.setZpglZwxxId(importCandidateDto.getZpglZwxxId());
zpglRcxx.setStatus(importCandidateDto.getStatus());
zpglRcxx.setZpglZpqdId(importCandidateDto.getZpglZpqdId());
zpglRcxx.setOrgCode(userBean.getOrgCode().toString());
zpglRcxx.setFileName(importCandidateDto.getFileName());
zpglRcxx.setFilePath(importCandidateDto.getFilePath());
// 添加人才信息
zpglRcxx.setName(reumeSdkResult.getName());
String phone = reumeSdkResult.getPhone();
if (StringUtils.isEmpty(phone)) {
return ResultUtil.error("导入简历失败,手机号码不存在~");
}
// 查询简历是否重复导入
ZpglRcxx zpglRcxxEntiyt = ZpglRcxx.builder().build().selectOne(new QueryWrapper<ZpglRcxx>().lambda().eq(ZpglRcxx::getMobile, phone).eq(ZpglRcxx::getDeleteFlag, 0));
if (!StringUtils.isEmpty(zpglRcxxEntiyt)) {
return ResultUtil.error("简历已入库,请勿重复导入");
}
zpglRcxx.setMobile(phone);
zpglRcxx.setMail(reumeSdkResult.getEmail());
zpglRcxx.setWeixin(reumeSdkResult.getWeixin());
zpglRcxx.setIdCard(reumeSdkResult.getId_card());
if (!StringUtils.isEmpty(reumeSdkResult.getGender())) {
zpglRcxx.setSex(reumeSdkResult.getGender().indexOf("男") != -1 ? 0 : 1);
}
//出生日期,格式化为 年.月,如2000.01,若只有年,则只显示年,如2000
if (!StringUtils.isEmpty(reumeSdkResult.getBirthday()) && reumeSdkResult.getBirthday().length() > 0) {
zpglRcxx.setDatebirth(this.getDate(reumeSdkResult.getBirthday()));
}
if (!StringUtils.isEmpty(reumeSdkResult.getRace())) {
NationClass nationClass = NationClass.builder().build().selectOne(new QueryWrapper<NationClass>().lambda().like(NationClass::getName, reumeSdkResult.getRace()));
if (!StringUtils.isEmpty(nationClass)) {
zpglRcxx.setNationClassId(nationClass.getId());
}
}
// 身高
if(!StringUtils.isEmpty(reumeSdkResult.getHeight())){
String[] height = reumeSdkResult.getHeight().split("cm");
if(height.length > 0){
zpglRcxx.setHeight(Integer.parseInt(height[0]));
}
}
// 体重
if(!StringUtils.isEmpty(reumeSdkResult.getWeight())){
String[] height = reumeSdkResult.getWeight().split("kg");
if(height.length > 0){
zpglRcxx.setWeight(Integer.parseInt(height[0]));
}
}
zpglRcxx.setNativePlace(reumeSdkResult.getNationality());
zpglRcxx.setAddress(reumeSdkResult.getLiving_address());
zpglRcxx.setUniversitie(reumeSdkResult.getCollege());
zpglRcxx.setSubject(reumeSdkResult.getMajor());
if(!StringUtils.isEmpty(reumeSdkResult.getDegree())){
zpglRcxx.setHighesteducation(this.getEducation(reumeSdkResult.getDegree())+"");
}
if (!StringUtils.isEmpty(reumeSdkResult.getWork_year_norm())) {
if(reumeSdkResult.getWork_year_norm().indexOf(".") != -1){
zpglRcxx.setWorkyears(Integer.parseInt(reumeSdkResult.getWork_year_norm().substring(0,reumeSdkResult.getWork_year_norm().lastIndexOf(".")))+1);
}else {
zpglRcxx.setWorkyears(Integer.parseInt(reumeSdkResult.getWork_year_norm()));
}
}
if(!StringUtils.isEmpty(reumeSdkResult.getExpect_salary_max())){
zpglRcxx.setSalary(Integer.parseInt(reumeSdkResult.getExpect_salary_max()));
}
zpglRcxx.setCompany(reumeSdkResult.getWork_company());
zpglRcxx.setZjzw(reumeSdkResult.getWork_position());
zpglRcxx.setContMyDesc(reumeSdkResult.getCont_my_desc());
zpglRcxx.setHobby(reumeSdkResult.getCont_hobby());
zpglRcxx.insert();
/** 基础信息结束 */
if (!StringUtils.isEmpty(zpglRcxx.getId())) {
// 初始化流程记录
ZpglMslcLog zpglMslcLog = new ZpglMslcLog();
zpglMslcLog.setZpglRcxxId(zpglRcxx.getId());
zpglMslcLog.setUserId(userBean.getEmpNum());
zpglMslcLog.setUserName(userBean.getQyzxEmpLogin().getUsername());
zpglMslcLog.setZpglRcxxStatus(JxglEnumInterface.MslcLogStatus.OTHER.getType());
zpglMslcLog.setDetail(ZpglMessageTemplate.SYS_ADD);
zpglMslcLogService.addZpglMslcLog(zpglMslcLog);
// 添加教育经历
if (!StringUtils.isEmpty(reumeSdkResult.getEducation_objs())) {
ZpglRcxxStudy zpglRcxxStudy = ZpglRcxxStudy.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<Education_objs> list = reumeSdkResult.getEducation_objs();
for (Education_objs entity : list) {
if (!StringUtils.isEmpty(entity.getStart_date()) && entity.getStart_date().length() > 0) {
zpglRcxxStudy.setStartTime(this.getDate(entity.getStart_date()));
}
if (!StringUtils.isEmpty(entity.getEnd_date()) && entity.getEnd_date().length() > 0) {
zpglRcxxStudy.setEndTime(this.getDate(entity.getEnd_date()));
}
zpglRcxxStudy.setSubject(entity.getEdu_major());
zpglRcxxStudy.setSchoolName(entity.getEdu_college());
zpglRcxxStudy.setEducation(this.getEducation(entity.getEdu_degree_norm()));
zpglRcxxStudy.insert();
}
}
// 添加工作经验
if (!StringUtils.isEmpty(reumeSdkResult.getJob_exp_objs())) {
ZpglRcxxExperience zpglRcxxExperience = ZpglRcxxExperience.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<Job_exp_objs> list = reumeSdkResult.getJob_exp_objs();
for (Job_exp_objs entity : list) {
zpglRcxxExperience.setCompany(entity.getJob_cpy());
zpglRcxxExperience.setJobName(entity.getJob_position());
zpglRcxxExperience.setDepartment(entity.getJob_dept());
zpglRcxxExperience.setWorkContent(entity.getJob_content());
zpglRcxxExperience.setReason(entity.getJob_why_leave());
if (!StringUtils.isEmpty(entity.getEnd_date()) && entity.getEnd_date().length() > 0) {
zpglRcxxExperience.setEndTime(this.getDate(entity.getEnd_date()));
}
if (!StringUtils.isEmpty(entity.getStart_date()) && entity.getStart_date().length() > 0) {
zpglRcxxExperience.setStartTime(this.getDate(entity.getStart_date()));
}
zpglRcxxExperience.insert();
}
}
// 添加项目信息
if (!StringUtils.isEmpty(reumeSdkResult.getProj_exp_objs())) {
ZpglRcxxProject zpglRcxxProject = ZpglRcxxProject.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<Proj_exp_objs> list = reumeSdkResult.getProj_exp_objs();
for (Proj_exp_objs entity : list) {
zpglRcxxProject.setProjectDescribe(entity.getProj_content());
zpglRcxxProject.setDuty(entity.getProj_resp());
zpglRcxxProject.setJob(entity.getProj_position());
zpglRcxxProject.setProjectName(entity.getProj_name());
if (!StringUtils.isEmpty(entity.getStart_date()) && entity.getStart_date().length() > 0) {
zpglRcxxProject.setStartTime(this.getDate(entity.getStart_date()));
}
if (!StringUtils.isEmpty(entity.getEnd_date()) && entity.getEnd_date().length() > 0) {
zpglRcxxProject.setEndTime(this.getDate(entity.getEnd_date()));
}
zpglRcxxProject.insert();
}
}
// 添加培训经历
if (!StringUtils.isEmpty(reumeSdkResult.getTraining_objs())) {
ZpglRcxxTrain zpglRcxxTrain = ZpglRcxxTrain.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<Training_objs> list = reumeSdkResult.getTraining_objs();
for (Training_objs entity : list) {
zpglRcxxTrain.setTrainCompany(entity.getTrain_org());
zpglRcxxTrain.setTrainContent(entity.getTrain_cont());
if (!StringUtils.isEmpty(entity.getStart_date()) && entity.getStart_date().length() > 0) {
zpglRcxxTrain.setStartTime(this.getDate(entity.getStart_date()));
}
if (!StringUtils.isEmpty(entity.getEnd_date()) && entity.getEnd_date().length() > 0) {
zpglRcxxTrain.setEndTime(this.getDate(entity.getEnd_date()));
}
zpglRcxxTrain.insert();
}
}
}
return ResultUtil.success();
}
/**
* 根据string时间获取date(2019-10或2019)
*
* @param date
* @return
*/
private Date getDate(String date) {
String datebirth = "";
date = date.replace(".","-");
String[] num = date.split("-");
if (num.length == 1) {
datebirth = num[0] + "-1-1";
} else if (num.length == 2) {
datebirth = num[0] + "-" + num[1] + "-1";
}
return datebirth.length() > 0 ? ClockInTool.strToDateLong(datebirth) : null;
}
/**
* 获取学历类型
*
* @param str
* @return
*/
private Integer getEducation(String str) {
Integer education = 0;
if (StringUtils.isEmpty(str)) {
return education;
}
// 博士研究生/硕士研究生/本科/专科/高中/中专/初中
// 小学、初中、高中、中专、大专、本科、硕士研究生、博士研究生、博士后、mba
if (str.indexOf("初中") != -1) {
education = 2;
} else if (str.indexOf("小学") != -1) {
education = 1;
}else if (str.indexOf("中专") != -1) {
education = 4;
} else if (str.indexOf("高中") != -1) {
education = 3;
} else if (str.indexOf("专科") != -1 || str.indexOf("大专") != -1) {
education = 5;
} else if (str.indexOf("本科") != -1) {
education = 6;
} else if (str.indexOf("硕士研究生") != -1 || str.indexOf("硕士") != -1) {
education = 7;
} else if (str.indexOf("博士研究生") != -1 || str.indexOf("博士") != -1) {
education = 8;
}
return education;
}
/**
* 添加offer记录
*
* @param userBean
* @param zpglRcxxDto
* @return
*/
private ZpglRcxxOffer insertZpglRcxxOffer(UserBean userBean, ZpglRcxxDto zpglRcxxDto) {
Integer orgCode = userBean.getOrgCode();
ZpglRcxxOffer zpglRcxxOffer = ZpglRcxxOffer.builder().build();
zpglRcxxOffer.setOrgCode(orgCode);
zpglRcxxOffer.setRcxxName(zpglRcxxDto.getName());
zpglRcxxOffer.setZpglRcxxId(zpglRcxxDto.getId());
zpglRcxxOffer.setRzTime(zpglRcxxDto.getYjrzTime());
// 所在部门
ZzglBmgwM zzglBmgwM = ZzglBmgwM.builder().build().selectOne(
new QueryWrapper<ZzglBmgwM>().lambda().eq(ZzglBmgwM::getOrgCode, orgCode).eq(ZzglBmgwM::getId, zpglRcxxDto.getBmgwId()));
Integer bmid = null;
if (!StringUtils.isEmpty(zzglBmgwM)) {
zpglRcxxOffer.setGangwei(zzglBmgwM.getName());
bmid = zzglBmgwM.getUpId();
}
// 所在职位
ZzglBmgwM z = ZzglBmgwM.builder().build().selectOne(
new QueryWrapper<ZzglBmgwM>().lambda().eq(ZzglBmgwM::getOrgCode, orgCode).eq(ZzglBmgwM::getId, bmid));
if (!StringUtils.isEmpty(z)) {
zpglRcxxOffer.setBumen(z.getName());
}
// 所在公司
ZzglBmgwM company = ZzglBmgwM.builder().build().selectOne(
new QueryWrapper<ZzglBmgwM>().select("name").lambda().eq(ZzglBmgwM::getOrgCode, orgCode).eq(ZzglBmgwM::getUpId, 0));
if (!StringUtils.isEmpty(company)) {
zpglRcxxOffer.setTitle(company.getName() + "录用函");
zpglRcxxOffer.setCompanyName(company.getName());
}
YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().select("phone", "name", "work_email").lambda()
.eq(YgglMainEmp::getOrgCode, orgCode).eq(YgglMainEmp::getEmpNum, zpglRcxxDto.getLinkId()));
if (!StringUtils.isEmpty(ygglMainEmp)) {
zpglRcxxOffer.setLinkName(ygglMainEmp.getName());
zpglRcxxOffer.setLinkPhone(ygglMainEmp.getPhone());
zpglRcxxOffer.setLinkEmail(ygglMainEmp.getWorkEmail());
}
zpglRcxxOffer.insert();
return zpglRcxxOffer;
}
}
package cn.timer.api.controller.zpgl.sevice;
import cn.timer.api.dto.template.InterviewNotice;
import java.util.Map;
/**
* @author longys
* @date 2022/3/25 18:08
*/
public interface ZpglWxgzptService {
/**
* 添加消息队列
* @param map
* @return
*/
String addMessageQueue(Map<String,Object> map);
/**
* 安排面试 通知面试官、面试者
* 添加消息队列
* @param interviewNotice
* @return
*/
String addInterviewMessageQueue(InterviewNotice interviewNotice);
/**
* 发起应聘登记 or 测评
* 添加消息队列
* @param interviewNotice
* @return
*/
String sendApplyOrCePin(InterviewNotice interviewNotice);
}
package cn.timer.api.controller.zpgl.sevice;
import cn.hutool.http.HttpUtil;
import cn.timer.api.bean.wechat.MessageTemplate;
import cn.timer.api.dto.template.InterviewNotice;
import cn.timer.api.dto.template.TemplateData;
import cn.timer.api.dto.wxgzh.MessageQueueDto;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author longys
* @date 2022/3/25 18:08
*/
@Slf4j
@Service
@Transactional(rollbackOn = Exception.class)
public class ZpglWxgzptServiceImpl implements ZpglWxgzptService {
@Value("${youling.serverUrl}")
private String serverUrl;
@Override
public String addMessageQueue(Map<String, Object> map) {
return HttpUtil.post(serverUrl + "/wxgzh/addMessageQueue", map);
}
@Override
public String addInterviewMessageQueue(InterviewNotice interviewNotice) {
//消息队列对象
MessageQueueDto mqd = new MessageQueueDto();
BeanUtils.copyProperties(interviewNotice, mqd);
/** 模板消息内容 start */
List<TemplateData> templateData = new ArrayList<>();
// 内容
TemplateData key1 = new TemplateData("first", interviewNotice.getContentStr(), "#000000");
templateData.add(key1);
// 面试职位
TemplateData key2 = new TemplateData("keyword1", interviewNotice.getZpglZwxxName(), "#000000");
templateData.add(key2);
// 面试时间
TemplateData key3 = new TemplateData("keyword2", interviewNotice.getInterviewTime(), "#000000");
templateData.add(key3);
// 备注
TemplateData key4 = new TemplateData("remark", interviewNotice.getRemark(), "#000000");
templateData.add(key4);
//数据处理成固定好的json格式
String content = mqd.getContentJson(templateData);
mqd.setContent(content);
/** 模板消息内容 end */
Map map = JSON.parseObject(JSON.toJSONString(mqd), Map.class);
return HttpUtil.post(serverUrl + "/wxgzh/addMessageQueue", map);
}
@Override
public String sendApplyOrCePin(InterviewNotice interviewNotice) {
//消息队列对象
MessageQueueDto mqd = new MessageQueueDto();
BeanUtils.copyProperties(interviewNotice, mqd);
/** 模板消息内容 start */
List<TemplateData> templateData = new ArrayList<>();
// 内容
TemplateData key = new TemplateData("first", interviewNotice.getContentStr(), "#000000");
templateData.add(key);
// 应聘职位
TemplateData key1 = new TemplateData("keyword1", interviewNotice.getZpglZwxxName(), "#000000");
templateData.add(key1);
// 通知内容
TemplateData key2 = new TemplateData("keyword2", interviewNotice.getContentNotice(), "#000000");
templateData.add(key2);
// 通知人
TemplateData key3 = new TemplateData("keyword3", interviewNotice.getNoticeName(), "#000000");
templateData.add(key3);
// 通知时间
TemplateData key4 = new TemplateData("keyword4", interviewNotice.getNowTime(), "#000000");
templateData.add(key4);
// 备注
TemplateData remark = new TemplateData("remark", interviewNotice.getRemark(), "#000000");
templateData.add(remark);
//数据处理成固定好的json格式
String content = mqd.getContentJson(templateData);
mqd.setContent(content);
/** 模板消息内容 end */
Map map = JSON.parseObject(JSON.toJSONString(mqd), Map.class);
return HttpUtil.post(serverUrl + "/wxgzh/addMessageQueue", map);
}
}
package cn.timer.api.dao.yggl;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.timer.api.dto.yggl.YgmzDto;
/**
* 民族表
* @author Tang 2019-11-15
*/
@Repository
public interface YgMzDtoMapper extends BaseMapper<YgmzDto> {
}
package cn.timer.api.dao.clazz;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.timer.api.bean.clazz.NationClass;
/**
* 民族表
* @author Tang 2019-11-15
*/
@Repository
public interface NationClassMapper extends BaseMapper<NationClass> {
}
......@@ -19,7 +19,7 @@ import cn.timer.api.dto.zzgl.DepartmentStaffDto;
/**
* 员工档案+统计图查询
*
*
* @author dsc 2019-11-23
*/
@Repository
......@@ -30,17 +30,17 @@ public interface YgglMainEmpMapper extends BaseMapper<YgglMainEmp> {
* @return
*/
List<YgbintuDto> rsybp(Integer orgCode);
/**
* 查询当月离职人数
* @param userBean
* @param userBean
* @return
*/
Integer benyueLz(Integer orgCode);
/**
* 查询当月转正人数
* @param userBean
* @param userBean
* @return
*/
Integer benyueZz(Integer orgCode);
......@@ -49,75 +49,75 @@ public interface YgglMainEmpMapper extends BaseMapper<YgglMainEmp> {
* @param userBean
* @return
*/
List<YgQueryDto> queryEmpMessage(@Param("orgCode") Integer orgCode,@Param("isInsure")Integer isInsure);
List<YgQueryDto> queryEmpMessage(@Param("orgCode") Integer orgCode);
/**
* 查询在职员工(试用员工人数+正式员工人数)
* @param userBean
* @param userBean
* @return
*/
YgglCartogramDto queryInservice(UserBean userBean);
/**
* 查询当月入职人数
* @param userBean
* @param userBean
* @return
*/
YgglCartogramDto queryInduction(UserBean userBean);
/**
* 查询本月转正人数
* @param userBean
* @param userBean
* @return
*/
YgglCartogramDto queryPositive(UserBean userBean);
/**
* 查询员工平均年龄
* @param userBean
* @param userBean
* @return
*/
YgglCartogramDto queryAvgAge(UserBean userBean);
/**
* 查询部门名称及人数
* @param userBean
* @param userBean
* @return
*/
List<YgglCartogramDto> queryDepartmentNum(UserBean userBean);
/**
* 查询岗位名称及人数
* @param userBean
* @param userBean
* @return
*/
List<YgglCartogramDto> queryJobsNum(UserBean userBean);
/**
* 学历及人数查询
* @param userBean
* @param userBean
* @return
*/
List<YgglCartogramDto> queryEducation(UserBean userBean);
/**
* 员工年龄分布查询
* @param userBean
* @param userBean
* @return
*/
List<YgglCartogramDto> queryEmpAge(UserBean userBean);
/**
* 籍贯统计(省份)人数分布查询
* @param userBean
* @param userBean
* @return
*/
List<YgglCartogramDto> queryNativeplace(UserBean userBean);
/**
* 员工工龄分布查询
* @param userBean
* @param userBean
* @return
*/
List<YgglCartogramDto> queryWorkingAge(UserBean userBean);
......@@ -129,9 +129,18 @@ public interface YgglMainEmpMapper extends BaseMapper<YgglMainEmp> {
* @return
*/
IPage<YgglMainEmp> selectME(Page<YgglMainEmp> page,@Param("param") EmpQuery empQuery);
List<DepartmentStaffDto> DepartmentStaff(Integer orgcode,Integer upid);
/**
* 查询在职员工数
* @param orgCode
* @param status 1在职 2全职 3试用期 4正式 5待离职 6已离职
* @return
*/
Integer selectEmpCount(Integer orgCode,Integer status);
List<YgglMainEmp> selectListByIds(@Param("array")String[] ids);
List<YgglMainEmp> selectListByIZjNum(@Param("array")String[] zjNum,@Param("orgCode") Integer orgCode);
......
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglCompany;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理合同公司字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-17 15:14:40
*/
@Repository
public interface ZpglCompanyMapper extends BaseMapper<ZpglCompany> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglCptk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理测评题库表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglCptkMapper extends BaseMapper<ZpglCptk> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglDtk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理用户测评答题卡表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglDtkMapper extends BaseMapper<ZpglDtk> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglFail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理淘汰原因字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglFailMapper extends BaseMapper<ZpglFail> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglGzdd;
import cn.timer.api.bean.zpgl.ZpglZj;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理工作地点字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-17 15:14:40
*/
@Repository
public interface ZpglGzddMapper extends BaseMapper<ZpglGzdd> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglMslcLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理面试流程记录表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglMslcLogMapper extends BaseMapper<ZpglMslcLog> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxCertificate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 简历证书
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxCertificateMapper extends BaseMapper<ZpglRcxxCertificate> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxExperience;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 工作经验
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxExperienceMapper extends BaseMapper<ZpglRcxxExperience> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxJtzl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 家庭资料表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxJtzlMapper extends BaseMapper<ZpglRcxxJtzl> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxLxxxb;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 联系信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxLxxxbMapper extends BaseMapper<ZpglRcxxLxxxb> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxx;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理人才信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxMapper extends MPJBaseMapper<ZpglRcxx> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxOffer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* Offer发送记录
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-04-14 15:14:40
*/
@Repository
public interface ZpglRcxxOfferMapper extends BaseMapper<ZpglRcxxOffer> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxProject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 教育经历
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxProjectMapper extends BaseMapper<ZpglRcxxProject> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxStudy;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 教育经历
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxStudyMapper extends BaseMapper<ZpglRcxxStudy> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxTrain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 培训经验
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglRcxxTrainMapper extends BaseMapper<ZpglRcxxTrain> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglWxgzptEmpRcxx;
import com.github.yulichang.base.MPJBaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理人才信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-21 15:14:40
*/
@Repository
public interface ZpglWxgzptEmpRcxxMapper extends MPJBaseMapper<ZpglWxgzptEmpRcxx> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglCompany;
import cn.timer.api.bean.zpgl.ZpglZj;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理职级字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-17 15:14:40
*/
@Repository
public interface ZpglZjMapper extends BaseMapper<ZpglZj> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglZpqd;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理职级字典表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-28 15:14:40
*/
@Repository
public interface ZpglZpqdMapper extends BaseMapper<ZpglZpqd> {
}
package cn.timer.api.dao.zpgl;
import cn.timer.api.bean.zpgl.ZpglZwxx;
import com.github.yulichang.base.MPJBaseMapper;
import org.springframework.stereotype.Repository;
/**
* 招聘管理职位信息表
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Repository
public interface ZpglZwxxMapper extends MPJBaseMapper<ZpglZwxx> {
}
package cn.timer.api.dto.baidu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 简历相关请求参数,每次一份简历
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/29
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BaiduTicResumeDto implements Serializable {
/**
* 简历文档名称,文件大小不超过10M
*/
private String filename;
/**
* 简历文档类型,目前支持pdf、doc、docx、wps、txt、jpg、jpeg、png、bmp、tif格式
*/
private String filetype;
/**
* 待解析文档内容,必须是二进制读取,base64编码
*/
private String filedata;
/**
* 非必填
* 需要保留的字段,每个元素表示需要保留的字段位置,
* 具体格式参考返回参数中results参数部分,
* 如' ["basic_infos.name", "education_infos[].school", "work_infos"] ';
* 层级按半角圆点“.”分割,list类型用半角方括号“[]”表示。如果不填该参数,默认选择全部字段
*/
private String fields;
}
package cn.timer.api.dto.baidu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 基本信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BasicInfo implements Serializable {
// 姓名:中文姓名
private String name;
// 性别:男/女
private String gender;
private String age; // 年龄:当前年龄,整数
// 工作年限:当前工作年限,整数,多段工作年限会累加并向下取整
private String cur_duration;
private String highest_degree; // 学历:最高学历(包括在读),格式统一为博士/硕士/学士
private String work_begin_year; // 开始工作年限:第一份工作的开始年份,四位数年份,如2013
private String id_number; // 身份证号:中国居民身份证号码,纯数字
// 生日:出生日期,格式化为 年-月,如2000-01,若只有年,则只显示年,如2000
private String birth_date;
// 民族:中国56个民族, 如 汉族,壮族
private String nation;
private String location; // 所在地:所在地城市或区域,如 深圳市,深圳市南山区
// 详细地址:具体家庭居住地,如 深圳市南山区华联花园6栋2-224
private String home_location;
// 当前公司
private String cur_company;
private String cur_job; // 当前职位
// 毕业学校:最高学历学校
private String school;
private String major; // 专业:最高学历对应的专业
private String job_intention; // 求职意向
private String cur_package; // 当前薪水:当前工资或当前工资范围,如10-20万人民币等,以简历为准
private String desire_package; // 期望薪水:期望工资或期望工资范围,如20k-30k等,以简历为准
private String industry; // 所属行业:最新工作的所属行业
private String job_status; // 求职状态:在职/正在找工作(在职)/考虑好的职业机会(在职)/已离职/暂不考虑其他机会/应届生,输出为原文
private String politic; // 政治面貌:党员/团员/群众,输出为原文
private String marriage; // 婚姻状况:未婚/已婚,输出为原文
private String birth_place; // 籍贯:籍贯地区,如 广东汕头,上海,江苏南通。以简历描述为准,输出为原文
private String desire_loc; // 期望工作地区:期望工作城市或区域,多个地区则以英文逗号分隔,如 北京,上海,广州,深圳,输出为原文
// 联系方式:国内11位手机号,格式化为纯数字
private String phone_numbers;
// 邮箱:合格邮箱地址
private String email_address;
private String landline; // 固定电话:国内8位座机号
private String qq; // QQ号:QQ号码
// 微信号:微信账号
private String wechat;
private String skill_text;
}
package cn.timer.api.dto.baidu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 教育信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EducationInfo implements Serializable {
private String school; // 学校
private String college; // 学院
private String major; // 专业
private String schooling_record; // 学历,输出统一为:博士研究生/硕士研究生/本科/专科/高中/中专/初中
private String degree; // 学位,输出统一为:博士/硕士/学士
private String start_time; // 开始年份-月份,若只有年则只输出年。如2019-10或2019
private String end_time; // 结束年份-月份,若只有年则只输出年。如2019-10或2019
private String is_in; // 是否仍在校:1表示在,0表示不在
private String gpa; // Gpa
private String rank; // 排名
}
package cn.timer.api.dto.baidu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 其他信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ElseInfo implements Serializable {
private String self_evaluation; // 个人评价
private String skills; // 技能:掌握技能列表,用竖线分隔
private String honor; // 所获奖项:用竖线分隔
private String lang; // 外语:掌握外语水平,用竖线分隔
private String lang_level; // 外语水平,格式为 语言-水平:分数,如 英语-CET4:502,英语-雅思:6.5,用竖线分隔
private String certificate; // 获得证书,用竖线分隔
}
package cn.timer.api.dto.baidu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 项目信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProjectInfo implements Serializable {
private String project_name; // 项目名称
private String job; // 项目角色:职位名称/职位名
private String describe; // 工作描述:项目详情介绍
private String duty; // 个人在该项目负责的具体工作详情
private String location; // 项目地点城市或区域
private String start_time; // 开始年份-月份,若只有年则只输出年。如2019-10或2019
private String end_time; // 结束年份-月份,若只有年则只输出年。如2019-10或2019
private String is_in; // 是否仍在:1表示在,0表示不在
}
package cn.timer.api.dto.baidu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* 简历摘录
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ResumeExtract implements Serializable {
private BasicInfo basic_infos;
private List<EducationInfo> education_infos;
private ElseInfo else_infos;
private List<ProjectInfo> project_infos;
private List<WorkInfo> work_infos;
}
package cn.timer.api.dto.baidu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 工作信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WorkInfo implements Serializable {
// 公司名称
private String company;
// 部门名称/所在部门
private String department;
private String location; // 工作城市/工作地点
// 职位名称
private String job;
//private String package; // 该岗位工资水平,如,3000-5000元/月,输出为原文
// 开始年份-月份,若只有年则只输出年。如2019-10或2019
private String start_time;
// 结束年份-月份,若只有年则只输出年。如2019-10或2019
private String end_time;
private String is_in; // 是否仍在:1表示在,0表示不在
// 工作内容
private String describe;
}
package cn.timer.api.dto.email;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-4-13 10:05:49
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SendMessageDto implements Serializable {
private static final long serialVersionUID = -1599962875587367209L;
@ApiModelProperty(value = "创建id")
private Integer createdUser;
@ApiModelProperty(value = "创建时间")
private Date createdTime;
@ApiModelProperty(value = "邮件主题")
private String subject;
@ApiModelProperty(value = "邮件内容")
private String content;
@ApiModelProperty(value = "收件人邮箱")
private String receiverEmail;
@ApiModelProperty(value = "发件人邮箱")
private String senderEmail;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 语言证书列表
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Cert_objs implements Serializable {
/**
* 语言名称
*/
private String langcert_lang;
/**
* 证书名称
*/
private String langcert_name;
/**
* 证书成绩
*/
private String langcert_score;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 教育经历
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Education_objs implements Serializable {
/**
* 学校名称
*/
private String edu_college;
/**
* 专业名称
*/
private String edu_major;
/**
* 开始时间
*/
private String start_date;
/**
* 结束时间
*/
private String end_date;
/**
* 学历
*/
private String edu_degree;
/**
* 学历:小学、初中、高中、中专、大专、本科、硕士研究生、博士研究生、博士后、mba
*/
private String edu_degree_norm;
/**
* 学校排名:取值1~1000
*/
private String edu_college_rank;
/**
* 学校类型取值0~7:
* 0:普通院校
* 1:985
* 2:211
* 3:港澳台院校
* 4:海外院校
* 5:中学
* 6:职业教育
* 7:培训机构
*/
private String edu_college_type;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Eval implements Serializable {
private int salary;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Industries implements Serializable {
private double tag_weight;
private String tag_name;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 工作经历及实习经历
* 其中实习经历通过job_nature="实习"进行标识
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Job_exp_objs implements Serializable {
/**
* 职位
*/
private String job_position;
/**
* 结束时间
*/
private String end_date;
/**
* 工作内容
*/
private String job_content;
/**
* 公司名称
*/
private String job_cpy;
/**
* 行业名称
*/
private String job_industry;
/**
* 公司规模
*/
private String job_cpy_size;
/**
* 持续时间 比如“1年3个月”、“3年”、“6个月”
*/
private String job_duration;
/**
* 开始时间
*/
private String start_date;
/**
* 工作性质 全职、兼职、实习
*/
private String job_nature;
/**
* 所在部门,部门名称
*/
private String job_dept;
/**
* 离职原因
*/
private String job_why_leave;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class JsonRootBean implements Serializable {
private Status status;
private ReumeSdkResult result;
private Eval eval;
private Tags tags;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 语言技能
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Lang_objs implements Serializable {
/**
* 语言名称
*/
private String language_name;
/**
* 熟练程度
*/
private String language_level;
/**
* 读写能力
*/
private String language_read_write;
/**
* 听说能力
*/
private String language_listen_speak;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Pos_tags implements Serializable {
private double tag_weight;
private String tag_name;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Pos_types implements Serializable {
private double tag_weight;
private String tag_name;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 项目经历
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Proj_exp_objs implements Serializable {
/**
* 开始时间
*/
private String start_date;
/**
* 结束时间
*/
private String end_date;
/**
* 项目名称
*/
private String proj_name;
/**
* 所在公司
*/
private String proj_cpy;
/**
* 担任职位
*/
private String proj_position;
/**
* 项目内容
*/
private String proj_content;
/**
* 项目职责
*/
private String proj_resp;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 简历相关请求参数,每次一份简历
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ResumeSdkDto implements Serializable {
/**
* 简历文档名称,文件大小不超过10M
*/
private String file_name;
/**
* 必填字段 简历文件内容(以base64编码),其中:
* 1)图片简历:经based64编码后大小建议不超过1M,最短边至少50px,最长边最大4096px,
* 支持jpg/jpeg/png/bmp/tif/gif格式;
* 2)非图片简历:经based64编码后大小不超过10M(注:阿里云接口是不超过8M);
*/
private String file_cont;
/**
* 可选字段 是否需要解析头像,0为不需要,1为需要,默认为0
*/
private Integer need_avatar;
/**
* 可选字段 ocr(图片解析所用到的文字识别)类型,0为基础版,1为高级版,默认为0。
* 其中高级版效果更佳,但是收费略有不同,具体请参考报价单;
*/
private Integer ocr_type;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ReumeSdkResult implements Serializable {
private String name;
private String gender;
private String age;
private String marital_status;
private String polit_status;
private String major;
private String surname;
private String height;
private String weight;
private String birthday;
private String city_norm;
private String college;
private String college_type;
private String college_rank;
private String has_oversea_edu;
private String has_oversea_exp;
private String city;
private String grad_time;
private String degree;
private String id_card;
private String race;
private String nationality;
private String english_level;
private String computer_level;
private String work_position;
private String work_company;
private String work_industry;
private String work_start_time;
private String work_year_norm;
private String work_year;
private String work_job_nature;
private String work_start_time_inf;
private String phone;
private String email;
private String postal_code;
private String qq;
private String weixin;
private String expect_salary;
private String expect_salary_min;
private String expect_salary_max;
private String expect_job;
private String expect_industry;
private String living_address;
private String living_address_norm;
private String hukou_address_norm;
private String hukou_address;
private String hometown_address_norm;
private String hometown_address;
private String resume_type;
private String resume_source;
private String resume_integrity;
private Date resume_parse_time;
private String resume_name;
private String avatar_data;
private String cont_my_desc;
private String cont_hobby;
private List<Education_objs> education_objs;
private List<Job_exp_objs> job_exp_objs;
private List<Proj_exp_objs> proj_exp_objs;
private List<Training_objs> training_objs;
private List<Cert_objs> cert_objs;
private List<Lang_objs> lang_objs;
private List<Skills_objs> skills_objs;
private String cont_basic_info;
private String cont_expect_job;
private String cont_education;
private String cont_job_exp;
private String cont_proj_exp;
private String cont_job_skill;
private String raw_text;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 技能列表
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Skills_objs implements Serializable {
/**
* 熟练程度
*/
private String skills_level;
/**
* 技能名称
* 技能名词,比如“java开发”、“市场调研”等
*/
private String skills_name;
/**
* 技能使用时间 时长
*/
private String skills_time;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Skills_tags implements Serializable {
private double tag_weight;
private String tag_name;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Status implements Serializable {
/**
* 200 正常状态,表示解析成功
* 250 账号(uid)或密码(pwd)错误
* 251 账号剩余用量为0(需及时充值)
* 260 请求参数错误
* 261 简历内容为空
* 262 简历内容过长
* 263 不支持的简历文件格式
* 264 base64解码出错
* 265 图片文件过大,或者长宽大小超过限制
* 266 输入参数file_name缺少文件后缀名(请带上正确的文件后缀,如果是纯文本则为.txt)
* 267 输入的json结构体有误(即解码失败)
* 240 简历解析内部错误
* 280 人岗匹配内部错误
*/
private int code;
/**
* 200 正常状态,表示解析成功
* 250 账号(uid)或密码(pwd)错误
* 251 账号剩余用量为0(需及时充值)
* 260 请求参数错误
* 261 简历内容为空
* 262 简历内容过长
* 263 不支持的简历文件格式
* 264 base64解码出错
* 265 图片文件过大,或者长宽大小超过限制
* 266 输入参数file_name缺少文件后缀名(请带上正确的文件后缀,如果是纯文本则为.txt)
* 267 输入的json结构体有误(即解码失败)
* 240 简历解析内部错误
* 280 人岗匹配内部错误
*/
private String message;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Tags implements Serializable {
private List<Industries> industries;
private List<Pos_types> pos_types;
private List<Pos_tags> pos_tags;
private List<Skills_tags> skills_tags;
}
package cn.timer.api.dto.resumesdk;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 培训经历
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Training_objs implements Serializable {
/**
* 培训机构 机构名称
*/
private String train_org;
/**
* 培训内容
* 内容描述
*/
private String train_cont;
/**
* 开始时间 比如“2019.09.01”、“2019.09”、“2019”
*/
private String start_date;
/**
* 结束时间 比如“2019.09.01”、“2019.09”、“2019”、“至今”
*/
private String end_date;
/**
* 培训地点
*/
private String train_loc;
/**
* 所获证书
*/
private String train_cert;
}
package cn.timer.api.dto.resumesdk.enumresume;
import lombok.Getter;
import org.eclipse.jetty.websocket.api.StatusCode;
import org.springframework.util.StringUtils;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/24
*/
public interface ResumeSdk {
/**
* 200 正常状态,表示解析成功
* 250 账号(uid)或密码(pwd)错误
* 251 账号剩余用量为0(需及时充值)
* 260 请求参数错误
* 261 简历内容为空
* 262 简历内容过长
* 263 不支持的简历文件格式
* 264 base64解码出错
* 265 图片文件过大,或者长宽大小超过限制
* 266 输入参数file_name缺少文件后缀名(请带上正确的文件后缀,如果是纯文本则为.txt)
* 267 输入的json结构体有误(即解码失败)
* 240 简历解析内部错误
* 280 人岗匹配内部错误
*/
@Getter
enum StatusCodeEnum implements ResumeSdk {
SUCCESSS(200, "解析成功"),
ERROR250(250, "账号(uid)或密码(pwd)错误"),
ERROR251(251, "账号剩余用量为0(需及时充值)"),
ERROR260(260, "请求参数错误"),
ERROR261(261, "简历内容为空"),
ERROR262(262, "简历内容过长"),
ERROR263(263, "不支持的简历文件格式"),
ERROR264(264, "base64解码出错"),
ERROR265(265, "图片文件过大,或者长宽大小超过限制"),
ERROR266(266, "输入参数file_name缺少文件后缀名(请带上正确的文件后缀,如果是纯文本则为.txt)"),
ERROR267(267, "输入的json结构体有误(即解码失败)"),
ERROR240(240, "简历解析内部错误"),
ERROR280(280, "人岗匹配内部错误");
private Integer type;
private String name;
StatusCodeEnum(Integer type, String name) {
this.type = type;
this.name = name;
}
public static String getName(Integer type){
if(type < 0){
return "";
}
for(StatusCodeEnum.StatusCodeEnum statusCodeEnum : StatusCodeEnum.StatusCodeEnum.values()){
if(statusCodeEnum.getType() == type){
return statusCodeEnum.name;
}
}
return "";
}
}
}
......@@ -59,8 +59,8 @@ public class SpmkApprovalTemplateDto {
private Date createTime;
@NotNull(message = ValidationMsg.NOTNULL)
@DecimalMax(value = "9",message = ValidationMsg.DECIMALMAX +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
@DecimalMin(value = "0",message = ValidationMsg.DECIMALMIN +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
@DecimalMax(value = "11",message = ValidationMsg.DECIMALMAX +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10调薪 11录用 ")
@DecimalMin(value = "0",message = ValidationMsg.DECIMALMIN +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10调薪 11录用 ")
@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4加班 5请假 6出差 7外出 8补卡 9调薪", example = "1")
private Integer assoType;
......
......@@ -40,9 +40,9 @@ public class SpmkApproveSummaryDto{
private String initiator;
@NotNull(message = ValidationMsg.NOTNULL)
@DecimalMax(value = "9",message = ValidationMsg.DECIMALMAX +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
@DecimalMin(value = "0",message = ValidationMsg.DECIMALMIN +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡", example = "1")
@DecimalMax(value = "11",message = ValidationMsg.DECIMALMAX +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10调薪 11录用 ")
@DecimalMin(value = "0",message = ValidationMsg.DECIMALMIN +" 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10调薪 11录用")
@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10调薪 11录用", example = "1")
private Integer assoType;
@NotNull(message = ValidationMsg.NOTNULL)
......
......@@ -63,9 +63,9 @@ public class SpmkCustomApprovalDto {
private Date createTime;
@NotNull(message = "assoType为空")
@DecimalMax(value = "9",message = "assoType 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
@DecimalMin(value = "0",message = "assoType 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 ")
@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡", example = "1")
@DecimalMax(value = "11",message = "assoType 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10录用")
@DecimalMin(value = "0",message = "assoType 只能为 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10录用")
@ApiModelProperty(value = "关联类型 0无 1转正 2离职 3调岗 4招聘 5加班 6请假 7出差 8外出 9补卡 10录用", example = "1")
private Integer assoType;
@NotNull(message = "isAllvisible为空")
......
package cn.timer.api.dto.template;
import cn.timer.api.dto.wxgzh.MessageQueueDto;
import cn.timer.api.utils.DateFormatUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/18
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InterviewNotice extends MessageQueueDto {
/**
* 通知人,操作者
*/
private String NoticeName;
/**
* 面试者名字
*/
private String name;
/**
* 职位名称
*/
private String zpglZwxxName;
/**
* 面试时间
*/
private String interviewTime;
/**
* 备注
*/
private String remark;
/**
* 内容
*/
private String contentStr;
/**
* 通知内容
*/
private String contentNotice;
/**
* 当前时间
*/
private String nowTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
public void setInterviewTime(Date interviewTime){
this.interviewTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(interviewTime);
}
}
package cn.timer.api.dto.template;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 跳小程序所需数据
* @author longys
* @date 2022/3/23 15:48
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Miniprogram implements Serializable {
/**
*所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系)
*/
private String appid;
/**
* 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布
*/
private String pagepath;
}
package cn.timer.api.dto.template;
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author longys
* @date 2022/3/22 16:52
*/
@Data
public class TemplateData implements Serializable {
// 参数名称
private String name;
// 参数值
private String value;
// 颜色
private String color;
public TemplateData(String name, String value, String color) {
this.name = name;
this.value = value;
this.color = color;
}
public TemplateData(List<TemplateData> dateList){
Map<String, Map<String,Object>> nameMap = new HashMap<>();
for(TemplateData date : dateList){
Map<String,Object> map = new HashMap<>();
map.put("value",date.getValue());
map.put("color",date.getColor());
nameMap.put(date.getName(),map);
}
}
}
package cn.timer.api.dto.template;
import lombok.Data;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 模版消息发送对象
* @author longys
* @date 2022/3/22 16:51
*/
@Data
public class TemplateMessage implements Serializable {
/**
* 接收者openid
*/
private String touser;
/**
* 模版ID
*/
private String template_id;
/**
* 跳转URL
*/
private String url;
/**
* 跳小程序所需数据 不需跳小程序可不用传该数据
*/
private Miniprogram miniprogram;
/**
* 模板数据
*/
private Map<String, Map<String,Object>> data;
public TemplateMessage(List<TemplateData> dateList, String touser, String templateId, String url, Miniprogram miniprogram){
Map<String, Map<String,Object>> nameMap = new HashMap<>();
for(TemplateData date : dateList){
Map<String,Object> map = new HashMap<>();
map.put("value",date.getValue());
map.put("color",date.getColor());
nameMap.put(date.getName(),map);
}
this.data = nameMap;
this.touser = touser;
this.template_id = templateId;
//以下不需要跳转传 null
this.url = url;
this.miniprogram = miniprogram;
};
public TemplateMessage(Map<String, Map<String,Object>> data, String touser, String templateId, String url, Miniprogram miniprogram){
this.data = data;
this.touser = touser;
this.template_id = templateId;
//以下不需要跳转传 null
this.url = url;
this.miniprogram = miniprogram;
};
}
\ No newline at end of file
package cn.timer.api.dto.wxgzh;
import cn.timer.api.dto.login.QysDto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author longys
* @date 2022/3/30 16:46
*/
@Data
public class LoginDto {
private String phone;
private String code;
private String openid;
/**
* 姓名
*/
private String userName;
/**
* 个人头像
*/
private String avatar;
}
package cn.timer.api.dto.wxgzh;
import cn.timer.api.dto.template.Miniprogram;
import cn.timer.api.dto.template.TemplateData;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author longys
* @date 2022/4/2 17:31
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MessageQueueDto {
/**
* id
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 内容 、 公众号模板消息内容 是JSON格式
*/
private String content;
/**
* 类型 1:全部 2:短信 3:邮件 4.微信公众号
*/
private Integer type;
/**
* 状态(0 发送成功,1 未发送,2 发送失败)
*/
private Integer status;
/**
* 0 即时发送,1 定时发送
*/
private Integer timing;
/**
* 定时发送时间
*/
private Date sendtime;
/**
* 手机号码
*/
private String mobile;
/**
* 邮箱
*/
private String email;
/**
* 微信openid
*/
private String openid;
/**
* 模版消息id (发送公众号模板消息用到)
*/
private String templateId;
/**
* 业务类型
*/
private Integer tos;
/**
* 公众号配置表id
*/
private Integer wxgzhType;
/**
* 网页地址
*/
private String url;
/**
* 小程序页面配置表id
*/
private Long wxxcxPageId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 人才信息ID
*/
private Integer zpglRcxxId;
/**
* 员工档案表ID
*/
private Integer ygglMainEmpId;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
* 转json格式模板消息内容
* @param dateList
* @return
*/
public String getContentJson(List<TemplateData> dateList){
Map<String, Map<String,Object>> nameMap = new HashMap<>();
for(TemplateData date : dateList){
Map<String,Object> map = new HashMap<>();
map.put("value",date.getValue());
map.put("color",date.getColor());
nameMap.put(date.getName(),map);
}
return JSON.toJSONString(nameMap);
};
}
......@@ -45,15 +45,15 @@ public class AddygdaDto extends Page implements Serializable{
@ApiModelProperty(value="手机号",example="101")
private String phone;
@NotNull(message = ValidationMsg.NOTNULL)
/*@NotNull(message = ValidationMsg.NOTNULL)*/
@ApiModelProperty(value="证件类型 0:身份证;1:港澳居民来往内地通行证;2:台湾居民来往大陆通行证;3:外国护照;4:其他",example="0")
private Integer zjType;
@NotBlank(message = ValidationMsg.NOTBLANK)
/*@NotBlank(message = ValidationMsg.NOTBLANK)*/
@ApiModelProperty(value="证件号码 ",example="证件号码")
private String zjNum;
@NotNull(message = ValidationMsg.NOTNULL)
/*@NotNull(message = ValidationMsg.NOTNULL)*/
@ApiModelProperty(value="工作性质 0全职、1实习生、2兼职、3劳务派遣、4劳务、5派遣、6外包、7退休返聘",example="0")
private Integer jobType;
......@@ -62,7 +62,7 @@ public class AddygdaDto extends Page implements Serializable{
@ApiModelProperty(value="入职日期 ",example="客户注册后的时间为入职时间")
private Date rzTime;
@NotNull(message = ValidationMsg.NOTNULL)
/*@NotNull(message = ValidationMsg.NOTNULL)*/
@ApiModelProperty(value="试用期 0:无试用期;1:1个月;2:2个月;3:3个月;4:4个月;5:5个月;6:6个月(有试用期显示选项)",example="0")
private Integer syq;
......@@ -78,6 +78,12 @@ public class AddygdaDto extends Page implements Serializable{
@ApiModelProperty(value="考勤组id",example="0")
private Integer attgroupid;
@ApiModelProperty(value="对应合同公司字典ID",example="0")
private Integer zpglCompanyId;
@ApiModelProperty(value="对应工作地点典ID",example="0")
private Integer zpglGzddId;
}
......@@ -35,6 +35,9 @@ public class EmpQuery extends Page implements Serializable{
@ApiModelProperty(value = "员工id列表", example = "")
private List<Integer> empNums;
@ApiModelProperty(value="类型筛选:1在职 2全职 3试用期 4正式 5待离职 6已离职",example="1")
private Integer status;
}
package cn.timer.api.dto.zpgl;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 导入候选人
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-3-31 10:05:49
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ImportCandidateDto implements Serializable{
private static final long serialVersionUID = -1230023773946171911L;
/**
* 职位信息Id
*/
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "职位信息Id")
private Integer zpglZwxxId;
/**
* 状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职
*/
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职")
private Integer status;
/**
* 招聘渠道ID
*/
@ApiModelProperty(value = "招聘渠道ID")
private Integer zpglZpqdId;
/**
* 获取文件 文档类型,目前支持pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif格式
*/
@ApiModelProperty(value = "文档类型,目前支持pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif格式")
private String suffix;
/**
* 文件名
*/
@ApiModelProperty(value = "文件名")
private String fileName;
/**
* 文件路径
*/
@ApiModelProperty(value = "文件路径")
private String filePath;
}
package cn.timer.api.dto.zpgl;
import cn.timer.api.bean.zpgl.ZpglRcxxExperience;
import cn.timer.api.bean.zpgl.ZpglRcxxJtzl;
import cn.timer.api.bean.zpgl.ZpglRcxxLxxxb;
import cn.timer.api.bean.zpgl.ZpglRcxxStudy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class InterviewApplicationDto implements Serializable {
/**
* 人才信息ID
*/
@ApiModelProperty(value = "人才信息ID")
private Integer id;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private String orgCode;
/**
* 状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职
*/
@ApiModelProperty(value = "状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职")
private Integer status;
/**
* 姓名
*/
@NotEmpty(message = "姓名号为空")
@ApiModelProperty(value = "姓名")
private String name;
/**
* 手机
*/
@NotEmpty(message = "手机号为空")
@ApiModelProperty(value = "手机")
private String mobile;
/**
* 邮件地址
*/
@ApiModelProperty(value = "邮件地址")
private String mail;
/**
* 身份证号码
*/
@ApiModelProperty(value = "身份证号码")
private String idCard;
/**
* 性别 1:男2:女
*/
@ApiModelProperty(value = "性别 1:男2:女")
private Integer sex;
/**
* 出生日期
*/
@ApiModelProperty(value = "出生日期")
private Date datebirth;
/**
* 微信
*/
@ApiModelProperty(value = "微信")
private String weixin;
/**
* 身高CM
*/
@ApiModelProperty(value = "身高CM")
private Integer height;
/**
* 体重KG
*/
@ApiModelProperty(value = "体重KG")
private Integer weight;
/**
* 政治面貌
*/
@ApiModelProperty(value = "政治面貌")
private String face;
/**
* 民族
*/
@ApiModelProperty(value = "民族")
private Integer nationClassId;
/**
* 籍贯
*/
@ApiModelProperty(value = "籍贯")
private String nativePlace;
/**
* 最高学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士
*/
@ApiModelProperty(value = "最高学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士")
private String highesteducation;
/**
* 省名id
*/
@ApiModelProperty(value = "省名id")
private String provinceId;
/**
* 省名
*/
@ApiModelProperty(value = "省名")
private String province;
/**
* 区名id
*/
@ApiModelProperty(value = "区名id")
private String districtId;
/**
* 区名
*/
@ApiModelProperty(value = "区名")
private String district;
/**
* 城市id
*/
@ApiModelProperty(value = "城市id")
private String cityId;
/**
* 城市
*/
@ApiModelProperty(value = "城市")
private String city;
/**
* 详细地址
*/
@ApiModelProperty(value = "详细地址")
private String address;
/**
* 现居住地详址
*/
@ApiModelProperty(value = "现居住地详址")
private String grAddress;
/**
* 是否结婚:0否,1是
*/
@ApiModelProperty(value = "是否结婚:0否,1是")
private Integer marryStatus;
/**
* 语言 1:英语 2:粤语 3:普通话
* 列:1,2,3
*/
@ApiModelProperty(value = "语言 1:英语 2:粤语 3:普通话 ")
private String language;
/**
* 驾照 1:A照 2:B照 3:C照
*/
@ApiModelProperty(value = "驾照 1:A照 2:B照 3:C照")
private Integer drivingLicense;
/**
* 病史 :0无,1有
*/
@ApiModelProperty(value = "病史 :0无,1有")
private Integer medicalHistory;
/**
* 病史1有:具体说明
*/
@ApiModelProperty(value = "具体说明")
private String medicalDetail;
/**
* 最近工作单位
*/
@ApiModelProperty(value = "最近工作单位")
private String company;
/**
* 毕业院校
*/
@ApiModelProperty(value = "毕业院校")
private String universitie;
/**
* 专业名称
*/
@ApiModelProperty(value = "专业名称")
private String subject;
/**
* 最近职位
*/
@ApiModelProperty(value = "最近职位")
private String zjzw;
/**
* 参加工作时间
*/
@ApiModelProperty(value = "参加工作时间")
private Date workBeginYear;
/**
* 待遇要求(税前)单位元/月
*/
@ApiModelProperty(value = "待遇要求(税前)单位元/月")
private Integer salary;
/**
* 求职状态:0离职,1在岗
*/
@ApiModelProperty(value = "求职状态:0离职,1在岗")
private Integer workStatus;
/**
* 可到岗时间:0一周内 1两周内 2一个月内 3两个月内 4不确定
*/
@ApiModelProperty(value = "可到岗时间:0一周内 1两周内 2一个月内 3两个月内 4不确定")
private Integer workTimer;
/**
* 爱好特长
*/
@ApiModelProperty(value = "爱好特长")
private String hobby;
/**
* 受到奖励
*/
@ApiModelProperty(value = "受到奖励")
private String reward;
/**
* 处分,违法,犯罪记录
*/
@ApiModelProperty(value = "处分,违法,犯罪记录")
private String record;
/**
* 招聘渠道ID
*/
@ApiModelProperty(value = "招聘渠道ID")
private Integer zpglZpqdId;
/**
* 签名图片
*/
@ApiModelProperty(value = "签名图片")
private String signatureImg;
/**
* 职位信息ID
*/
@ApiModelProperty(value = "职位信息ID")
private Integer zpglZwxxId;
/**
* 联系人信息
*/
@ApiModelProperty(value = "联系人信息")
private ZpglRcxxLxxxb zpglRcxxLxxxb;
/**
* 工作经验
*/
@ApiModelProperty(value = "工作经验")
private List<ZpglRcxxExperience> zpglRcxxExperience;
/**
* 教育经历
*/
@ApiModelProperty(value = "教育经历")
private List<ZpglRcxxStudy> zpglRcxxStudy;
/**
* 家庭资料
*/
@ApiModelProperty(value = "家庭资料")
private List<ZpglRcxxJtzl> zpglRcxxJtzls;
}
package cn.timer.api.dto.zpgl;
import cn.timer.api.config.exception.ValidationMsg;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* 招聘管理面试流程记录
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-08 15:14:40
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZpglMslcLogDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 人才信息ID
*/
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "人才信息ID")
private Integer zpglRcxxId;
/**
* 类型,1状态变更,2面试,3Offer,4讨论,5其他
*/
@ApiModelProperty(value = "类型,1状态变更,2面试,3Offer,4讨论,5其他")
private Integer zpglRcxxStatus;
/**
* 详细内容
*/
@NotBlank(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "详细内容")
private String detail;
}
package cn.timer.api.dto.zpgl;
import cn.timer.api.bean.disk.DiskCloudDiskUser;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2021-12-27 10:05:49
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZpglRcxxDto implements Serializable{
private static final long serialVersionUID = -1230023773946171911L;
/**
* 人才信息Id
*/
@ApiModelProperty(value = "人才信息Id")
private Integer id;
/**
* 状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职
*/
@ApiModelProperty(value = "状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职")
private Integer status;
/**
* 资源目录ID
*/
@ApiModelProperty(value = "淘汰原因ID")
private Integer zpglFailId;
/**
* 职位id
*/
@ApiModelProperty(value = "职位id")
private Integer zpglZwxxId;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 姓名
*/
@ApiModelProperty(value = "姓名")
private String name;
/**
* 附加操作:0无,1加入人才库
*/
@ApiModelProperty(value = "附加操作:0无,1加入人才库")
private Integer ifrck;
/**
* 面试轮次 12345
*/
@ApiModelProperty(value = "面试轮次 12345")
private Integer interviewNum;
/**
* 面试方式 1:现场面试 2:电话面试 3:视屏面试
*/
@ApiModelProperty(value = "面试方式 1:现场面试 2:电话面试 3:视屏面试")
private Integer interviewWay;
/**
* 面试官id
*/
@ApiModelProperty(value = "面试官id")
private Integer interviewerId;
/**
* 面试时间
*/
@ApiModelProperty(value = "面试时间")
private Date interviewTime;
/**
* 通知方式 1:全部 2:短信 3:邮件 4.微信公众号
*/
@ApiModelProperty(value = "通知方式 1:全部 2:短信 3:邮件 4.微信公众号")
private Integer noticeWay;
/**
* 部门岗位ID
*/
@ApiModelProperty(value = "部门岗位ID")
private Integer bmgwId;
/**
* 工作性质 0全职、1实习、2兼职、3劳务派遣、4劳务、5派遣、6外包、7退休返聘
*/
@ApiModelProperty(value = "工作性质 0全职、1实习、2兼职、3劳务派遣、4劳务、5派遣、6外包、7退休返聘")
private Integer jobType;
/**
* 预计入职日期
*/
@ApiModelProperty(value = "预计入职日期")
private Date yjrzTime;
/**
* 联系人id
*/
@ApiModelProperty(value = "联系人id")
private Integer linkId;
}
package cn.timer.api.dto.zpgl;
import cn.timer.api.config.exception.Regular;
import cn.timer.api.config.exception.ValidationMsg;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Date;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2021-12-27 10:05:49
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZpglRcxxEntryDto implements Serializable{
private static final long serialVersionUID = -1230023773946171911L;
/**
* 人才信息Id
*/
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "人才信息Id")
private Integer id;
/**
* 状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职
*/
@ApiModelProperty(value = "状态 1:待初筛 2:初筛通过 3:已安排面试 4:已面试 5:面试通过 6:拟录用 7:已发Offer 8:待入职 9已淘汰 10已入职")
private Integer status;
/**
* 入职日期
*/
@ApiModelProperty(value = "入职日期")
private Date yjrzTime;
/**
* 部门岗位ID
*/
@ApiModelProperty(value = "部门岗位ID")
private Integer bmgwId;
/**
* 员工工号
*/
@ApiModelProperty(value = "员工工号")
private String customNum;
@NotBlank(message = ValidationMsg.NOTBLANK)
@ApiModelProperty(value="员工姓名",example="华仔")
private String name;
/*@NotBlank(message = ValidationMsg.NOTBLANK)
@Pattern(regexp= Regular.PHONE,message = ValidationMsg.PATTERN)*/
@ApiModelProperty(value="手机号",example="101")
private String phone;
// @NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="证件类型 0:身份证;1:港澳居民来往内地通行证;2:台湾居民来往大陆通行证;3:外国护照;4:其他",example="0")
private Integer zjType = 0;
// @NotBlank(message = ValidationMsg.NOTBLANK)
@ApiModelProperty(value="证件号码 ",example="证件号码")
private String zjNum;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="工作性质 0全职、1实习生、2兼职、3劳务派遣、4劳务、5派遣、6外包、7退休返聘",example="0")
private Integer jobType;
@JSONField(format="yyyy-MM-dd")
@ApiModelProperty(value="入职日期 ",example="客户注册后的时间为入职时间")
private Date rzTime;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="试用期 0:无试用期;1:1个月;2:2个月;3:3个月;4:4个月;5:5个月;6:6个月(有试用期显示选项)",example="0")
private Integer syq;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="性别 0:男;1:女",example="0")
private Integer sex;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="合同公司id",example="0")
private Integer zpglCompanyId;
@ApiModelProperty(value="工作地点id",example="0")
private Integer zpglGzddId;
@ApiModelProperty(value="职级id",example="0")
private Integer zpglZjId;
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value="员工状态:1试用 2正式",example="0")
private Integer beforeLeavingSts;
@ApiModelProperty(value="考勤组id",example="0")
private Integer attgroupid;
}
package cn.timer.api.dto.zpgl;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-3-22 10:05:49
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZpglZwxxAddUpdateDto implements Serializable{
private static final long serialVersionUID = -1230023773946171911L;
@ApiModelProperty(value = "编号")
private Integer id;
/**
* 职位名称
*/
@NotBlank(message = ValidationMsg.NOTBLANK)
@ApiModelProperty(value = "职位名称")
private String name;
/**
* 部门id
*/
@ApiModelProperty(value = "部门id")
private Integer deptId;
/**
* 职位类型ID
*/
@ApiModelProperty(value = "职位类型ID")
private Integer jobClassId;
/**
* 工作性质 1:全职 2:兼职 3:实习 4:退休返聘 5:劳务外派 6:劳务外包
*/
@ApiModelProperty(value = "工作性质 1:全职 2:兼职 3:实习 4:退休返聘 5:劳务外派 6:劳务外包")
private Integer workType;
/**
* 对应合工作地点字典ID
*/
@ApiModelProperty(value = "对应合工作地点字典ID")
private Integer zpglGzddId;
/**
* 招聘人数
*/
@ApiModelProperty(value = "招聘人数")
private Integer num;
/**
* 已入职人数
*/
@ApiModelProperty(value = "已入职人数")
private Integer entryNum;
/**
* 招聘原因
*/
@ApiModelProperty(value = "招聘原因")
private String reason;
/**
* 工作经验要求:1:1年一下 2:1-3年 3:3-5年 4:5-10年 5:10年以上
*/
@ApiModelProperty(value = "工作经验要求:1:1年一下 2:1-3年 3:3-5年 4:5-10年 5:10年以上")
private Integer experience;
/**
* 学历要求 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士
*/
@ApiModelProperty(value = "学历要求 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士")
private Integer education;
/**
* 薪资范围
*/
@ApiModelProperty(value = "薪资范围")
private Integer salaryMin;
/**
* 薪资范围
*/
@ApiModelProperty(value = "薪资范围")
private Integer salaryMax;
/**
* 最迟到岗时间
*/
@ApiModelProperty(value = "最迟到岗时间")
private Date registerTime;
/**
* 启动时间
*/
@ApiModelProperty(value = "启动时间")
private Date startTime;
/**
* 截止时间
*/
@ApiModelProperty(value = "截止时间")
private Date endTime;
/**
* 描述
*/
@ApiModelProperty(value = "描述")
private String description;
/**
* 紧急程度状态 1:一般 2:紧急
*/
@ApiModelProperty(value = "紧急程度状态 1:一般 2:紧急")
private Integer urgentStatus;
/**
* 状态 1:招聘中 2:停止招聘
*/
@ApiModelProperty(value = "状态 1:招聘中 2:停止招聘")
private Integer status;
/**
* 组织机构代码
*/
@ApiModelProperty(value = "组织机构代码")
private String orgCode;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
/**
* 用户ID
*/
@ApiModelProperty(value = "用户ID")
private Integer userId;
/**
* 用户姓名
*/
@ApiModelProperty(value = "用户姓名")
private String userName;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}
package cn.timer.api.dto.zpgl;
import cn.timer.api.config.exception.ValidationMsg;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-3-22 10:05:49
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ZpglZwxxDto implements Serializable{
private static final long serialVersionUID = -1230023773946171911L;
/**
* 职位信息Id
*/
@NotNull(message = ValidationMsg.NOTNULL)
@ApiModelProperty(value = "职位信息Id")
private Integer id;
/**
* 状态 1:招聘中 2:停止招聘
*/
@ApiModelProperty(value = "状态 1:招聘中 2:停止招聘")
private Integer status;
/**
* 逻辑删除标记0.未删除 1.删除
*/
@ApiModelProperty(value = "逻辑删除标记0.未删除 1.删除")
private Integer deleteFlag;
}
......@@ -18,12 +18,10 @@ public interface FtpService {
/**
* 上传文件到服务器
* @param targetPath
* @param files
* @param reservedName
* @return
*/
List<FileInfoDto> uploadFile(String targetPath, MultipartFile[] files, boolean reservedName);
List<FileInfoDto> uploadFile(MultipartFile[] files);
/**
* 下载单个文件
*
......
package cn.timer.api.service.impl;
import cn.timer.api.config.sftp.SftpConfiguration;
import cn.timer.api.controller.disk.constant.FileAddressConstant;
import cn.timer.api.dto.disk.FileInfoDto;
import cn.timer.api.service.FtpService;
import cn.timer.api.utils.Md5;
import cn.timer.api.utils.aliyun.OSSUtil;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.SftpException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
......@@ -25,6 +28,8 @@ public class FtpServiceImpl implements FtpService {
@Autowired
private SftpConfiguration config;
@Autowired
private OSSUtil oss;
@Override
......@@ -61,54 +66,59 @@ public class FtpServiceImpl implements FtpService {
}
@Override
public List<FileInfoDto> uploadFile(String targetPath, MultipartFile[] files, boolean reservedName) {
ChannelSftp sftp = config.getSftpSocket();
public List<FileInfoDto> uploadFile(MultipartFile[] files) {
List<FileInfoDto> resultStrs = new ArrayList<FileInfoDto>();
try {
sftp.cd(config.getRoot());
//log.info("sftp连接host", config.getRoot());
boolean dirs = this.createDirs(targetPath, sftp);
if (!dirs) {
log.error("sftp创建目录失败", targetPath);
throw new RuntimeException("上传文件失败");
}
FileInfoDto dto = null;
for (MultipartFile file : files) {
dto = new FileInfoDto();
String fileName = "";
String name = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
if (reservedName) {
fileName = Md5.md5(name + UUID.randomUUID().toString()) + suffix;
} else {
fileName = UUID.randomUUID().toString() + suffix;
//存储地址判断
if (FileAddressConstant.PHYSICS_OSS.equals(config.getFileAddress())) {
ChannelSftp sftp = config.getSftpSocket();
try {
sftp.cd(config.getRoot());
//log.info("sftp连接host", config.getRoot());
boolean dirs = this.createDirs(config.getTargetPath(), sftp);
if (!dirs) {
log.error("sftp创建目录失败", config.getTargetPath());
throw new RuntimeException("上传文件失败");
}
sftp.put(file.getInputStream(), fileName);
dto.setUrlPath(config.getServerUrl() + "/" + fileName);
dto.setResourceFileName(name);
dto.setFileName(fileName);
FileInfoDto dto = null;
for (MultipartFile file : files) {
dto = new FileInfoDto();
String fileName = "";
String name = file.getOriginalFilename().substring(0, file.getOriginalFilename().lastIndexOf("."));
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
if (config.isReservedName()) {
fileName = Md5.md5(name + UUID.randomUUID().toString()) + suffix;
} else {
fileName = UUID.randomUUID().toString() + suffix;
}
sftp.put(file.getInputStream(), fileName);
dto.setUrlPath(config.getServerUrl() + "/" + fileName);
dto.setResourceFileName(name);
dto.setFileName(fileName);
/*Float size = Float.parseFloat(String.valueOf(file.getSize())) / 1024;
BigDecimal b = new BigDecimal(size);
// 2表示2位 ROUND_HALF_UP表明四舍五入,
size = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();*/
dto.setFileSize(file.getSize());
dto.setFileSuffix(suffix);
/*Float size = Float.parseFloat(String.valueOf(file.getSize())) / 1024;
BigDecimal b = new BigDecimal(size);
// 2表示2位 ROUND_HALF_UP表明四舍五入,
size = b.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();*/
dto.setFileSize(file.getSize());
dto.setFileSuffix(suffix);
resultStrs.add(dto);
resultStrs.add(dto);
}
} catch (Exception e) {
log.error("上传文件失败", config.getTargetPath(), e);
e.printStackTrace();
throw new RuntimeException("上传文件失败");
} finally {
config.returnSftpSocket(sftp);
}
return resultStrs;
} catch (Exception e) {
log.error("上传文件失败", targetPath, e);
e.printStackTrace();
throw new RuntimeException("上传文件失败");
} finally {
config.returnSftpSocket(sftp);
} else if (FileAddressConstant.ALIYUN_OSS.equals(config.getFileAddress())) {
}
return resultStrs;
}
/**
* 下载单个文件
*
......@@ -128,11 +138,11 @@ public class FtpServiceImpl implements FtpService {
log.info("===DownloadFile:" + remotePath + " success from sftp.");
}
return nputStream;
} catch ( SftpException e) {
} catch (SftpException e) {
e.printStackTrace();
} catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}finally {
} finally {
config.returnSftpSocket(sftp);
}
return nputStream;
......
......@@ -16,6 +16,8 @@ import java.util.GregorianCalendar;
*
*/
public class DateFormatUtils {
public static final String YYYYMMDD = "yyyy-MM-dd";
/**
......@@ -510,8 +512,25 @@ public class DateFormatUtils {
return resultString.toString();
}
public static void main(String[] args) throws ParseException {
/**
* 计算2个日期之间相差的 年
* @param fromDate
* @param toDate
* @return
*/
public static int yearCompare(Date fromDate,Date toDate){
Calendar from = Calendar.getInstance();
from.setTime(fromDate);
Calendar to = Calendar.getInstance();
to.setTime(toDate);
int fromYear = from.get(Calendar.YEAR);
int toYear = to.get(Calendar.YEAR);
int year = toYear - fromYear;
return year;
}
public static void main(String[] args) throws ParseException {
System.out.println(yearCompare(getDateByString("2000-1-1 00:00:00"),new Date()));
}
}
\ No newline at end of file
package cn.timer.api.utils;
/**
* 招聘管理-面试流程记录模板
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022-03-14 15:14:40
*/
public class ZpglMessageTemplate {
public static final String FILTERING = "{0} 将候选人状态更改为[待初筛].";
public static final String FILTER_PASS ="{0} 将候选人状态从[待初筛]更改为[初筛通过].";
//,面试地址:{4}
public static final String INTERVIEW ="{0} 为候选人安排了现场面试.面试轮次:第{1}轮,面试时间{2},面试官:{3}";
public static final String INTERVIEWED ="{0} 将候选人状态从[已安排面试]更改为[已面试].面试轮次:第{1}轮.";
public static final String INTERVIEW_PASS ="{0} 将候选人移动到[面试通过].";
public static final String EMPLOY ="{0} 将候选人状态从[面试通过]更改为[拟录用].";
public static final String OFFER ="{0} 给候选人发送了Offer.";
public static final String ENTRYING ="{0} 将候选人状态从[待初筛]更改为[初筛淘汰], 淘汰原因:{1},备注:{2}";
public static final String WAIT ="{0} 将候选人添加到待入职.";
public static final String ENTRY ="{0} 为候选人办理了入职.";
public static final String INTERVIEWED_ENTRYING ="{0} 将候选人状态从[{3}]更改为[面试淘汰], 淘汰原因:{1},备注:{2}";
public static final String OFFER_ENTRYING ="{0} 将候选人状态从[{3}}]更改为[录用淘汰], 淘汰原因:{1},备注:{2}";
public static final String SYS_ADD ="系统添加了候选人";
public static final String TO_INTERVIEWER ="您好,{0}{1}已安排由您面试";
public static final String TO_INTERVIEWEE ="候选人{0}您好!您所投递的 {1} 职位为您安排了面试";
public static final String TO_APPLY ="请您认真填写应聘登记表";
public static final String TO_CEPIN ="请您认真填写FPA测评试卷";
public static final String THANKS ="候选人{0}您好!感谢您应聘{1}职位!";
public static final String OFFER_TEMPLATE = "<!DOCTYPE html><html lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:th=\"http://www.thymeleaf.org\"><body><div><p style=\" line-height: 1.5;\">尊敬的<span>{0}</span></p>"+
"<p style=\" line-height: 1.5;\"><br></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">感谢您对公司的认可,非常荣幸地通知您,您已被我司正式录用,欢迎您加入<span>{1}</span></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">您所入职的部门:<span>{2}</span></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">您所入职的岗位:<span>{3}</span></p>"+
"<p style=\" line-height: 1.5;\"><br></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">入职所需的材料和证件</p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">1. 原单位离职证明(加盖原单位公章)1份</p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">2. 身份证原件</p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">3. 学位证、毕业证原件</p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">4. 相关资格证书原件</p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">5. 入职体检证明</p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\"><br></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">请您于<span>{4}</span>带以上材料,进行报到</p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\"><br></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">联系人:<span>{5}</span></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">联系电话:<span>{6}</span></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">联系人邮箱:<span>{7}</span></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\"><br></p>"+
"<p style=\"text-indent: 2em; line-height: 1.5;\">收到此通知后,请您点击底部按钮进行回复确认,再次欢迎您加入!<span>{1}</span>!</p>"+
"<p style=\" line-height: 1.5;\"><br></p></div>"+
"</body></html>";
public static String print(String template, String[] values) {
if (null == values || values.length == 0) {
return template;
}
String msg = template;
for (int i = 0; i < values.length; i++) {
msg = msg.replace("{" + i + "}", values[i]);
}
return msg;
}
public static void main(String[] args) {
System.out.println(ZpglMessageTemplate.print(FILTER_PASS, new String[] {
"wuqingjun", "types" }));
}
}
package cn.timer.api.utils.baidu;
import cn.timer.api.dto.baidu.BaiduTicResumeDto;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/29
*/
@Component
public class BaiduTicUtil {
@Value("${config-8timer.baidu-tic.appid}")
private String appid;
@Value("${config-8timer.baidu-tic.secret}")
private String secret;
/**
* 获取百度token
* @return
*/
public String getBaiduAccessToken(){
StringBuffer url = new StringBuffer("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=");
url = url.append(appid).append("&client_secret=").append(secret);
ResponseEntity<String> response = new RestTemplate().exchange(url.toString(), HttpMethod.GET, null, String.class);
return new Gson().fromJson(response.getBody(), HashMap.class).get("access_token").toString();
}
public ResponseEntity<String> getResumeByCvParser(BaiduTicResumeDto baiduTicResumeDto){
String url = "https://aip.baidubce.com/rpc/2.0/recruitment/v1/cvparser?access_token="+getBaiduAccessToken();
Map<String, Object> param = new HashMap<>();
param.put("resume", baiduTicResumeDto);
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
List<String> list = new ArrayList<>();
list.add("Content-Type");
list.add("application/json");
headers.put("header", list);
HttpEntity requestEntity = new HttpEntity(param, headers);
return new RestTemplate().exchange(url, HttpMethod.POST,requestEntity, String.class);
}
}
package cn.timer.api.utils.baidu;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Encoder;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/29
*/
public class Base64 {
private static HttpURLConnection httpUrl = null;
/**
* 转化成Base64字符串
*/
public static String getStrFromPath(MultipartFile file) {
InputStream in = null;
byte[] data = null;
try {
in = file.getInputStream();
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 对字节数组Base64编码
BASE64Encoder encoder = new BASE64Encoder();
// 返回Base64编码过再URLEncode的字节数组字符串
return encoder.encode(data);
}
}
package cn.timer.api.utils.email;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/13
*/
@Component
public class EmailUtils {
/**
* 发送人邮箱
*/
private static String from;
@Value("${spring.mail.username}")
private void setFrom(String from) {
EmailUtils.from = from;
}
/**
* 普通发送邮件
*
* @param text
* @param toMails
* @throws MessagingException
*/
public static int sendSimpleMail(JavaMailSender javaMailSender,String text,String subject, String... toMails) {
if (StringUtils.isEmpty(text) || ArrayUtils.isEmpty(toMails)) {
return 0;
}
try {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject(subject);
message.setFrom(from);
message.setBcc(from);
message.setTo(toMails);
message.setText(text);
javaMailSender.send(message);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
return 1;
}
/**
* 发送 thymeleaf 页面邮件
*
* @param javaMailSender
* @param text
* @param toMails
* @param subject
* @throws MessagingException
*/
public static int sendThymeleafMail(JavaMailSender javaMailSender, String text,String subject, String... toMails) {
if (StringUtils.isEmpty(text) || ArrayUtils.isEmpty(toMails)) {
return 0;
}
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject(subject);
helper.setFrom(from);
helper.setBcc(from);
helper.setTo(toMails);
helper.setText(text,true);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
return 0;
}
return 1;
}
}
package cn.timer.api.utils.resumesdk;
import cn.timer.api.dto.resumesdk.ResumeSdkDto;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.Consts;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/4/22
*/
@Component
public class ResumeSDKUtil {
public String getResumeByCvParser(ResumeSdkDto resumeSdkDto, String appCode) throws Exception {
String url = "http://resumesdk.market.alicloudapi.com/ResumeParser";
// 设置头字段
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Authorization", "APPCODE " + appCode);
httpPost.addHeader("Content-Type", "application/json; charset=UTF-8");
httpPost.addHeader("Content-Type", "application/json");
// 设置内容信息
JSONObject json = new JSONObject();
json.put("file_name", resumeSdkDto.getFile_name()); // 文件名
json.put("file_cont", resumeSdkDto.getFile_cont()); // 经base64编码过的文件内容
json.put("need_avatar", 0); // 是否需要解析头像
json.put("ocr_type", 1); // 1为高级ocr
StringEntity params = new StringEntity(json.toString(), Consts.UTF_8);
httpPost.setEntity(params);
// 发送请求
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httpPost);
// 处理返回结果
return unicodeToCN(EntityUtils.toString(response.getEntity(), Consts.UTF_8));
}
/**
* Unicode转 汉字字符串
*
* @param str
* @return
*/
private static String unicodeToCN(String str) {
Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
Matcher matcher = pattern.matcher(str);
char ch;
while (matcher.find()) {
ch = (char) Integer.parseInt(matcher.group(2), 16);
str = str.replace(matcher.group(1), ch + "");
}
return str;
}
}
#生产环境
server:
port: 8866
port: 8189
servlet:
# context-path: /YoulinghrApiV100
session:
......@@ -31,7 +31,7 @@ spring:
# username: tang
# password: Tang123456!
# url: jdbc:mysql://120.24.172.51:3306/youlingrc_tang?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
url: jdbc:mysql://120.78.162.177:3306/timer_test?useUnicode=SpmkApproveSummaryMappertrue&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
url: jdbc:mysql://120.78.162.177:3306/8timer_20210904?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
# url: jdbc:mysql://192.168.172.200:3306/youlingrc_8timer201?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
# url: jdbc:mysql://db.hhlsz.com:3306/youlingrc_8timer201?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
driver-class-name: com.mysql.cj.jdbc.Driver
......@@ -234,10 +234,37 @@ config-8timer:
crm-excel:
realPath: 'D:/excel/'
# 百度人才智库(TIC)
baidu-tic:
appid: XOATkGqX6LvCW3i3Eqd5rg6h
secret: UqqNAF1nltMjAOz9yxqHPjZlnjtC2gSS
# 文件存储地址配置 file type:aliyun-oss,physics-oss
# 文件存储地址类型:aliyun-oss(阿里云OSS),physics-oss(物理机器OSS)
# 默认存储物理机器OSS
file-address:
type: physics-oss
#type: aliyun-oss
#导出zip临时地址
zip:
path: 'D:/zip/'
#sftp 配置
sftp:
client:
protocol: 'sftp'
host: '192.168.3.3'
port: '22'
username: 'root'
password: 'youling123'
root: '/home'
sessionStrictHostKeyChecking: 'no'
sessionConnectTimeout: '15000'
channelConnectedTimeout: '15000'
serverUrl: 'https://test-img.8timer.cn'
targetPath: '/disk'
reservedName: false
insure:
#投保
appid: '1002303100602312445'
......@@ -256,18 +283,3 @@ insure:
# base_api_url
BASE_API_URL: 'http://test-8timer-api.youlingrc.com'
#sftp 配置
sftp:
client:
protocol: 'sftp'
host: '120.78.162.177'
port: '22'
username: 'root'
password: 'fksdlfjs(*&&%HGgjfkdjsfhksh9781283KFHFFGHghhndbv##2@'
root: '/home'
sessionStrictHostKeyChecking: 'no'
sessionConnectTimeout: '15000'
channelConnectedTimeout: '15000'
serverUrl: 'https://test-img.8timer.cn'
targetPath: '/disk'
reservedName: false
......@@ -99,9 +99,9 @@ spring:
mail:
port: 465
protocol: smtp
host: smtp.youlingrc.com
username: postmaster@youlingrc.com
password: YoulingRC2020
host: smtp.163.com
username: youlingrc123@163.com
password: RIMBNJJQNKYNVUWL
default-encoding: utf-8
properties:
mail:
......@@ -194,6 +194,7 @@ config-8timer:
project_package: 8timer2.0/
expirationTime: 3153600000000L
expirationTime_pri: 600000L
RESUMESDK_APPCODE: 17e3b67b02ab4bef967025cc4938c072 #ResumeSDK简历解析 AppCode
esign: # e签宝
callbackUrl: 'https://client.8timer.cn/callback/esign/dev'
redirectUrl: 'http://client.8timer.cn/#/ElecCon/index'
......@@ -217,6 +218,18 @@ config-8timer:
crm-excel:
realPath: '/data/crm-excel/'
# 百度人才智库(TIC)
baidu-tic:
appid: XOATkGqX6LvCW3i3Eqd5rg6h
secret: UqqNAF1nltMjAOz9yxqHPjZlnjtC2gSS
# 文件存储地址配置 file type:aliyun-oss,physics-oss
# 文件存储地址类型:aliyun-oss(阿里云OSS),physics-oss(物理机器OSS)
# 默认存储物理机器OSS
file-address:
type: physics-oss
#type: aliyun-oss
#导出zip临时地址
zip:
path: '/data/crm-zip/'
......
......@@ -3,33 +3,24 @@ server:
port: 8189
servlet:
# context-path: /YoulinghrApiV100
session:
session:
timeout: 2592000 # session会话过期时间
tomcat:
# 最大连接数,默认值是10000
max-connections: 10000
# 最大工作线程数,默认200, 4核8g内存,线程数经验值800
max-threads: 800
# 等待队列长度,默认100
accept-count: 1000
max-http-post-size: 50MB
min-spare-threads: 100
spring:
servlet:
multipart:
max-file-size: 500MB
servlet:
multipart:
max-file-size: 500MB
max-request-size: 500MB
jpa:
# 配置生成表 存储引擎InnoDB
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
# database:
# database:
open-in-view: false
# naming:
# naming:
# spring boot jpa hibernate 根据实体类生成表以及字段的命名策略
# 无修改命名 org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# 遇到大写字母 加”_”的命名 org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
hibernate:
hibernate:
ddl-auto: update
show-sql: true
datasource:
......@@ -64,7 +55,7 @@ spring:
#max-pool-prepared-statement-per-connection-size: 20
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
#connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
druid:
druid:
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 ,不能用log4j,不然报错:Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource:
filters: stat,slf4j
# 配置监控服务器
......@@ -87,30 +78,32 @@ spring:
date-format: yyyy-MM-dd HH:mm:ss
# spring boot启动打印横幅 配置
banner:
charset: UTF-8 # Banner file encoding.
charset: UTF-8 # Banner file encoding.
location: banner.txt # Banner text resource location.
image:
image:
location: banner.gif # Banner image file location (jpg or png can also be used).
width: 76 # Width of the banner image in chars.
height: 76 # Height of the banner image in chars (default based on image height).
margin: 2 # Left hand image margin in chars.
invert: false # Whether images should be inverted for dark terminal themes.
mail:
mail:
port: 465
host: smtp.youlingrc.com
username: postmaster@youlingrc.com
password: YoulingRC2020
protocol: smtp
#host: smtp.163.com
host: 220.181.15.161
username: youlingrc123@163.com
password: RIMBNJJQNKYNVUWL
default-encoding: utf-8
properties:
mail:
mail:
smtp:
auth: true
starttls:
starttls:
enable: true
required: true
ssl: # SSL Config
enable: true
socketFactory:
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactor
redis:
......@@ -158,7 +151,7 @@ pagehelper:
reasonable: true
supportMethodsArguments: true
params: count=countSql
#showSql
logging:
level:
......@@ -166,7 +159,7 @@ logging:
cn.timer.api.dao: info
pattern:
console: '--%p--%m%n'
#swagger:
# ui-config:
# operations-sorter: method # 它提供了两个配置项:alpha和method,分别代表了按字母表排序以及按方法定义顺序排序
......@@ -174,8 +167,8 @@ logging:
config-8timer:
environmental-science: test
expiration_time: 2 #扫码登录过期时长
#machine8timerUrl: 'http://test-8timer-fk.youlingrc.com'
machine8timerUrl: 'http://172.18.179.36:8195'
machine8timerUrl: 'http://test-8timer-fk.youlingrc.com'
#machine8timerUrl: 'http://172.18.179.36:8195'
#machine8timerUrl: 'http://192.168.3.48:8195'
authentication-code: '888888'
prescription: 8 #一天工作8小时
......@@ -193,6 +186,7 @@ config-8timer:
project_package: 8timer2.0/
expirationTime: 3153600000000L
expirationTime_pri: 600000L
RESUMESDK_APPCODE: 17e3b67b02ab4bef967025cc4938c072 #ResumeSDK简历解析 AppCode
esign: # e签宝
callbackUrl: 'https://test-8timer-pc.youlingrc.com/callback/esign/dev'
redirectUrl: 'http://test-8timer-pc.youlingrc.com/#/ElecCon/index'
......@@ -204,18 +198,30 @@ config-8timer:
two: 7
three: 30
init-password: 123456
# 创建企业默认添加讯息
qyxx:
title: '欢迎来到8小时'
cover: 'https://8time-v2.oss-cn-shenzhen.aliyuncs.com/8timer2.0/common/qyxx/welcome/%E6%AC%A2%E8%BF%8E%E5%9B%BE.png'
summary: '<h1>欢迎来到8小时!可先前往组织管理-组织架构添加公司架构及岗位,再前往员工管理-员工名册添加企业员工。</h1>'
author: 'System'
# 客户管理导入服务器保存路径
crm-excel:
realPath: '/data/crm-excel/'
# 百度人才智库(TIC)
baidu-tic:
appid: XOATkGqX6LvCW3i3Eqd5rg6h
secret: UqqNAF1nltMjAOz9yxqHPjZlnjtC2gSS
# 文件存储地址配置 file type:aliyun-oss,physics-oss
# 文件存储地址类型:aliyun-oss(阿里云OSS),physics-oss(物理机器OSS)
# 默认存储物理机器OSS
file-address:
type: physics-oss
#type: aliyun-oss
#导出zip临时地址
zip:
path: '/data/crm-zip/'
......@@ -238,6 +244,15 @@ sftp:
targetPath: '/disk'
reservedName: false
#微信公众号(服务号)
wxgzh:
appid: 'wxd331ab19a67e2319'
appSecret: '31259f6fee0c0771d6f48c3d5159c551'
#我方token 在微信公众号基本配置里面配置( token = 8timer123 md5加密得)
token: 'af37997effca937229453180e830b164'
#消息加解密密钥
encodingAesKey: 'chAbt69dLAtk8HH0oGMuZwHzK2SuhnxZI5Jbzc4nNzX'
insure:
#投保
appid: '1002303100602312445'
......@@ -247,6 +262,14 @@ insure:
#查询保单信息
policyDetail: 'http://sandbox.portal.unistar-ins.com/issuing/Home/Index/policy'
youling:
serverUrl: 'http://227387db45.51vip.biz'
#h5服务地址
h5:
url: 'http://javays.com'
#保全
appidq: '1000115041006006938'
secretq: '6ba1bf4aa0bd14368c95ff0b9934a17b'
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.clazz.NationClassMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.clazz.NationClass" id="nationClassMap">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="pinyin" column="pinyin"/>
<result property="letter" column="letter"/>
<result property="number" column="number"/>
<result property="sort" column="sort"/>
</resultMap>
</mapper>
\ No newline at end of file
......@@ -49,7 +49,7 @@
<result column="bmgw_id" property="bmgwId" />
<result column="bmgw_name" property="bmgwName" />
<result column="custom_num" property="customNum" />
<result column="org_code" property="orgCode" />
<result column="unionid" property="unionid" />
<result column="openid" property="openid" />
......@@ -57,7 +57,7 @@
<result column="appopenid" property="appopenid" />
<result column="is_insure" property="isInsure"/>
</resultMap>
<resultMap id="Bintu" type="cn.timer.api.dto.yggl.YgbintuDto" >
<id column="id" property="id" />
<result column="age" property="age" />
......@@ -69,7 +69,7 @@
<result column="jobStatus" property="jobStatus" />
<result column="workage" property="workage" />
</resultMap>
<resultMap id="DepartmentStaffMap" type="cn.timer.api.dto.zzgl.DepartmentStaffDto" >
<id column="id" property="id" />
<result column="empNum" property="empNum" />
......@@ -130,7 +130,7 @@
custom_num,
is_insure
</sql>
<sql id="Base_Column_List_a">
a.id,
a.emp_num,
......@@ -154,46 +154,63 @@
a.is_insure
</sql>
<!-- rsybp人事仪表盘 -->
<select id="rsybp" resultMap="Bintu">
SELECT e.id AS id,IFNULL(e.age,0) AS age,IFNULL(e.bmgw_id,0) AS bmgwId,IFNULL(b.`name`,'null') AS gw,
IFNULL(bb.`name`,'null') AS bm,IFNULL( p.`name`,'null') AS proname,IFNULL(d.`name` ,'null')AS eduname,
IFNULL(e.job_status,0) AS jobStatus,IFNULL(datediff(CURDATE(),e.rz_time),0)AS workage
FROM yggl_main_emp e
LEFT JOIN zzgl_bmgw_m b ON b.id = e.bmgw_id
FROM yggl_main_emp e
LEFT JOIN zzgl_bmgw_m b ON b.id = e.bmgw_id
LEFT JOIN zzgl_bmgw_m bb ON bb.id = b.up_id
LEFT JOIN province_class p ON left (e.`jg`,2) = p.province
LEFT JOIN education_class d ON d.number = e.edu
WHERE e.org_code = #{orgCode}
</select>
<select id="DepartmentStaff" resultMap="DepartmentStaffMap">
select em.emp_num as empNum,
em.`name` as empname,
bm.`name` as bmgwname,
em.phone
from yggl_main_emp em
em.phone
from yggl_main_emp em
LEFT JOIN zzgl_bmgw_m as bm on bm.id = em.bmgw_id
where em.org_code = #{orgcode}
and em.bmgw_id in (select bm.id from zzgl_bmgw_m bm
WHERE bm.up_id = #{upid})
</select>
<select id="selectME" resultMap="BaseResultMap">
SELECT
SELECT
<include refid="Base_Column_List_a" />,
(SELECT name FROM zzgl_bmgw_m WHERE id = (SELECT up_id FROM zzgl_bmgw_m WHERE id = a.bmgw_id limit 1) limit 1) as bmgw_name
FROM yggl_main_emp a
<where>
AND a.org_code = #{param.orgCode}
AND a.job_status IN (0,1,2)
<if test="param.jobType != null">
AND a.job_type = #{param.jobType}
</if>
<if test="param.jobStatus != null">
AND a.job_status = #{param.jobStatus}
</if>
<if test="param.status == 1">
AND a.job_status BETWEEN 0 and 3
</if>
<if test="param.status == 2">
AND a.job_type = 0
</if>
<if test="param.status == 3">
AND a.job_status = 0
</if>
<if test="param.status == 4">
AND a.job_status = 1
</if>
<if test="param.status == 5">
AND a.job_status = 2
</if>
<if test="param.status == 6">
AND a.job_status = 3
</if>
<if test="param.query != null and param.query != ''">
AND (
a.name like CONCAT('%',#{param.query},'%') or
......@@ -208,7 +225,7 @@
<foreach item="it" index="index" collection="param.empNums" separator="," close="" >
#{it}
</foreach>
)
)
</when>
<otherwise>
AND a.emp_num = #{param.empNums[0]}
......@@ -217,21 +234,20 @@
</if>
</where>
</select>
<!-- benyueLz本月离职人数 -->
<select id="benyueLz" resultType="Integer">
SELECT COUNT(datediff(CURDATE(),l.sjlz_time)) FROM yggl_main_lzb l WHERE datediff(CURDATE(),l.sjlz_time) <![CDATA[ <= ]]> 30 AND org_code = #{orgCode};
</select>
<!-- benyueZz本月转正人数 -->
<select id="benyueZz" resultType="Integer">
SELECT COUNT(datediff(CURDATE(),e.sjzz_time)) FROM yggl_main_emp e WHERE datediff(CURDATE(),e.sjzz_time) <![CDATA[ <= ]]> 30 AND org_code = #{orgCode};
</select>
<!-- 查询员工信息 搜索 分页 -->
<select id="queryEmpMessage" resultType="cn.timer.api.dto.yggl.YgQueryDto">
SELECT
a.id,
a.name empName,
a.emp_num empNum,
b.name deptName,
......@@ -250,47 +266,44 @@
a.org_code = #{orgCode}
AND
a.job_status in (0,1,2)
<if test="isInsure!=null and isInsure != ''">
AND a.is_insure in (1,2)
</if>
ORDER BY
emp_num DESC
</select>
<!-- 查询在职员工(试用员工人数+正式员工人数) -->
<select id="queryInservice" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
SUM(job_status=1) AS probation,
SUM(job_status=2) AS regular
FROM
FROM
yggl_main_emp
WHERE
org_code=#{orgCode}
</select>
<!-- 查询当月入职人数 -->
<select id="queryInduction" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
EXTRACT(MONTH FROM rz_time) AS month,
COUNT(emp_num) induction
FROM
FROM
yggl_main_emp
WHERE
org_code=#{orgCode}
</select>
<!-- 查询本月转正人数 -->
<select id="queryPositive" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
EXTRACT(MONTH FROM sjzz_time) AS month,
COUNT(emp_num) positive
FROM
COUNT(emp_num) positive
FROM
yggl_main_emp
WHERE
org_code=#{orgCode}
</select>
<!-- 查询员工平均年龄 -->
<select id="queryAvgAge" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
......@@ -300,7 +313,7 @@
WHERE
org_code=#{orgCode}
</select>
<!-- 查询岗位上级部门id及名称及人数 -->
<select id="queryDepartmentNum" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
......@@ -317,7 +330,7 @@
c.name,
b.up_id
</select>
<!-- 查询岗位名称及人数 -->
<select id="queryJobsNum" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
......@@ -333,7 +346,7 @@
y.bmgw_id,
b.name;
</select>
<!-- 学历及人数查询 -->
<select id="queryEducation" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
......@@ -351,24 +364,24 @@
ORDER BY
e.id ASC
</select>
<!-- 员工年龄分布查询 -->
<select id="queryEmpAge" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
<![CDATA[
SELECT
SELECT
SUM((CASE WHEN age < 0.5 THEN 1 ELSE 0 END)) AS lowerEighteen,
SUM((CASE WHEN age >= 18 AND age < 25 THEN 1 ELSE 0 END)) AS eighteenToTwentyfive,
SUM((CASE WHEN age >= 25 AND age < 32 THEN 1 ELSE 0 END)) AS twentyfiveToThirtytwo,
SUM((CASE WHEN age >= 32 AND age < 38 THEN 1 ELSE 0 END)) AS thirtytwoToThirtyeight,
SUM((CASE WHEN age >= 38 AND age < 45 THEN 1 ELSE 0 END)) AS thirtyeightToFortyfive,
SUM((CASE WHEN age >=45 THEN 1 ELSE 0 END)) AS higherFortyfive
FROM
FROM
yggl_main_emp
WHERE
org_code = #{orgCode}
]]>
</select>
<!-- 籍贯统计(省份)查询 -->
<select id="queryNativeplace" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
SELECT
......@@ -384,23 +397,47 @@
GROUP BY
c.city_name
</select>
<!-- 员工工龄分布查询 -->
<select id="queryWorkingAge" resultType="cn.timer.api.dto.yggl.YgglCartogramDto">
<![CDATA[
SELECT
SELECT
SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 < 0.5 THEN 1 ELSE 0 END)) AS lowerHalfyear,
SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 0.5 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 1 THEN 1 ELSE 0 END)) AS halfYear,
SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 1 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 1.5 THEN 1 ELSE 0 END)) AS oneYear,
SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 1.5 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 2 THEN 1 ELSE 0 END)) AS onehalfYear,
SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >= 2 AND TIMESTAMPDIFF(day, rz_time,now())/365 < 2.5 THEN 1 ELSE 0 END)) AS twoYear,
SUM((CASE WHEN TIMESTAMPDIFF(day, rz_time,now())/365 >=2.5 THEN 1 ELSE 0 END)) AS higherTwohalfYear
FROM
FROM
yggl_main_emp
WHERE
org_code = #{orgCode}
]]>
</select>
<!-- 查询在职员工数 -->
<select id="selectEmpCount" resultType="Integer">
<if test="status != null and status != ''">
<if test="status == 1">
SELECT SUM(job_status BETWEEN 0 and 3) AS probation FROM yggl_main_emp WHERE org_code = #{orgCode}
</if>
<if test="status == 2">
SELECT SUM(job_type = 0) AS probation FROM yggl_main_emp WHERE org_code = #{orgCode}
</if>
<if test="status == 3">
SELECT SUM(job_status = 0) AS probation FROM yggl_main_emp WHERE org_code = #{orgCode}
</if>
<if test="status == 4">
SELECT SUM(job_status = 1) AS probation FROM yggl_main_emp WHERE org_code = #{orgCode}
</if>
<if test="status == 5">
SELECT SUM(job_status = 2) AS probation FROM yggl_main_emp WHERE org_code = #{orgCode}
</if>
<if test="status == 6">
SELECT SUM(job_status = 3) AS probation FROM yggl_main_lzb WHERE org_code = #{orgCode}
</if>
</if>
</select>
<!--根据id数组查询员工-->
<select id="selectListByIds" resultType="cn.timer.api.bean.yggl.YgglMainEmp">
......@@ -422,4 +459,4 @@
#{zjnum}
</foreach>
</select>
</mapper>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglCompanyMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglCompany" id="zpglCompanyMap">
<result property="id" column="id"/>
<result property="companyName" column="company_name"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createUserId" column="create_user_id"/>
<result property="updateUserId" column="update_user_id"/>
<result property="orgCode" column="org_code"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglCptkMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglCptk" id="zpglCptkMap">
<result property="id" column="id"/>
<result property="question" column="question"/>
<result property="answerA" column="answer_a"/>
<result property="answerB" column="answer_b"/>
<result property="answerC" column="answer_c"/>
<result property="answerD" column="answer_d"/>
<result property="sort" column="sort"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglDtkMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglDtk" id="zpglDtkMap">
<result property="id" column="id"/>
<result property="red" column="red"/>
<result property="blue" column="blue"/>
<result property="yellow" column="yellow"/>
<result property="green" column="green"/>
<result property="count" column="count"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglFailMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglFail" id="zpglFailMap">
<result property="id" column="id"/>
<result property="zpglRcxxStatus" column="zpgl_rcxx_status"/>
<result property="failCause" column="fail_cause"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createUserId" column="create_user_id"/>
<result property="updateUserId" column="update_user_id"/>
<result property="orgCode" column="org_code"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglGzddMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglGzdd" id="ZpglGzddMap">
<result property="id" column="id"/>
<result property="provinceId" column="province_id"/>
<result property="province" column="province"/>
<result property="districtId" column="district_id"/>
<result property="district" column="district"/>
<result property="cityId" column="city_id"/>
<result property="city" column="city"/>
<result property="gzddName" column="zj_name"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createUserId" column="create_user_id"/>
<result property="updateUserId" column="update_user_id"/>
<result property="orgCode" column="org_code"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglMslcLogMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglMslcLog" id="zpglMslcLogMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="zpglRcxxStatus" column="zpgl_rcxx_status"/>
<result property="detail" column="detail"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxCertificateMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxCertificate" id="zpglRcxxCertificateMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="getTime" column="get_time"/>
<result property="certificateName" column="certificate_name"/>
<result property="image" column="image"/>
<result property="isDelete" column="is_delete"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxExperienceMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxExperience" id="zpglRcxxExperienceMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="company" column="company"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="jobName" column="job_name"/>
<result property="department" column="department"/>
<result property="salary" column="salary"/>
<result property="workContent" column="work_content"/>
<result property="reason" column="reason"/>
<result property="linkName" column="link_name"/>
<result property="linkMobile" column="link_mobile"/>
<result property="isDelete" column="is_delete"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxJtzlMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxJtzl" id="zpglRcxxJtzlMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="name" column="name"/>
<result property="relationship" column="relationship"/>
<result property="linkAddress" column="link_address"/>
<result property="linkMobile" column="link_mobile"/>
<result property="isDelete" column="is_delete"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxLxxxbMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxLxxxb" id="zpglRcxxLxxxbMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="linkName" column="link_name"/>
<result property="linkMobile" column="link_mobile"/>
<result property="provinceId" column="province_id"/>
<result property="province" column="province"/>
<result property="districtId" column="district_id"/>
<result property="district" column="district"/>
<result property="cityId" column="city_id"/>
<result property="city" column="city"/>
<result property="linkAddressDetail" column="link_address_detail"/>
<result property="isDelete" column="is_delete"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxx" id="zpglRcxxMap">
<result property="id" column="id"/>
<result property="zpglZwxxId" column="zpgl_zwxx_id"/>
<result property="name" column="name"/>
<result property="mobile" column="mobile"/>
<result property="mail" column="mail"/>
<result property="idCard" column="id_card"/>
<result property="weixin" column="weixin"/>
<result property="height" column="height"/>
<result property="weight" column="weight"/>
<result property="face" column="face"/>
<result property="nationClassId" column="nation_class_id"/>
<result property="nativePlace" column="native_place"/>
<result property="bmgwId" column="bmgw_id"/>
<result property="jobType" column="job_type"/>
<result property="yjrzTime" column="yjrz_time"/>
<result property="provinceId" column="province_id"/>
<result property="province" column="province"/>
<result property="districtId" column="district_id"/>
<result property="district" column="district"/>
<result property="cityId" column="city_id"/>
<result property="city" column="city"/>
<result property="address" column="address"/>
<result property="grAddress" column="gr_address"/>
<result property="marryStatus" column="marry_status"/>
<result property="language" column="language"/>
<result property="drivingLicense" column="driving_license"/>
<result property="medicalHistory" column="medical_history"/>
<result property="medicalDetail" column="medical_detail"/>
<result property="salary" column="salary"/>
<result property="workStatus" column="work_status"/>
<result property="workTimer" column="work_timer"/>
<result property="hobby" column="hobby"/>
<result property="contMyDesc" column="cont_my_desc"/>
<result property="reward" column="reward"/>
<result property="record" column="record"/>
<result property="zpglZpqdId" column="zpgl_zpqd_id"/>
<result property="fileName" column="file_name"/>
<result property="filePath" column="file_path"/>
<result property="remarks" column="remarks"/>
<result property="sex" column="sex"/>
<result property="datebirth" column="datebirth"/>
<result property="workyears" column="workyears"/>
<result property="highesteducation" column="highesteducation"/>
<result property="universitie" column="universitie"/>
<result property="company" column="company"/>
<result property="zjzw" column="zjzw"/>
<result property="workBeginYear" column="work_begin_year"/>
<result property="label" column="label"/>
<result property="status" column="status"/>
<result property="zpglFailId" column="zpgl_fail_id"/>
<result property="zpglCompanyId" column="zpgl_company_id"/>
<result property="zpglZjId" column="zpgl_zj_id"/>
<result property="zpglGzddId" column="zpgl_gzdd_id"/>
<result property="interviewerId" column="interviewer_id"/>
<result property="interviewTime" column="interview_time"/>
<result property="noticeWay" column="notice_way"/>
<result property="interviewNum" column="interview_num"/>
<result property="userId" column="user_id"/>
<result property="joincause" column="joinCause"/>
<result property="orgCode" column="org_code"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="area" column="aera"/>
<result property="ifrck" column="ifrck"/>
<result property="ifrckTime" column="ifrck_time"/>
<result property="deleteFlag" column="delete_flag"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxOfferMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxOffer" id="zpglRcxxOfferMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="title" column="title"/>
<result property="bumen" column="bumen"/>
<result property="gangwei" column="gangwei"/>
<result property="rcxxName" column="rcxx_name"/>
<result property="companyName" column="company_name"/>
<result property="linkName" column="link_name"/>
<result property="linkPhone" column="link_phone"/>
<result property="linkEmail" column="link_email"/>
<result property="rzTime" column="rz_time"/>
<result property="orgCode" column="org_code"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxProjectMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxProject" id="zpglRcxxProjectMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="projectName" column="project_name"/>
<result property="job" column="job"/>
<result property="projectDescribe" column="project_describe"/>
<result property="duty" column="duty"/>
<result property="location" column="location"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxStudyMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxStudy" id="zpglRcxxStudyMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="schoolName" column="school_name"/>
<result property="education" column="education"/>
<result property="subject" column="subject"/>
<result property="isDelete" column="is_delete"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglRcxxTrainMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxTrain" id="zpglRcxxTrainMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="trainCompany" column="train_company"/>
<result property="trainSubject" column="train_subject"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="trainContent" column="train_content"/>
<result property="isDelete" column="is_delete"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglWxgzptEmpRcxxMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglWxgzptEmpRcxx" id="zpglWxgzptEmpRcxxMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="ygglMainEmpId" column="yggl_main_emp_id"/>
<result property="mobile" column="mobile"/>
<result property="openid" column="openid"/>
<result property="unionid" column="unionid"/>
<result property="orgCode" column="org_code"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglZjMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglZj" id="zpglZjMap">
<result property="id" column="id"/>
<result property="zjName" column="zj_name"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createUserId" column="create_user_id"/>
<result property="updateUserId" column="update_user_id"/>
<result property="orgCode" column="org_code"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglZpqdMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglZpqd" id="zpglZpqdMap">
<result property="id" column="id"/>
<result property="zpqdName" column="zj_name"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createUserId" column="create_user_id"/>
<result property="updateUserId" column="update_user_id"/>
<result property="orgCode" column="org_code"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.timer.api.dao.zpgl.ZpglZwxxMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="cn.timer.api.bean.zpgl.ZpglZwxx" id="zpglZwxxMap">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="deptId" column="dept_id"/>
<result property="jobClassId" column="job_class_id"/>
<result property="workType" column="work_type"/>
<result property="zpglGzddId" column="zpgl_gzdd_id"/>
<result property="num" column="num"/>
<result property="entryNum" column="entry_num"/>
<result property="reason" column="reason"/>
<result property="experience" column="experience"/>
<result property="education" column="education"/>
<result property="salaryMin" column="salary_min"/>
<result property="salaryMax" column="salary_max"/>
<result property="registerTime" column="register_time"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="description" column="description"/>
<result property="urgentStatus" column="urgent_status"/>
<result property="status" column="status"/>
<result property="orgCode" column="org_code"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment