From e19a2add598a285cca6886ef149ee76191f79ccb Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 13 Sep 2024 17:44:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=A2=E8=AF=95=E6=B5=81=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=E3=80=81=E6=97=A5=E7=A8=8B?= =?UTF-8?q?=E3=80=81=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/mzg/conn/RecruitCommon.java | 24 +++ .../mzg/entity/WorkPlanCreateParams.java | 32 ++++ .../engine/mzg/enums/EmailTemplateEnum.java | 6 +- .../AdjustmentInterviewFlowExpand.java | 17 +++ .../interview/CancelInterviewFlowExpand.java | 17 +++ .../interview/SubmitInterviewAction.java | 144 ++++++++++++++++++ 6 files changed, 238 insertions(+), 2 deletions(-) create mode 100644 src/com/engine/mzg/entity/WorkPlanCreateParams.java create mode 100644 src/weaver/formmode/mzg/modeexpand/interview/AdjustmentInterviewFlowExpand.java create mode 100644 src/weaver/formmode/mzg/modeexpand/interview/CancelInterviewFlowExpand.java create mode 100644 src/weaver/interfaces/mzg/action/interview/SubmitInterviewAction.java diff --git a/src/com/engine/mzg/conn/RecruitCommon.java b/src/com/engine/mzg/conn/RecruitCommon.java index 74f1cc8..56b57f8 100644 --- a/src/com/engine/mzg/conn/RecruitCommon.java +++ b/src/com/engine/mzg/conn/RecruitCommon.java @@ -1,7 +1,12 @@ package com.engine.mzg.conn; +import com.engine.mzg.util.RecruitUtil; +import com.weaver.formmodel.data.model.Formfield; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import java.util.Map; + /** * @author:dxfeng * @createTime: 2024/09/05 @@ -25,6 +30,25 @@ public class RecruitCommon { return ""; } + /** + * 获取配置 + * + * @param key + * @return + */ + public static String getSettingValue(String key, Map fieldMap, Map paramsData) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select pzz from uf_recruit_setting where pzx = ? ", key); + String content= ""; + if (rs.next()) { + content = rs.getString("pzz"); + } + if(StringUtils.isNotBlank(content)){ + content = RecruitUtil.getMsgReplaceStr(content, fieldMap, paramsData); + } + return content; + } + /** * 根据表名,获取表单ID * diff --git a/src/com/engine/mzg/entity/WorkPlanCreateParams.java b/src/com/engine/mzg/entity/WorkPlanCreateParams.java new file mode 100644 index 0000000..94f0ac4 --- /dev/null +++ b/src/com/engine/mzg/entity/WorkPlanCreateParams.java @@ -0,0 +1,32 @@ +package com.engine.mzg.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class WorkPlanCreateParams { + + private String operateType; + + private String billId; + + private String workPlanType; + + private String planName; + + private String memberIds; + + private String urgentLevel; + + private String beginDateTime; + + private String endDateTime; + + private String workId; + +} \ No newline at end of file diff --git a/src/com/engine/mzg/enums/EmailTemplateEnum.java b/src/com/engine/mzg/enums/EmailTemplateEnum.java index 1c7dfcc..fe2d214 100644 --- a/src/com/engine/mzg/enums/EmailTemplateEnum.java +++ b/src/com/engine/mzg/enums/EmailTemplateEnum.java @@ -19,11 +19,13 @@ public enum EmailTemplateEnum { /** * 面试 */ - INTERVIEW(2, "面试"), + INTERVIEW_FIRST(2, "第一轮面试"), + INTERVIEW_SECOND(3, "第二轮面试"), + INTERVIEW_THIRD(4, "第三轮面试"), /** * offer */ - OFFER(3, "offer"); + OFFER(5, "offer"); EmailTemplateEnum(Integer value, String desc) { this.value = value; diff --git a/src/weaver/formmode/mzg/modeexpand/interview/AdjustmentInterviewFlowExpand.java b/src/weaver/formmode/mzg/modeexpand/interview/AdjustmentInterviewFlowExpand.java new file mode 100644 index 0000000..96ab9cb --- /dev/null +++ b/src/weaver/formmode/mzg/modeexpand/interview/AdjustmentInterviewFlowExpand.java @@ -0,0 +1,17 @@ +package weaver.formmode.mzg.modeexpand.interview; + +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2024/09/10 + * @version: 1.0 + */ +public class AdjustmentInterviewFlowExpand extends AbstractModeExpandJavaCodeNew { + @Override + public Map doModeExpand(Map map) { + return null; + } +} diff --git a/src/weaver/formmode/mzg/modeexpand/interview/CancelInterviewFlowExpand.java b/src/weaver/formmode/mzg/modeexpand/interview/CancelInterviewFlowExpand.java new file mode 100644 index 0000000..020024d --- /dev/null +++ b/src/weaver/formmode/mzg/modeexpand/interview/CancelInterviewFlowExpand.java @@ -0,0 +1,17 @@ +package weaver.formmode.mzg.modeexpand.interview; + +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2024/09/10 + * @version: 1.0 + */ +public class CancelInterviewFlowExpand extends AbstractModeExpandJavaCodeNew { + @Override + public Map doModeExpand(Map map) { + return null; + } +} diff --git a/src/weaver/interfaces/mzg/action/interview/SubmitInterviewAction.java b/src/weaver/interfaces/mzg/action/interview/SubmitInterviewAction.java new file mode 100644 index 0000000..23a7a1f --- /dev/null +++ b/src/weaver/interfaces/mzg/action/interview/SubmitInterviewAction.java @@ -0,0 +1,144 @@ +package weaver.interfaces.mzg.action.interview; + +import com.engine.common.util.ServiceUtil; +import com.engine.mzg.conn.RecruitCommon; +import com.engine.mzg.enums.EmailTemplateEnum; +import com.engine.mzg.util.RecruitUtil; +import com.engine.workplan.service.impl.WorkPlanBaseServiceImpl; +import com.weaver.formmodel.data.manager.FormInfoManager; +import com.weaver.formmodel.data.model.Formfield; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.formmode.IgnoreCaseHashMap; +import weaver.general.Util; +import weaver.hrm.User; +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.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @author:dxfeng + * @createTime: 2024/09/11 + * @version: 1.0 + */ +public class SubmitInterviewAction implements Action { + private String interviewStep; + + @Override + public String execute(RequestInfo requestInfo) { + RecordSet rs = new RecordSet(); + try { + if (StringUtils.isBlank(interviewStep)) { + requestInfo.getRequestManager().setMessagecontent("面试流程配置异常,请检查"); + return FAILURE_AND_CONTINUE; + } + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + int billId = requestInfo.getRequestManager().getBillid(); + String billTableName = requestInfo.getRequestManager().getBillTableName(); + int formId = requestInfo.getRequestManager().getFormid(); + User user = requestInfo.getRequestManager().getUser(); + + IgnoreCaseHashMap mainDataMap = new IgnoreCaseHashMap<>(); + Property[] propertyArray = mainTableInfo.getProperty(); + for (Property property : propertyArray) { + mainDataMap.put(property.getName(), property.getValue()); + } + + + + + // 根据轮次 + String msgKey; + String msgField; + String msrqField; + Integer emailTemplate; + if ("0".equals(interviewStep)) { + msgKey = "MSG_INTERVIEEW_FIRST"; + msgField = "dylmsg"; + msrqField = "dylmsrq"; + emailTemplate = EmailTemplateEnum.INTERVIEW_FIRST.getValue(); + } else if ("1".equals(interviewStep)) { + msgKey = "MSG_INTERVIEW_SECOND"; + msgField = "delmsg"; + msrqField = "delmsrq"; + emailTemplate = EmailTemplateEnum.INTERVIEW_SECOND.getValue(); + } else if ("2".equals(interviewStep)) { + msgKey = "MSG_INTERVIEW_THIRD"; + msgField = "dslmsg"; + msrqField = "dslmsrq"; + emailTemplate = EmailTemplateEnum.INTERVIEW_THIRD.getValue(); + } else { + return SUCCESS; + } + + List fieldList = FormInfoManager.getInstance().getAllField(formId); + Map fieldMap = fieldList.stream().collect(Collectors.toMap(Formfield::getFieldname, item -> item, (k1, k2) -> k1)); + + + Set userIdSet = new HashSet<>(); + userIdSet.add(Util.null2String(mainDataMap.get(msgField))); + String interviewDate = Util.null2String(mainDataMap.get(msrqField)); + String msgContent = RecruitCommon.getSettingValue(msgKey,fieldMap, mainDataMap); + String msgCenterId = RecruitCommon.getSettingValue("MSG_CENTER_ID"); + String planTitleInterview = RecruitCommon.getSettingValue("PLAN_TITLE_INTERVIEW",fieldMap, mainDataMap); + String msgTitleInterview = RecruitCommon.getSettingValue("MSG_TITLE_INTERVIEW",fieldMap, mainDataMap); + + + // 消息不为空,发送消息 + RecruitUtil.messagePush(msgCenterId, msgTitleInterview, msgContent, userIdSet, user.getUID()); + + + // 创建日程 + Map maps = new HashMap<>(16); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + LocalDateTime dateTime = LocalDateTime.parse(interviewDate, formatter); + LocalDateTime newDateTime = dateTime.plusHours(1); + maps.put("workPlanType", "0"); + maps.put("planName", planTitleInterview); + maps.put("memberIDs", StringUtils.join(userIdSet, ",")); + maps.put("urgentLevel", "1"); + maps.put("beginDateTime", interviewDate); + maps.put("endDateTime", newDateTime.format(formatter)); + maps.put("isEnableSecondAuth", "0"); + + Map result = ServiceUtil.getService(WorkPlanBaseServiceImpl.class, user).addWorkPlan(maps); + Integer workplanId = (Integer) result.get("workplanid"); + rs.executeUpdate("update " + billTableName + " set msrc = ? where id = ?", workplanId, billId); + + + // 发送邮件 + + Map> fieldMapList = fieldList.stream().collect(Collectors.groupingBy(Formfield::getFieldname)); + String emailTitle = ""; + String emailContent = ""; + rs.executeQuery("select yjzt ,yjnr from uf_recruit_email where mblx =? ", emailTemplate); + if (rs.next()) { + emailTitle = rs.getString("yjzt"); + emailContent = rs.getString("yjnr"); + } + emailContent = RecruitUtil.getReplaceContent(emailContent, fieldMapList, mainDataMap); + RecruitUtil.sendEmail(Util.null2String(mainDataMap.get("dzyx")), emailTitle, emailContent); + + return SUCCESS; + } catch (Exception e) { + rs.writeLog("InterviewAction error: ", e); + requestInfo.getRequestManager().setMessagecontent(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + } + + + public String getInterviewStep() { + return interviewStep; + } + + public void setInterviewStep(String interviewStep) { + this.interviewStep = interviewStep; + } +}