2023-11-13 09:42:14 +08:00
package weaver.interfaces.recruit.thread ;
2024-02-08 13:53:00 +08:00
import cn.hutool.core.convert.Convert ;
2024-01-12 09:43:11 +08:00
import com.alibaba.fastjson.JSON ;
2023-11-13 09:42:14 +08:00
import com.engine.recruit.conn.* ;
import com.engine.recruit.entity.resume.QllResumePo ;
import com.engine.recruit.enums.ApplicationStatusEnum ;
import com.engine.recruit.util.RecruitUtil ;
import org.apache.commons.collections.CollectionUtils ;
import org.apache.commons.lang3.StringUtils ;
import weaver.common.DateUtil ;
import weaver.conn.RecordSet ;
2024-01-12 09:43:11 +08:00
import weaver.general.BaseBean ;
import weaver.general.Util ;
2023-11-13 09:42:14 +08:00
import java.util.List ;
import java.util.Map ;
/ * *
* @author : dxfeng
* @createTime : 2023 / 11 / 10
* @version : 1 . 0
* /
public class ExtractQllResumeThread extends Thread {
2024-02-08 13:53:00 +08:00
BaseBean baseBean = new BaseBean ( ) ;
2023-11-13 09:42:14 +08:00
@Override
public void run ( ) {
RecordSet rs = new RecordSet ( ) ;
rs . executeQuery ( " select id,xm,xb,nl,gzjy,xjzd,sjhm,yx,ypzw,grys,qzyx,gzjl,xmjl,jyjl,zgxl,zyjn,yynl,zs,jlfj,rksj,tdsj,lyqd,gjrsjh from uf_jcl_jlzjb where ocr is null and cqzt is null order by modedatacreatedate, modedatacreatetime " ) ;
List < Map < String , Object > > mapList = RecruitRecordSet . getRecordMapList ( rs ) ;
if ( CollectionUtils . isEmpty ( mapList ) ) {
return ;
}
for ( Map < String , Object > map : mapList ) {
QllResumePo qllResumePo = RecruitUtil . parseMap2Object ( map , QllResumePo . class ) ;
2024-01-12 09:43:11 +08:00
try {
2024-02-08 13:53:00 +08:00
baseBean . writeLog ( " 千里聆简历解析开始, 中间表ID=【 " + qllResumePo . getId ( ) + " 】 " ) ;
2024-01-12 09:43:11 +08:00
RecruitDataMap < Object > dataMap = buildApplicantMap ( qllResumePo ) ;
2024-02-08 13:53:00 +08:00
baseBean . writeLog ( " 千里聆简历主表数据解析完成== " + JSON . toJSONString ( dataMap ) ) ;
2024-01-12 09:43:11 +08:00
// 校验简历信息、并插入
CheckRepeatResume instance = CheckRepeatResume . getInstance ( ) ;
Map < String , Object > checkMap = instance . insertResumeAndReturn ( dataMap ) ;
String mainId = Util . null2String ( checkMap . get ( " mainId " ) ) ;
String sourceId = Util . null2String ( checkMap . get ( " sourceId " ) ) ;
2024-02-08 13:53:00 +08:00
baseBean . writeLog ( " 千里聆简历主表数据插入完成, mainId==【 " + mainId + " 】, sourceId==【 " + sourceId + " 】 " ) ;
// 数据写入完成后, 更新抽取状态为新插入的数据ID
rs . executeUpdate ( " update uf_jcl_jlzjb set cqzt = 1 ,mainid = ? ,sourceid = ? where id = ? " , Convert . toInt ( mainId ) , Convert . toInt ( sourceId ) , qllResumePo . getId ( ) ) ;
2024-01-12 09:43:11 +08:00
// 插入明细表数据
instance . insertResumeDetailTable ( qllResumePo . getJyjl ( ) , " uf_jcl_yppc_dt1 " , mainId , sourceId ) ;
instance . insertResumeDetailTable ( qllResumePo . getGzjl ( ) , " uf_jcl_yppc_dt2 " , mainId , sourceId ) ;
instance . insertResumeDetailTable ( qllResumePo . getXmjl ( ) , " uf_jcl_yppc_dt3 " , mainId , sourceId ) ;
2024-02-08 13:53:00 +08:00
baseBean . writeLog ( " 千里聆简历解析完成, mainId==【 " + mainId + " 】, sourceId==【 " + sourceId + " 】 " ) ;
2024-01-12 09:43:11 +08:00
} catch ( Exception e ) {
2024-02-08 13:53:00 +08:00
baseBean . writeLog ( " 简历解析失败 " + JSON . toJSONString ( qllResumePo ) , e ) ;
2024-01-12 09:43:11 +08:00
}
2023-11-13 09:42:14 +08:00
}
}
/ * *
* 构建应聘者数据集合
*
* @param qllResumePo
* @return
* /
private RecruitDataMap < Object > buildApplicantMap ( QllResumePo qllResumePo ) {
RecruitDataMap < Object > insertMap = new RecruitDataMap < > ( ) ;
// 姓名
insertMap . put ( " xm " , qllResumePo . getXm ( ) ) ;
// 性别
insertMap . put ( " xb " , qllResumePo . getXb ( ) ) ;
2024-01-12 09:43:11 +08:00
// 年龄
insertMap . put ( " nl " , qllResumePo . getNl ( ) ) ;
2023-11-13 09:42:14 +08:00
// 工作经验
insertMap . put ( " gzjy " , qllResumePo . getGzjy ( ) ) ;
2024-01-12 09:43:11 +08:00
// 手机号码
insertMap . put ( " sjhm " , qllResumePo . getSjhm ( ) ) ;
// 电子邮箱
insertMap . put ( " dzyx " , qllResumePo . getYx ( ) ) ;
// 自我评价
insertMap . put ( " zwpj " , qllResumePo . getGrys ( ) ) ;
2023-11-13 09:42:14 +08:00
// 最高学历
insertMap . put ( " zgxl " , qllResumePo . getZgxl ( ) ) ;
2024-01-12 09:43:11 +08:00
// 简历来源
insertMap . put ( " jlly " , qllResumePo . getLyqd ( ) ) ;
2023-11-13 09:42:14 +08:00
// 投递时间
insertMap . put ( " tdsj " , DateUtil . getDateTime ( ) ) ;
// 原始简历
insertMap . put ( " ysjl " , qllResumePo . getJlfj ( ) ) ;
2024-02-08 13:53:00 +08:00
// 投递职位(第三方)
insertMap . put ( " tdzwdsf " , qllResumePo . getYpzw ( ) ) ;
2023-11-13 09:42:14 +08:00
String zt = ApplicationStatusEnum . DISTRIBUTION . getValue ( ) ;
// 应聘职位
2024-02-08 13:53:00 +08:00
String ypzw = PositionCommonInfo . getPositionIdByName ( qllResumePo . getYpzw ( ) , qllResumePo . getGjrsjh ( ) ) ;
baseBean . writeLog ( " 投递职位==【 " + qllResumePo . getYpzw ( ) + " 】,投递职位ID==【 " + ypzw + " 】 " ) ;
2023-11-13 09:42:14 +08:00
if ( StringUtils . isNotBlank ( ypzw ) ) {
String flowId = PositionCommonInfo . getRecruitFlowId ( ypzw ) ;
Map < String , String > initialStage = ApplicantCommonInfo . getInitialStage ( flowId ) ;
if ( null ! = initialStage ) {
2024-02-08 13:53:00 +08:00
baseBean . writeLog ( " initialStage=== " + JSON . toJSONString ( initialStage ) ) ;
2023-11-20 18:33:57 +08:00
String zpjd = initialStage . get ( " zpjd " ) ;
2023-11-13 09:42:14 +08:00
String dqypjd = initialStage . get ( " jdlx " ) ;
if ( StringUtils . isNotBlank ( zpjd ) & & StringUtils . isNotBlank ( dqypjd ) ) {
insertMap . put ( " ypzw " , ypzw ) ;
insertMap . put ( " zplc " , flowId ) ;
insertMap . put ( " zpjd " , zpjd ) ;
insertMap . put ( " dqypjd " , dqypjd ) ;
zt = ApplicationStatusEnum . CANDIDATE . getValue ( ) ;
}
}
}
// 应聘状态
insertMap . put ( " zt " , zt ) ;
return insertMap ;
}
}