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; - } -}