package weaver.formmode.recruit.modeexpand.interview; 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; import weaver.soa.workflow.request.MainTableInfo; import weaver.soa.workflow.request.Property; import weaver.soa.workflow.request.RequestInfo; import java.util.*; /** * @author:dxfeng * @createTime: 2023/09/26 * @version: 1.0 */ public class CancelInterviewResultModeExpand extends AbstractModeExpandJavaCodeNew { private static final String MODE_TABLE_NAME = "uf_jcl_ms"; /** * 消息来源ID */ private final String messageType; /** * 消息提醒标题 */ private final String title; public CancelInterviewResultModeExpand() { super(); messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_CANCEL_MESSAGE_TITLE"); } @Override public Map doModeExpand(Map param) { Map result = new HashMap<>(); String cancelInterview = Util.null2String(param.get("cancelInterview")); if (!"true".equals(cancelInterview)) { return result; } try { //数据id int billId; //模块id int modeId; RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); if (requestInfo != null) { billId = Util.getIntValue(requestInfo.getRequestid()); modeId = Util.getIntValue(requestInfo.getWorkflowid()); if (billId > 0 && modeId > 0) { MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); Property[] properties = mainTableInfo.getProperty(); Map mainDataMap = new HashMap<>(); for (Property property : properties) { mainDataMap.put(property.getName(), property.getValue()); } // 更新面试状态为“已取消” RecordSet rs = new RecordSet(); rs.executeUpdate("update " + MODE_TABLE_NAME + " set zt = 4 where id = ?", billId); // 发送消息 StringBuilder msgBuilder = new StringBuilder(); getApplicantsInfo(msgBuilder, Util.null2String(mainDataMap.get("ypz")), Util.null2String(mainDataMap.get("ypzw"))); if (StringUtils.isNotBlank(msgBuilder)) { String formId = Util.null2String(param.get("formId")); msgBuilder.insert(0, RecruitModeUtil.getResourceNames(requestInfo.getCreatorid()) + "取消了面试,请知悉。取消原因:" + getCancelReason(formId, Util.null2String(mainDataMap.get("qxyy"))) + "
"); String msrq = Util.null2String(mainDataMap.get("msrq")); String msg = Util.null2String(mainDataMap.get("msg")); String ptmsg = Util.null2String(mainDataMap.get("ptmsg")); String msdd = Util.null2String(mainDataMap.get("msdd")); msgBuilder.append("面试时间:").append(msrq).append(";面试官:").append(RecruitModeUtil.getResourceNames(msg)).append(",").append(RecruitModeUtil.getResourceNames(ptmsg)).append("
"); msgBuilder.append("面试地址:").append(msdd); // 消息发送 Set userIdSet = new HashSet<>(); userIdSet.addAll(Arrays.asList(msg.split(","))); userIdSet.addAll(Arrays.asList(ptmsg.split(","))); RecruitModeUtil.messagePush(messageType, title, msgBuilder.toString(), userIdSet, Integer.parseInt(requestInfo.getCreatorid())); } } } } catch (Exception e) { result.put("errmsg", "自定义出错信息"); result.put("flag", "false"); } return result; } /** * 获取应聘者信息 * * @param msgBuilder 消息内容 * @param applicantId 应聘者ID * @param positionId 应聘职位ID */ private void getApplicantsInfo(StringBuilder msgBuilder, String applicantId, String positionId) { if (StringUtils.isAnyBlank(applicantId, positionId)) { return; } RecordSet rs = new RecordSet(); rs.executeQuery("select xm from uf_jcl_yppc where id = ?", applicantId); if (rs.next()) { msgBuilder.append("应聘者:").append(rs.getString("xm")); } rs.executeQuery("select zpzwmc from uf_jcl_zp_zpzw where id = ?", positionId); if (rs.next()) { msgBuilder.append(";应聘职位:").append(rs.getString("zpzwmc")); } msgBuilder.append("
"); } /** * 获取取消理由 * * @param formId 表单ID * @param value 下拉框值 * @return */ private String getCancelReason(String formId, String value) { String cancelReason = ""; RecordSet rs = new RecordSet(); rs.executeQuery("select selectname from workflow_selectitem where fieldid =( select id from workflow_billfield where billid = ? and fieldname = 'qxyy' ) and selectvalue =?", formId, value); if (rs.next()) { cancelReason = rs.getString("selectname"); } return cancelReason; } }