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
2024-11-21 16:52:32 +08:00
import java.text.ParseException ;
import java.text.SimpleDateFormat ;
import java.util.Date ;
2023-11-13 09:42:14 +08:00
import java.util.List ;
import java.util.Map ;
2024-11-21 16:52:32 +08:00
import java.util.stream.Collectors ;
2023-11-13 09:42:14 +08:00
/ * *
* @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 ) ;
2024-11-21 16:52:32 +08:00
// 更新毕业院校
List < RecruitDataMap < Object > > studyList = qllResumePo . getJyjl ( ) ;
if ( CollectionUtils . isNotEmpty ( studyList ) ) {
SimpleDateFormat dateFormat = new SimpleDateFormat ( " yyyy-MM-dd " ) ;
List < RecruitDataMap < Object > > sortedList = studyList . stream ( )
. sorted ( ( map1 , map2 ) - > {
String dateStr1 = Util . null2String ( map1 . get ( " bysj " ) ) ;
String dateStr2 = Util . null2String ( map2 . get ( " bysj " ) ) ;
if ( StringUtils . isBlank ( dateStr1 ) & & StringUtils . isBlank ( dateStr2 ) ) {
return 0 ;
}
if ( StringUtils . isBlank ( dateStr1 ) ) {
return 1 ;
}
if ( StringUtils . isBlank ( dateStr2 ) ) {
return - 1 ;
}
try {
Date date1 = dateFormat . parse ( dateStr1 ) ;
Date date2 = dateFormat . parse ( dateStr2 ) ;
return date1 . compareTo ( date2 ) ;
} catch ( ParseException e ) {
throw new RuntimeException ( e ) ;
}
} )
. collect ( Collectors . toList ( ) ) ;
RecruitDataMap < Object > lastMap = sortedList . get ( sortedList . size ( ) - 1 ) ;
String xxmc = Util . null2String ( lastMap . get ( " xxmc " ) ) ;
if ( StringUtils . isNotBlank ( xxmc ) ) {
insertMap . put ( " byyx " , xxmc ) ;
}
}
2023-11-13 09:42:14 +08:00
return insertMap ;
}
}