weaver-hrm-recruit/src/weaver/formmode/recruit/modeexpand/position/ResumeSavedThread.java

216 lines
8.8 KiB
Java
Raw Normal View History

2023-10-17 15:18:53 +08:00
package weaver.formmode.recruit.modeexpand.position;
import cn.hutool.core.convert.Convert;
import com.engine.recruit.constant.ModeTable;
2023-10-19 18:13:58 +08:00
import com.engine.recruit.enums.ApplicationStatusEnum;
2023-10-17 15:18:53 +08:00
import com.engine.recruit.enums.CommonBrowserTypeEnum;
import com.engine.recruit.enums.HighestDegreeEnum;
import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient;
import com.weaver.rpa.sdk.clients.core.ERPASDKClients;
import com.weaver.util.threadPool.entity.LocalRunnable;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
import weaver.erpa.apps.entity.application.resume.dto.*;
import weaver.formmode.recruit.modeexpand.util.ApplicantCommonInfo;
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import weaver.hrm.User;
import java.util.*;
/**
* @author:dxfeng
* @createTime: 2023/10/16
* @version: 1.0
*/
public class ResumeSavedThread extends LocalRunnable {
private ResumeMqMessage resumeMqMessage;
private static final int SEC_CATEGORY = Convert.toInt(RecruitModeUtil.getRecruitPropValue("APPLICANTS_RESUMES_CATEGORY"));
public ResumeSavedThread(ResumeMqMessage resumeMqMessage) {
this.resumeMqMessage = resumeMqMessage;
}
@Override
public void execute() throws Exception {
parseResume(resumeMqMessage);
}
/**
* 解析建立并入库
*
* @param resumeMqMessage
* @throws Exception
*/
private void parseResume(ResumeMqMessage resumeMqMessage) throws Exception {
String userId = resumeMqMessage.getUserId();
User user = new User();
if (StringUtils.isNotBlank(userId)) {
user.setUid(Convert.toInt(userId));
} else {
user.setUid(1);
}
// 千里聆简历ID
Long resumeId = resumeMqMessage.getResumeId();
ResumeInfoDto resumeInfoDto = resumeMqMessage.getResumeInfoDto();
Map<String, Object> params = new HashMap<>();
// 姓名
params.put("xm", resumeInfoDto.getName());
// 性别
params.put("xb", resumeInfoDto.getSex());
// 年龄
params.put("nl", resumeInfoDto.getAge());
// 工作经验
params.put("gzjy", getCommonBrowserKey(getExperienceText(resumeInfoDto.getExperience()), CommonBrowserTypeEnum.WORK_EXPERIENCE.getDesc()));
// 手机号码
params.put("sjhm", resumeInfoDto.getPhone());
// 电子邮箱
params.put("dzyx", resumeInfoDto.getEmail());
// 期望税前月薪
params.put("qwsqyxk", resumeInfoDto.getExpectSalaryStart());
// 最高学历
params.put("zgxl", HighestDegreeEnum.getDegreeId(resumeInfoDto.getHighestDegree()).getId());
// 原始简历
params.put("ysjl", convertStreamToE9DocId(resumeMqMessage.getResumeInfoDto().getResumeFileId(), user));
// 千里聆简历ID
params.put("qlljl", resumeId);
// 状态,指定待分配
2023-10-19 18:13:58 +08:00
params.put("zt", ApplicationStatusEnum.DISTRIBUTION.getValue());
2023-10-17 15:18:53 +08:00
// 填充建模数据基本信息
int formModeId = ApplicantCommonInfo.getModeIdByTableName(ModeTable.UF_JCL_YPPC);
params.put("formmodeid", formModeId);
params.put("modedatacreater", user.getUID());
String dateTime = DateUtil.getFullDate();
String[] split = dateTime.split(" ");
params.put("modedatacreatedate", split[0]);
params.put("modedatacreatetime", split[1]);
params.put("modedatamodifier", user.getUID());
params.put("modedatamodifydatetime", dateTime);
params.put("modedatacreatertype", "0");
String uuid = UUID.randomUUID().toString();
params.put("modeuuid", uuid);
// 插入主表
RecordSet rs = new RecordSet();
List<String> fieldList = new ArrayList<>();
List<String> fieldValueList = new ArrayList<>();
params.forEach((key, value) -> {
fieldList.add(key);
fieldValueList.add(RecruitModeUtil.parseBlankToNull(value));
});
rs.executeUpdate("insert into " + ModeTable.UF_JCL_YPPC + " (" + StringUtils.join(fieldList, ",") + ") values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
Thread.sleep(1000);
int mainId = ApplicantCommonInfo.refreshRight(rs, uuid, ModeTable.UF_JCL_YPPC, formModeId);
// 插入明细表数据
List<ResumeInfoEducationExperienceDto> educationExperience = resumeInfoDto.getEducationExperience();
String sql = "insert into " + ModeTable.getDetailTableName(ModeTable.UF_JCL_YPPC, 1) + " (mainId,xxmc,xl,zy,kssj,jssj) values (?,?,?,?,?,?) ";
for (ResumeInfoEducationExperienceDto educationExperienceDto : educationExperience) {
List<Object> data = new ArrayList<>();
data.add(mainId);
data.add(educationExperienceDto.getSchoolName());
data.add(HighestDegreeEnum.getDegreeId(educationExperienceDto.getDegree()).getId());
data.add(educationExperienceDto.getMajor());
data.add(DateUtil.getDate(educationExperienceDto.getBeginTime()));
data.add(DateUtil.getDate(educationExperienceDto.getEndTime()));
rs.executeUpdate(sql, data);
}
sql = "insert into " + ModeTable.getDetailTableName(ModeTable.UF_JCL_YPPC, 2) + " (mainId,gsmc,gw,gzzz,kssj,jssj) values (?,?,?,?,?,?) ";
List<ResumeInfoWorkExperienceDto> workExperience = resumeInfoDto.getWorkExperience();
for (ResumeInfoWorkExperienceDto workExperienceDto : workExperience) {
List<Object> data = new ArrayList<>();
data.add(mainId);
data.add(workExperienceDto.getCompanyName());
data.add(workExperienceDto.getJobName());
data.add(workExperienceDto.getContent());
data.add(DateUtil.getDate(workExperienceDto.getBeginTime()));
data.add(DateUtil.getDate(workExperienceDto.getEndTime()));
rs.executeUpdate(sql, data);
}
sql = "insert into " + ModeTable.getDetailTableName(ModeTable.UF_JCL_YPPC, 3) + " (mainId,xmmc,xmms,kssj,jssj) values (?,?,?,?,?) ";
List<ResumeInfoProjectExperienceDto> projectExperience = resumeInfoDto.getProjectExperience();
for (ResumeInfoProjectExperienceDto projectExperienceDto : projectExperience) {
List<Object> data = new ArrayList<>();
data.add(mainId);
data.add(projectExperienceDto.getProjectName());
data.add(projectExperienceDto.getContent());
data.add(DateUtil.getDate(projectExperienceDto.getBeginTime()));
data.add(DateUtil.getDate(projectExperienceDto.getEndTime()));
rs.executeUpdate(sql, data);
}
}
private String getCommonBrowserKey(String value, String commonBrowserType) {
RecordSet rs = new RecordSet();
rs.executeQuery("select id from uf_sjzd where zdlxmc = (select id from uf_zdlx where zdmc = ?) and xxnr =?", commonBrowserType, value);
if (rs.next()) {
return rs.getString("id");
}
return "";
}
private String getExperienceText(Integer experience) {
String experienceText = "不限";
switch (experience) {
case -1:
experienceText = "不限";
break;
case 1:
experienceText = "1年以内";
break;
case 2:
experienceText = "1-3年";
break;
case 3:
experienceText = "3-5年";
break;
case 5:
experienceText = "5-10年";
break;
case 6:
experienceText = "10年以上";
break;
default:
break;
}
return experienceText;
}
/**
* 将文件流转换为文档ID
*
* @param resumeFileId
* @param user
* @return
*/
private String convertStreamToE9DocId(Long resumeFileId, User user) {
List<Integer> docIdList = new ArrayList<>();
ERPAResumeSDKClient client = ERPASDKClients.getResumeSDKClient();
client.start();
client.downloadResumeFile(resumeFileId, (fileName, stream) -> {
try {
int imageFileId = RecruitModeUtil.generateImageFileId(stream, fileName);
docIdList.add(RecruitModeUtil.createDocId(SEC_CATEGORY, imageFileId, user));
} catch (Exception e) {
throw new RuntimeException(e);
}
});
return CollectionUtils.isNotEmpty(docIdList) ? Integer.toString(docIdList.get(0)) : "";
}
public ResumeMqMessage getResumeMqMessage() {
return this.resumeMqMessage;
}
public void setResumeMqMessage(ResumeMqMessage resumeMqMessage) {
this.resumeMqMessage = resumeMqMessage;
}
}