Merge branch 'feature/dxf' into 20260108

This commit is contained in:
dxfeng 2026-01-08 15:09:43 +08:00
commit c46ed8ca25
5 changed files with 96 additions and 59 deletions

View File

@ -5,6 +5,7 @@ import com.engine.recruit.exception.CustomizeRunTimeException;
import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient;
import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobDynamicField;
import com.weaver.rpa.sdk.clients.core.ERPASDKClients;
import org.apache.commons.collections.CollectionUtils;
import weaver.formmode.recruit.modeexpand.util.RecruitPositionUtil;
import weaver.general.BaseBean;
@ -51,58 +52,62 @@ public class PositionSdkInstance {
}
public static PositionSdkInstance getPositionSdkInstance() {
if (positionSdkInstance == null) {
public static PositionSdkInstance getPositionSdkInstance() {
if (positionSdkInstance == null || CollectionUtils.isEmpty(positionSdkInstance.getBoss_type())) {
synchronized (PositionSdkInstance.class) {
if (positionSdkInstance == null) {
ERPAResumeSDKClient client = null;
try {
client = ERPASDKClients.getResumeSDKClient();
} catch (Exception e) {
new BaseBean().writeLog("client get resumeSDKClient failed");
}
if (!RecruitPositionUtil.checkAvailable(client)) {
throw new CustomizeRunTimeException("checkAvailable失败千里聆SDK不可用");
}
ResumeJobDynamicField resumeJobDynamicField = client.getResumeJobDynamicField();
positionSdkInstance = new PositionSdkInstance();
positionSdkInstance.setResumeSDKClient(client);
client.addResumeSavedListener(resumeMqMessage -> {
// 处理获取到的简历信息
new BaseBean().writeLog("【简历接收回调】:" + JSON.toJSONString(resumeMqMessage));
//Thread thread = new Thread(new SdkResumeSavedThread(resumeMqMessage));
//thread.start();
});
client.start();
positionSdkInstance.setBoss_resident(resumeJobDynamicField.getBoss_resident());
// 去除千里聆返回的重复数据
List<ResumeJobDynamicField.Item> boss_resident_country1 = resumeJobDynamicField.getBoss_resident_country();
List<ResumeJobDynamicField.Item> collect = new ArrayList<>(boss_resident_country1.stream()
.collect(Collectors.toMap(
ResumeJobDynamicField.Item::getValue,
item -> item,
(existing, replacement) -> existing
))
.values());
positionSdkInstance.setBoss_resident_country(collect);
positionSdkInstance.setBoss_resident_language(resumeJobDynamicField.getBoss_resident_language());
positionSdkInstance.setBoss_resident_time_2(resumeJobDynamicField.getBoss_resident_time_2());
positionSdkInstance.setBoss_resident_time(resumeJobDynamicField.getBoss_resident_time());
if (positionSdkInstance == null || CollectionUtils.isEmpty(positionSdkInstance.getBoss_type())) {
if (null == positionSdkInstance) {
ERPAResumeSDKClient client = null;
try {
client = ERPASDKClients.getResumeSDKClient();
} catch (Exception e) {
new BaseBean().writeLog("client get resumeSDKClient failed");
}
if (!RecruitPositionUtil.checkAvailable(client)) {
throw new CustomizeRunTimeException("checkAvailable失败千里聆SDK不可用");
}
positionSdkInstance.setJob51_city(resumeJobDynamicField.getJob51_city());
positionSdkInstance.setJob51_industry(resumeJobDynamicField.getJob51_industry_txt());
positionSdkInstance = new PositionSdkInstance();
positionSdkInstance.setResumeSDKClient(client);
client.addResumeSavedListener(resumeMqMessage -> {
// 处理获取到的简历信息
new BaseBean().writeLog("【简历接收回调】:" + JSON.toJSONString(resumeMqMessage));
//Thread thread = new Thread(new SdkResumeSavedThread(resumeMqMessage));
//thread.start();
});
client.start();
}
ResumeJobDynamicField resumeJobDynamicField = positionSdkInstance.getResumeSDKClient().getResumeJobDynamicField();
if(CollectionUtils.isEmpty(positionSdkInstance.getBoss_resident())) {
positionSdkInstance.setBoss_resident(resumeJobDynamicField.getBoss_resident());
// 去除千里聆返回的重复数据
List<ResumeJobDynamicField.Item> boss_resident_country1 = resumeJobDynamicField.getBoss_resident_country();
List<ResumeJobDynamicField.Item> collect = new ArrayList<>(boss_resident_country1.stream()
.collect(Collectors.toMap(
ResumeJobDynamicField.Item::getValue,
item -> item,
(existing, replacement) -> existing
))
.values());
positionSdkInstance.setBoss_resident_country(collect);
positionSdkInstance.setBoss_resident_language(resumeJobDynamicField.getBoss_resident_language());
positionSdkInstance.setBoss_resident_time_2(resumeJobDynamicField.getBoss_resident_time_2());
positionSdkInstance.setBoss_resident_time(resumeJobDynamicField.getBoss_resident_time());
positionSdkInstance.setBoss_type(resumeJobDynamicField.getBoss_type());
positionSdkInstance.setLiepin_type(resumeJobDynamicField.getLiepin_type());
positionSdkInstance.setLagou_type(resumeJobDynamicField.getLagou_type());
positionSdkInstance.setJob51_type(resumeJobDynamicField.getJob51_type());
positionSdkInstance.setZhilian_type(resumeJobDynamicField.getZhilian_type());
positionSdkInstance.setDxrcw_type(resumeJobDynamicField.getDxrcw_type());
positionSdkInstance.setDxrcw_major(resumeJobDynamicField.getDxrcw_major());
positionSdkInstance.setDxrcw_yydj(resumeJobDynamicField.getDxrcw_yydj());
positionSdkInstance.setDxrcw_zdzc(resumeJobDynamicField.getDxrcw_zdzc());
positionSdkInstance.setDxrcw_zwfl(resumeJobDynamicField.getDxrcw_zwfl());
positionSdkInstance.setJob51_city(resumeJobDynamicField.getJob51_city());
positionSdkInstance.setJob51_industry(resumeJobDynamicField.getJob51_industry_txt());
positionSdkInstance.setBoss_type(resumeJobDynamicField.getBoss_type());
positionSdkInstance.setLiepin_type(resumeJobDynamicField.getLiepin_type());
positionSdkInstance.setLagou_type(resumeJobDynamicField.getLagou_type());
positionSdkInstance.setJob51_type(resumeJobDynamicField.getJob51_type());
positionSdkInstance.setZhilian_type(resumeJobDynamicField.getZhilian_type());
positionSdkInstance.setDxrcw_type(resumeJobDynamicField.getDxrcw_type());
positionSdkInstance.setDxrcw_major(resumeJobDynamicField.getDxrcw_major());
positionSdkInstance.setDxrcw_yydj(resumeJobDynamicField.getDxrcw_yydj());
positionSdkInstance.setDxrcw_zdzc(resumeJobDynamicField.getDxrcw_zdzc());
positionSdkInstance.setDxrcw_zwfl(resumeJobDynamicField.getDxrcw_zwfl());
}
}
}
}

View File

@ -207,6 +207,6 @@ public class QllResumePo {
if (StringUtils.isBlank(str)) {
return "";
}
return str.replaceAll("[\\pC]", "").replace("\\n", "\n").replace("\\r", "");
return str.replaceAll("[\\pC]", "").replace("\\n", "\n").replace("\\r", "").replace("</br>","\n");
}
}

View File

@ -1,5 +1,6 @@
package com.engine.recruit.service.impl;
import com.alibaba.fastjson.JSON;
import com.engine.core.impl.Service;
import com.engine.recruit.conn.ApplicantCommonInfo;
import com.engine.recruit.conn.RecruitDataMap;
@ -79,6 +80,8 @@ public class InductionManageServiceImpl extends Service implements InductionMana
// 查询当前数据字段值
rs.executeQuery("select * from uf_jcl_rzgl where id = ? ", billId);
Map<String, Object> mainDataMap = RecruitRecordSet.getSingleRecordMap(rs);
rs.writeLog("billid==" + billId);
rs.writeLog("mainDataMap==" + JSON.toJSONString(mainDataMap));
// 根据入职管理信息完善信息采集表单
@ -97,6 +100,8 @@ public class InductionManageServiceImpl extends Service implements InductionMana
dataMap.put("yx", RecruitModeUtil.parseBlankToNull(mainDataMap.get("dzyx")));
String xxcjid = Util.null2String(mainDataMap.get("xxcjid"));
rs.writeLog("xxcjid==" + xxcjid);
String password = "";
// 已发送信息采集通知的可以继续发送邮件通知沿用原先的账号密码
if (StringUtils.isNotBlank(xxcjid)) {
@ -106,11 +111,17 @@ public class InductionManageServiceImpl extends Service implements InductionMana
password = rs.getString("mm");
mainDataMap.put("sjhm", RecruitModeUtil.parseBlankToNull(rs.getString("sjh")));
}
rs.writeLog("password-old==" + password);
rs.writeLog("mainDataMap==" + JSON.toJSONString(mainDataMap));
}
// 如果密码为空则创建信息采集数据
if (StringUtils.isBlank(password)) {
// 生成登录密码
password = generatePassword();
rs.writeLog("password-new==" + password);
dataMap.put("mm", password);
dataMap.put("modedatastatus", "1");
@ -121,27 +132,37 @@ public class InductionManageServiceImpl extends Service implements InductionMana
xxcjid = String.valueOf(id);
// 更新状态为已发送,反填信息采集ID
rs.executeUpdate("update uf_jcl_rzgl set xxcj = ? ,xxcjid = ? where id = ? ", InfoCollectEnum.HAS_SENT.getId(), id, billId);
rs.writeLog("dataMap==" + JSON.toJSONString(dataMap));
rs.writeLog("xxcjid==" + xxcjid);
}
String smsContent;
String emailContent;
String emailContent = yjnr;
// 发送短信
String mobile = Util.null2String(dataMap.get("sjh"));
String email = Util.null2String(dataMap.get("yx"));
String messageLink = RecruitConstant.COLLECT_MESSAGE_LINK;
//messageLink += "&billId=" + id;
rs.writeLog("emailContent[替换前]==" + emailContent);
yjnr = yjnr.replace("{初始密码}", password);
emailContent = emailContent.replace("{初始密码}", password);
rs.writeLog("emailContent[替换后]==" + emailContent);
smsContent = yjnr.replace("{链接地址}", messageLink);
smsContent = emailContent.replace("{链接地址}", messageLink);
smsContent = RecruitModeUtil.getReplaceContent(smsContent, fieldMapList, mainDataMap);
rs.writeLog("smsContent==" + smsContent);
if (StringUtils.isNotBlank(messageLink)) {
messageLink = "<span><a href='" + messageLink + "' target='_blank'>链接地址</a></span>";
}
emailContent = yjnr.replace("{链接地址}", messageLink);
emailContent = emailContent.replace("{链接地址}", messageLink);
emailContent = RecruitModeUtil.getReplaceContent(emailContent, fieldMapList, mainDataMap);
rs.writeLog("emailContent==" + emailContent);
// 发送邮件
RecruitMessageUtils.sendEmail(email, yjzt, emailContent);
// 发送短信
@ -199,23 +220,32 @@ public class InductionManageServiceImpl extends Service implements InductionMana
String mobile = Util.null2String(param.get("mobile"));
String pwd = Util.null2String(param.get("pwd"));
rs.executeQuery("select id from uf_jcl_xxcj where sjh = ? and mm = ?", mobile, pwd);
rs.writeLog("mobile=="+mobile);
rs.writeLog("pwd=="+pwd);
String xxcjId = "";
if (rs.next()) {
xxcjId = rs.getString("id");
} else {
throw new CustomizeRunTimeException("手机号或密码错误");
}
rs.writeLog("xxcjId=="+xxcjId);
// 校验当前链接的有效期
rs.executeQuery("select * from uf_jcl_rzgl where xxcjid = ? ", xxcjId);
if (rs.next()) {
// 当前关联入职已取消入职/已入职点击提示当前链接已失效且不可操作
String entryStatus = rs.getString("rzzt");
rs.writeLog("entryStatus=="+entryStatus);
if ("1".equals(entryStatus) || "2".equals(entryStatus)) {
throw new CustomizeRunTimeException("当前链接已失效");
}
// 当前信息采集链接的地址默认有效期为发出日期预计入职日期
String date = rs.getString("yjrzrq");
rs.writeLog("date=="+date);
rs.writeLog("currentDate=="+DateUtil.getCurrentDate());
int compDate = DateUtil.compDate(DateUtil.getCurrentDate(), date);
if (compDate < 0) {
throw new CustomizeRunTimeException("当前链接已失效");

View File

@ -1,5 +1,6 @@
package weaver.formmode.recruit.modeexpand.offer;
import com.engine.recruit.conn.ApplicantCommonInfo;
import com.engine.recruit.constant.RecruitConstant;
import com.engine.recruit.enums.RecordOperateEnum;
import com.engine.recruit.util.RecruitMessageUtils;
@ -67,7 +68,9 @@ public class CreateOfferModeExpand extends AbstractModeExpandJavaCodeNew {
}
if (sendSms) {
String name = Util.null2String(mainDataMap.get("xm"));
name= ApplicantCommonInfo.getApplicantName(name);
String positionName = Util.null2String(mainDataMap.get("zpzwmc"));
positionName=ApplicantCommonInfo.getApplicantPosition(positionName);
String endDate = Util.null2String(mainDataMap.get("sxrq"));
String companyId = Util.null2String(mainDataMap.get("rzgs"));
//if (StringUtils.isAnyBlank(name, positionName, endDate, companyId)) {

View File

@ -47,8 +47,6 @@ public class RecruitFlowToModeAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
int billId = requestInfo.getRequestManager().getBillid();
int formid = requestInfo.getRequestManager().getFormid();
User user = requestInfo.getRequestManager().getUser();
DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo();
@ -58,6 +56,7 @@ public class RecruitFlowToModeAction implements Action {
// 需求审批流程ID
mainMap.put("xqsplc", requestInfo.getRequestid());
int formModeId = ApplicantCommonInfo.getModeIdByTableName(MODE_TABLE_NAME);
int formId = ApplicantCommonInfo.getFormIdByTableName(MODE_TABLE_NAME);
Property[] propertyArray = mainTableInfo.getProperty();
for (Property property : propertyArray) {
@ -75,8 +74,7 @@ public class RecruitFlowToModeAction implements Action {
mainMap.put("modedatacreatertype", "0");
Map<String, String> messageMap = new HashMap<>();
messageMap.put("billId", String.valueOf(billId));
messageMap.put("formId", String.valueOf(formid));
messageMap.put("formId", String.valueOf(formId));
messageMap.put("modeId", String.valueOf(formModeId));
List<Map<String, Object>> insertList = new ArrayList<>();
@ -105,7 +103,8 @@ public class RecruitFlowToModeAction implements Action {
String uuid = UUID.randomUUID().toString();
objects.add(0, uuid);
rst.executeUpdate(sql, objects);
RecruitRecordSet.refreshRight(uuid, MODE_TABLE_NAME, formModeId, requestInfo.getRequestManager().getCreater());
int billid = RecruitRecordSet.refreshRight(uuid, MODE_TABLE_NAME, formModeId, requestInfo.getRequestManager().getCreater());
messageMap.put("billId", String.valueOf(billid));
// 申请人ID
String applicant = Util.null2String(map.get("sqr"));