diff --git a/src/com/engine/mzg/service/RecruitMobileService.java b/src/com/engine/mzg/service/RecruitMobileService.java index 2eb2a6e..3d2153f 100644 --- a/src/com/engine/mzg/service/RecruitMobileService.java +++ b/src/com/engine/mzg/service/RecruitMobileService.java @@ -24,4 +24,6 @@ public interface RecruitMobileService { * @return */ Map submitRegist(Map params); + + Map updateOfferStatus(Map params); } diff --git a/src/com/engine/mzg/service/impl/RecruitMobileServiceImpl.java b/src/com/engine/mzg/service/impl/RecruitMobileServiceImpl.java index 07efed2..bba38c5 100644 --- a/src/com/engine/mzg/service/impl/RecruitMobileServiceImpl.java +++ b/src/com/engine/mzg/service/impl/RecruitMobileServiceImpl.java @@ -14,10 +14,7 @@ import weaver.formmode.IgnoreCaseHashMap; import weaver.formmode.mzg.modeexpand.disc.AddDiscExpand; import weaver.general.Util; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; import java.util.regex.Matcher; /** @@ -100,9 +97,9 @@ public class RecruitMobileServiceImpl extends Service implements RecruitMobileSe } } // 根据职位,设置部门的值 - rs.executeQuery("select sqbm from uf_recruit_zpxqglb where id = ?",buildDataMap.get("sqzw")); - if(rs.next()){ - buildDataMap.put("bm",rs.getString("sqbm")); + rs.executeQuery("select sqbm from uf_recruit_zpxqglb where id = ?", buildDataMap.get("sqzw")); + if (rs.next()) { + buildDataMap.put("bm", rs.getString("sqbm")); } if (isAdd) { @@ -112,12 +109,12 @@ public class RecruitMobileServiceImpl extends Service implements RecruitMobileSe int formModeId = RecruitCommon.getModeIdByTableName(targetTable); buildDataMap.put("formmodeid", formModeId); // 构建建模表基本数据 - buildDataMap.put("ypdjid",billId); - buildDataMap.put("mslx","0"); - buildDataMap.put("mszt","0"); + buildDataMap.put("ypdjid", billId); + buildDataMap.put("mslx", "0"); + buildDataMap.put("mszt", "0"); RecruitRecordSet.buildModeInsertFields(buildDataMap, 1); RecruitRecordSet.insertData(buildDataMap, targetTable); - msId = String.valueOf(RecruitRecordSet.refreshRight(uuid, targetTable, formModeId,1)); + msId = String.valueOf(RecruitRecordSet.refreshRight(uuid, targetTable, formModeId, 1)); } else { // 更新 buildDataMap.put("id", msId); @@ -157,6 +154,50 @@ public class RecruitMobileServiceImpl extends Service implements RecruitMobileSe return null; } + @Override + public Map updateOfferStatus(Map params) { + Map returnMap = new HashMap<>(3); + String status = Util.null2String(params.get("status")); + String uuid = Util.null2String(params.get("uuid")); + returnMap.put("type", "error"); + returnMap.put("message", "反馈失败"); + + if (StringUtils.isBlank(status) || StringUtils.isBlank(uuid)) { + returnMap.put("description", "反馈失败,请直接点击邮件中的链接地址访问,请勿修改链接内容。"); + return returnMap; + } + + RecordSet rs = new RecordSet(); + rs.executeQuery("select fkjg from uf_recruit_lytzs where modeuuid = ? ", uuid); + String fkjg = ""; + if (rs.next()) { + fkjg = rs.getString("fkjg"); + } else { + returnMap.put("description", "反馈失败,offer信息有误,请联系相应HR确认"); + return returnMap; + } + + + if (StringUtils.isNotBlank(fkjg) && !"0".equals(fkjg)) { + returnMap.put("description", "您已成功反馈,请勿重复反馈。"); + return returnMap; + } + if ("1".equals(status)) { + returnMap.put("type", "success"); + returnMap.put("message", "已接受offer"); + returnMap.put("description", "您已接受offer,期待您的加入,请按期准备报道,如有问题可以联系相应HR"); + rs.executeUpdate("update uf_recruit_lytzs set fkjg = ? where modeuuid = ? ", status, uuid); + + } else if ("2".equals(status)) { + returnMap.put("type", "info"); + returnMap.put("message", "已拒绝offer"); + returnMap.put("description", "您已拒绝offer,感谢您的应聘。希望您能够找到真正适合自己的工作。"); + rs.executeUpdate("update uf_recruit_lytzs set fkjg = ? where modeuuid = ? ", status, uuid); + } + + return returnMap; + } + /** * 获取配置的需要同步的字段集合 * diff --git a/src/com/engine/mzg/util/RecruitUtil.java b/src/com/engine/mzg/util/RecruitUtil.java index 0300a69..fbf7693 100644 --- a/src/com/engine/mzg/util/RecruitUtil.java +++ b/src/com/engine/mzg/util/RecruitUtil.java @@ -61,7 +61,11 @@ public class RecruitUtil { public static boolean sendEmailWithFile(String sendTo, String emailTitle, String emailContent, String imageFileIds) { EmailWorkRunnable emailWorkRunnable = new EmailWorkRunnable(sendTo, Util.toHtmlMode(emailTitle), Util.toHtmlMode(emailContent)); emailWorkRunnable.setImagefileids(imageFileIds); - return emailWorkRunnable.emailCommonRemind(); + boolean isSend = emailWorkRunnable.emailCommonRemind(); + if (isSend) { + return true; + } + throw new CustomizeRunTimeException("邮件发送失败,请查看群发日志"); } /** diff --git a/src/com/engine/mzg/web/RecruitMobileController.java b/src/com/engine/mzg/web/RecruitMobileController.java index 11e68b1..ea91182 100644 --- a/src/com/engine/mzg/web/RecruitMobileController.java +++ b/src/com/engine/mzg/web/RecruitMobileController.java @@ -46,4 +46,14 @@ public class RecruitMobileController { return new ResponseResult, Map>(user).run(getService(user)::submitRegist, params); } + + @GET + @Path("/updateOfferStatus") + @Produces(MediaType.APPLICATION_JSON) + public String updateOfferStatus(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getService(user)::updateOfferStatus, params); + + } } diff --git a/src/weaver/formmode/mzg/modeexpand/offer/SendOfferExpand.java b/src/weaver/formmode/mzg/modeexpand/offer/SendOfferExpand.java new file mode 100644 index 0000000..b3472a2 --- /dev/null +++ b/src/weaver/formmode/mzg/modeexpand/offer/SendOfferExpand.java @@ -0,0 +1,93 @@ +package weaver.formmode.mzg.modeexpand.offer; + +import com.engine.mzg.conn.RecruitCommon; +import com.engine.mzg.enums.EmailTemplateEnum; +import com.engine.mzg.exception.CustomizeRunTimeException; +import com.engine.mzg.util.RecruitUtil; +import com.weaver.formmodel.data.model.Formfield; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.formmode.IgnoreCaseHashMap; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +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.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author:dxfeng + * @createTime: 2024/09/20 + * @version: 1.0 + */ +public class SendOfferExpand extends AbstractModeExpandJavaCodeNew { + @Override + public Map doModeExpand(Map param) { + RecordSet rs = new RecordSet(); + Map result = new HashMap<>(); + try { + int billId; + RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); + if (requestInfo != null) { + billId = Util.getIntValue(requestInfo.getRequestid()); + IgnoreCaseHashMap mainDataMap = new IgnoreCaseHashMap<>(); + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + String xm = Util.null2String(mainDataMap.get("xm")); + rs.executeQuery("select dzyx from uf_recruit_ms where id = ?", xm); + String sendTo = ""; + if (rs.next()) { + sendTo = rs.getString("dzyx"); + } + + if (StringUtils.isBlank(sendTo)) { + throw new CustomizeRunTimeException("电子邮箱为空,邮件发送失败"); + } + String emailTitle = ""; + String emailContent = ""; + rs.executeQuery("select yjzt ,yjnr from uf_recruit_email where mblx =? ", EmailTemplateEnum.OFFER.getValue()); + if (rs.next()) { + emailTitle = rs.getString("yjzt"); + emailContent = rs.getString("yjnr"); + } + + if (StringUtils.isBlank(emailTitle) || StringUtils.isBlank(emailContent)) { + throw new CustomizeRunTimeException("请检查邮件模板设置"); + } + rs.executeQuery("select modeuuid from uf_recruit_lytzs where id = ? ", billId); + String uuid = ""; + if (rs.next()) { + uuid = rs.getString("modeuuid"); + } + + String confirmUrl = RecruitCommon.getSettingValue("OFFER_FEEDBACK_URL") + "?uuid=" + uuid; + + + // 发送邮件 + List fieldList = RecruitUtil.getFieldList("uf_recruit_lytzs"); + Map> fieldMapList = fieldList.stream().collect(Collectors.groupingBy(Formfield::getFieldname)); + emailContent = RecruitUtil.getReplaceContent(emailContent, fieldMapList, mainDataMap); + // 拼接反馈信息 + emailContent += "
请您答复是否接受此Offer? 接受 拒绝
"; + + // offer附件 + String offerAttach = RecruitUtil.getImageFileIdsByDocIds(Util.null2String(mainDataMap.get("fj"))); + RecruitUtil.sendEmailWithFile(sendTo, emailTitle, emailContent, offerAttach); + + rs.executeUpdate("update uf_recruit_lytzs set fkjg = 0 where id = ?", billId); + } + } catch (Exception e) { + rs.writeLog(e); + result.put("errmsg", e.getMessage()); + result.put("flag", "false"); + } + return result; + } +}