diff --git a/src/com/engine/recruit/constant/RecruitConstant.java b/src/com/engine/recruit/constant/RecruitConstant.java
index ab80aff..c2e0391 100644
--- a/src/com/engine/recruit/constant/RecruitConstant.java
+++ b/src/com/engine/recruit/constant/RecruitConstant.java
@@ -25,6 +25,7 @@ public class RecruitConstant {
public static final String INTERVIEW_ADD_MESSAGE_TITLE;
public static final String INTERVIEW_CANCEL_MESSAGE_TITLE;
public static final String INTERVIEW_EVALUATE_MESSAGE_TITLE;
+ public static final String INTERVIEW_ADJUSTMENT_MESSAGE_TITLE;
public static final String JOIN_BLACKLIST_MESSAGE_TITLE;
public static final String SCREENING_MESSAGE_TYPE;
public static final String SCREENING_MESSAGE_TITLE;
@@ -50,6 +51,7 @@ public class RecruitConstant {
INTERVIEW_ADD_MESSAGE_TITLE = getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE");
INTERVIEW_CANCEL_MESSAGE_TITLE = getRecruitPropValue("INTERVIEW_CANCEL_MESSAGE_TITLE");
INTERVIEW_EVALUATE_MESSAGE_TITLE = getRecruitPropValue("INTERVIEW_EVALUATE_MESSAGE_TITLE");
+ INTERVIEW_ADJUSTMENT_MESSAGE_TITLE = getRecruitPropValue("INTERVIEW_ADJUSTMENT_MESSAGE_TITLE");
JOIN_BLACKLIST_MESSAGE_TITLE = getRecruitPropValue("JOIN_BLACKLIST_MESSAGE_TITLE");
SCREENING_MESSAGE_TYPE = getRecruitPropValue("SCREENING_MESSAGE_TYPE");
SCREENING_MESSAGE_TITLE = getRecruitPropValue("SCREENING_MESSAGE_TITLE");
diff --git a/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java
index df722f8..591a62d 100644
--- a/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java
+++ b/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java
@@ -3,10 +3,7 @@ package weaver.formmode.recruit.modeexpand.interview;
import com.engine.recruit.conn.ApplicantCommonInfo;
import com.engine.recruit.constant.RecruitConstant;
import com.engine.recruit.enums.InterviewOperateTypeEnum;
-import com.engine.recruit.util.RecruitMessageUtils;
-import com.weaver.formmodel.data.model.Formfield;
import org.apache.commons.lang3.StringUtils;
-import weaver.conn.RecordSet;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import weaver.general.Util;
@@ -16,7 +13,6 @@ import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.*;
-import java.util.stream.Collectors;
/**
*
聚才林招聘
@@ -59,8 +55,6 @@ public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
mainDataMap.put(property.getName(), property.getValue());
}
- // 需要应聘者反馈
- boolean needFeedback = "1".equals(Util.null2String(mainDataMap.get("sfxyfk")));
String operateType = Util.null2String(params.get("operateType"));
if (StringUtils.isBlank(operateType)) {
@@ -72,41 +66,10 @@ public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
title = RecruitConstant.INTERVIEW_ADD_MESSAGE_TITLE;
// 消息提醒
arrangeInterview(user, mainDataMap);
-
- String tzypz = Util.null2String(mainDataMap.get("tzypz"));
- String yjnr = Util.null2String(mainDataMap.get("yjnr"));
- String yjtzmb = Util.null2String(mainDataMap.get("yjtzmb"));
- List sendTypeList = Arrays.asList(tzypz.split(","));
- boolean sendEmail = sendTypeList.contains("0");
- boolean sendSms = sendTypeList.contains("1");
- String emailTitle = RecruitModeUtil.getEmailTitle(yjtzmb);
-
- List fieldList = RecruitModeUtil.getFieldList("uf_jcl_ms");
- Map> fieldMapList = fieldList.stream().collect(Collectors.groupingBy(Formfield::getLabelName));
- // 发送邮件
- String msgContent = RecruitModeUtil.getReplaceContent(yjnr, fieldMapList, mainDataMap);
- String yx = Util.null2String(mainDataMap.get("dzyx"));
- String sjh = Util.null2String(mainDataMap.get("sjhm"));
- if (sendEmail) {
- if (needFeedback) {
- RecordSet rs = new RecordSet();
- rs.executeQuery("select modeuuid from uf_jcl_ms where id = ? ", billId);
- String uuid = "";
- if (rs.next()) {
- uuid = rs.getString("modeuuid");
- }
- String confirmUrl = RecruitConstant.INTERVIEW_FEEDBACK_URL + "?uuid=" + uuid;
- String emailContent = "";
- // 邮件内容拼接确认信息
- emailContent = msgContent + emailContent;
- RecruitMessageUtils.sendEmail(yx, emailTitle, emailContent);
- } else {
- RecruitMessageUtils.sendEmail(yx, emailTitle, msgContent);
- }
- }
- if (sendSms) {
- RecruitMessageUtils.sendSMS(sjh, msgContent);
- }
+ // 需要应聘者反馈
+ boolean needFeedback = "1".equals(Util.null2String(mainDataMap.get("sfxyfk")));
+ // 发送邮件、短信
+ InterviewMsgUtil.sendEmailAndMsg(mainDataMap, billId, needFeedback);
}
}
diff --git a/src/weaver/formmode/recruit/modeexpand/interview/InterviewMsgUtil.java b/src/weaver/formmode/recruit/modeexpand/interview/InterviewMsgUtil.java
new file mode 100644
index 0000000..e84a9b6
--- /dev/null
+++ b/src/weaver/formmode/recruit/modeexpand/interview/InterviewMsgUtil.java
@@ -0,0 +1,66 @@
+package weaver.formmode.recruit.modeexpand.interview;
+
+import com.engine.recruit.constant.RecruitConstant;
+import com.engine.recruit.util.RecruitMessageUtils;
+import com.weaver.formmodel.data.model.Formfield;
+import weaver.conn.RecordSet;
+import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
+import weaver.general.Util;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author:dxfeng
+ * @createTime: 2024/03/04
+ * @version: 1.0
+ */
+public class InterviewMsgUtil {
+
+ /**
+ * 面试相关,发送邮件、短信
+ *
+ * @param mainDataMap
+ * @param billId
+ * @param needFeedback
+ */
+ public static void sendEmailAndMsg(Map mainDataMap, int billId, boolean needFeedback) {
+ String tzypz = Util.null2String(mainDataMap.get("tzypz"));
+ String yjnr = Util.null2String(mainDataMap.get("yjnr"));
+ String yjtzmb = Util.null2String(mainDataMap.get("yjtzmb"));
+ List sendTypeList = Arrays.asList(tzypz.split(","));
+ boolean sendEmail = sendTypeList.contains("0");
+ boolean sendSms = sendTypeList.contains("1");
+ String emailTitle = RecruitModeUtil.getEmailTitle(yjtzmb);
+
+ List fieldList = RecruitModeUtil.getFieldList("uf_jcl_ms");
+ Map> fieldMapList = fieldList.stream().collect(Collectors.groupingBy(Formfield::getLabelName));
+ // 发送邮件
+ String msgContent = RecruitModeUtil.getReplaceContent(yjnr, fieldMapList, mainDataMap);
+ String yx = Util.null2String(mainDataMap.get("dzyx"));
+ String sjh = Util.null2String(mainDataMap.get("sjhm"));
+ if (sendEmail) {
+ if (needFeedback) {
+ RecordSet rs = new RecordSet();
+ rs.executeQuery("select modeuuid from uf_jcl_ms where id = ? ", billId);
+ String uuid = "";
+ if (rs.next()) {
+ uuid = rs.getString("modeuuid");
+ }
+ String confirmUrl = RecruitConstant.INTERVIEW_FEEDBACK_URL + "?uuid=" + uuid;
+ String emailContent = "";
+ // 邮件内容拼接确认信息
+ emailContent = msgContent + emailContent;
+ RecruitMessageUtils.sendEmail(yx, emailTitle, emailContent);
+ } else {
+ RecruitMessageUtils.sendEmail(yx, emailTitle, msgContent);
+ }
+ }
+ if (sendSms) {
+ // TODO 参加反馈
+ RecruitMessageUtils.sendSMS(sjh, msgContent);
+ }
+ }
+}
diff --git a/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java
index 82796fd..fecdc95 100644
--- a/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java
+++ b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java
@@ -3,6 +3,7 @@ package weaver.formmode.recruit.modeexpand.interview;
import com.engine.recruit.conn.ApplicantCommonInfo;
import com.engine.recruit.constant.RecruitConstant;
import com.engine.recruit.enums.InterviewOperateTypeEnum;
+import com.weaver.formmodel.data.model.Formfield;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
@@ -14,6 +15,7 @@ import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.*;
+import java.util.stream.Collectors;
/**
* @author:dxfeng
@@ -73,6 +75,18 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
messageType = RecruitConstant.INTERVIEW_MESSAGE_TYPE;
title = RecruitConstant.INTERVIEW_CANCEL_MESSAGE_TITLE;
cancelInterView(params, requestInfo, billId, mainDataMap);
+ // 发送邮件
+ InterviewMsgUtil.sendEmailAndMsg(mainDataMap, billId, false);
+ break;
+ case ADJUSTMENT:
+ messageType = RecruitConstant.INTERVIEW_MESSAGE_TYPE;
+ title = RecruitConstant.INTERVIEW_ADJUSTMENT_MESSAGE_TITLE;
+ // 发送消息提醒
+ adjustmentInterView(requestInfo.getCreatorid(), mainDataMap);
+ boolean needFeedback = "1".equals(Util.null2String(mainDataMap.get("sfxyfk")));
+ // 发送邮件、同安排面试
+ InterviewMsgUtil.sendEmailAndMsg(mainDataMap, billId, needFeedback);
+ // 更新反馈状态为未反馈
break;
default:
break;
@@ -161,5 +175,31 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
}
+ /**
+ * 调整面试拓展动作
+ *
+ * @param creator creator
+ * @param mainDataMap mainDataMap
+ */
+ private void adjustmentInterView(String creator, Map mainDataMap) {
+ // 发送消息
+ String msg = Util.null2String(mainDataMap.get("msg"));
+ String ptmsg = Util.null2String(mainDataMap.get("ptmsg"));
+
+ String msgContent = "您有一条面试已调整,调整后的面试信息如下:
" +
+ "应聘者:$ypz$;应聘职位:$ypzw$
" +
+ "面试官:$msg$;陪同面试官:$ptmsg$
" +
+ "面试时间:$msrq$;面试方式:$msfs$
" +
+ "面试地址:$msdd$";
+
+ // 消息发送
+ Set userIdSet = new HashSet<>();
+ userIdSet.addAll(Arrays.asList(msg.split(",")));
+ userIdSet.addAll(Arrays.asList(ptmsg.split(",")));
+ List fieldList = RecruitModeUtil.getFieldList(MODE_TABLE_NAME);
+ Map fieldMap = fieldList.stream().collect(Collectors.toMap(Formfield::getFieldname, item -> item, (k1, k2) -> k1));
+ String msgStr = RecruitModeUtil.getMsgReplaceStr(msgContent, fieldMap, mainDataMap);
+ RecruitModeUtil.messagePush(messageType, title, msgStr, userIdSet, Integer.parseInt(creator));
+ }
}
diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java
index 58d9de6..5e1bec7 100644
--- a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java
+++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java
@@ -34,7 +34,14 @@ import java.util.regex.Pattern;
* @version: 1.0
*/
public class RecruitModeUtil {
- private static final Pattern MSG_PATTERN = Pattern.compile(Pattern.quote("{") + "(.*?)" + Pattern.quote("}"));
+ /**
+ * 邮件、短信发送,替换内容正则表达式
+ */
+ private static final Pattern EMAIL_PATTERN = Pattern.compile(Pattern.quote("{") + "(.*?)" + Pattern.quote("}"));
+ /**
+ * 消息中心,替换内容正则表达式
+ */
+ private static final Pattern MSG_PATTERN = Pattern.compile(Pattern.quote("$") + "(.*?)" + Pattern.quote("$"));
/**
@@ -140,7 +147,7 @@ public class RecruitModeUtil {
}
public static String getReplaceContent(String content, Map> fieldMapList, Map paramsData) {
- Matcher matcher = MSG_PATTERN.matcher(content);
+ Matcher matcher = EMAIL_PATTERN.matcher(content);
// 指定要匹配的字符串
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
@@ -160,6 +167,30 @@ public class RecruitModeUtil {
return sb.toString();
}
+ /**
+ * 消息中心,替换消息内容
+ *
+ * @param content
+ * @param fieldMap
+ * @param paramsData
+ * @return
+ */
+ public static String getMsgReplaceStr(String content, Map fieldMap, Map paramsData) {
+ Matcher matcher = MSG_PATTERN.matcher(content);
+ // 指定要匹配的字符串
+ StringBuffer sb = new StringBuffer();
+ while (matcher.find()) {
+ String replace = matcher.group(1);
+
+ Formfield formfield = fieldMap.get(replace);
+ String replaceValue = Util.null2String(paramsData.get(formfield.getFieldname().toLowerCase()));
+ String fieldShowName = RecruitModeUtil.getFieldShowName(formfield, replaceValue).replaceAll("<[^>]*>", "");
+ matcher.appendReplacement(sb, Util.null2String(fieldShowName));
+ }
+ matcher.appendTail(sb);
+ return sb.toString();
+ }
+
/**
* 附件imageFieldId生成docId
*
diff --git a/src/weaver/interfaces/gsjrkg/action/SyncCertificateAction.java b/src/weaver/interfaces/gsjrkg/action/SyncCertificateAction.java
deleted file mode 100644
index 3eed22c..0000000
--- a/src/weaver/interfaces/gsjrkg/action/SyncCertificateAction.java
+++ /dev/null
@@ -1,144 +0,0 @@
-package weaver.interfaces.gsjrkg.action;
-
-import com.alibaba.fastjson.JSON;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import weaver.conn.RecordSet;
-import weaver.general.BaseBean;
-import weaver.general.Util;
-import weaver.interfaces.workflow.action.Action;
-import weaver.soa.workflow.request.MainTableInfo;
-import weaver.soa.workflow.request.Property;
-import weaver.soa.workflow.request.RequestInfo;
-
-import java.util.*;
-
-/**
- * @Description: 同步证书到人员卡片个人信息
- * @author:dxfeng
- * @createTime: 2023/02/20
- * @version: 1.0
- */
-public class SyncCertificateAction implements Action {
- /**
- * 建模表表名
- */
- private String modeTableName;
-
- /**
- * 参数名称:建模表字段名:人员表字段名
- */
- private String params;
-
- private String resourceFieldGroup;
-
- @Override
- public String execute(RequestInfo requestInfo) {
- BaseBean baseBean = new BaseBean();
- if (StringUtils.isBlank(params)) {
- requestInfo.getRequestManager().setMessagecontent("自定义接口参数值配置错误");
- return Action.FAILURE_AND_CONTINUE;
- }
- if (StringUtils.isBlank(resourceFieldGroup)) {
- // -1:基本信息,1:个人信息,3:工作信息
- resourceFieldGroup = "1";
- }
- Map fieldMap = new HashMap<>();
- String[] fieldsArray = params.split(";");
- for (String fields : fieldsArray) {
- String[] field = fields.split(":");
- if (field.length == 2) {
- fieldMap.put(field[0], field[1]);
- }
- }
- if (fieldMap.size() != fieldsArray.length) {
- requestInfo.getRequestManager().setMessagecontent("自定义接口参数值格式错误,请检查");
- return Action.FAILURE_AND_CONTINUE;
- }
- baseBean.writeLog("fieldMap==" + JSON.toJSONString(fieldMap));
- Set modeFields = fieldMap.keySet();
- Map> modeMap = new HashMap<>();
-
- RecordSet rs = new RecordSet();
- String resourceId = "";
- MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
- Property[] property = mainTableInfo.getProperty();
- for (Property item : property) {
- String name = item.getName();
- String value = Util.null2String(item.getValue());
- if (StringUtils.isNotBlank(name) && StringUtils.isNotBlank(value)) {
- if ("xm".equals(name)) {
- resourceId = value;
- }
- }
- }
- // 查询当前人员的所有数据
- StringBuilder sqlBuilder = new StringBuilder("select ").append(StringUtils.join(modeFields, ",")).append(" from ").append(modeTableName).append(" where xm = ").append(resourceId).append(" order by id");
- baseBean.writeLog("selectSql===" + sqlBuilder);
- rs.executeQuery(sqlBuilder.toString());
- while (rs.next()) {
- appendIds(modeFields, rs, modeMap);
- }
- baseBean.writeLog("modeMap===" + JSON.toJSONString(modeMap));
- // 判断有无数据,没有的话插入数据
- sqlBuilder = new StringBuilder("SELECT id FROM CUS_FIELDDATA where scope ='HrmCustomFieldByInfoType' and scopeid = '").append(resourceFieldGroup).append("' and id =? ");
- rs.executeQuery(sqlBuilder.toString(), resourceId);
- if (!rs.next()) {
- // 插入人员信息数据
- rs.executeUpdate("insert into cus_fielddata (scope,scopeid,id) values ('HrmCustomFieldByInfoType','" + resourceFieldGroup + "',?)", resourceId);
- }
- // 组装更新SQL语句
- sqlBuilder = new StringBuilder("update cus_fielddata set ");
- for (Map.Entry entry : fieldMap.entrySet()) {
- Set valueSet = modeMap.get(entry.getKey());
- String values = CollectionUtils.isEmpty(valueSet) ? "" : StringUtils.join(valueSet, ",");
- sqlBuilder.append(" ").append(entry.getValue()).append(" = '").append(values).append("',");
- }
- sqlBuilder.deleteCharAt(sqlBuilder.length() - 1);
- sqlBuilder.append(" where scope ='HrmCustomFieldByInfoType' and scopeid = ").append(resourceFieldGroup).append(" and id = ").append(resourceId);
- baseBean.writeLog("updateSql===" + sqlBuilder);
- rs.executeUpdate(sqlBuilder.toString());
-
- return Action.SUCCESS;
- }
-
-
- private void appendIds(Set modeFields, RecordSet rs, Map> modeMap) {
- BaseBean baseBean = new BaseBean();
- for (String modeField : modeFields) {
- String ids = rs.getString(modeField);
- baseBean.writeLog("modeField==【" + modeField + "】,getString==【" + ids + "】");
- if (StringUtils.isBlank(ids)) {
- continue;
- }
- if (CollectionUtils.isEmpty(modeMap.get(modeField))) {
- modeMap.put(modeField, new HashSet<>());
- }
- modeMap.get(modeField).addAll(Arrays.asList(ids.split(",")));
- }
- }
-
- public String getParams() {
- return params;
- }
-
- public void setParams(String params) {
- this.params = params;
- }
-
- public String getModeTableName() {
- return modeTableName;
- }
-
- public void setModeTableName(String modeTableName) {
- this.modeTableName = modeTableName;
- }
-
- public String getResourceFieldGroup() {
- return resourceFieldGroup;
- }
-
- public void setResourceFieldGroup(String resourceFieldGroup) {
- this.resourceFieldGroup = resourceFieldGroup;
- }
-}