From 540dbf34218f9c3983af8e8762d22d243ed3a43b Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 18 Sep 2023 10:36:38 +0800 Subject: [PATCH 01/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=BD=AC=E5=BB=BA=E6=A8=A1-=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/RecruitFlowToModeAction.java | 173 +++++++++++++++++- 1 file changed, 169 insertions(+), 4 deletions(-) diff --git a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java index bd36531..800ce29 100644 --- a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java +++ b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java @@ -1,5 +1,8 @@ package weaver.interfaces.recruit.action; +import com.cloudstore.dev.api.bean.MessageBean; +import com.cloudstore.dev.api.bean.MessageType; +import com.cloudstore.dev.api.util.Util_Message; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; @@ -8,9 +11,11 @@ import weaver.conn.RecordSetTrans; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.hrm.resource.ResourceComInfo; import weaver.interfaces.workflow.action.Action; import weaver.soa.workflow.request.*; +import java.io.IOException; import java.util.*; /** @@ -22,6 +27,14 @@ import java.util.*; */ public class RecruitFlowToModeAction implements Action { + private static String messageType; + + private static String title; + + private static String linkUrl; + + private static String linkMobileUrl; + /** * 建模台账表表名(uf_jcl_zp_zpxq) */ @@ -30,6 +43,8 @@ public class RecruitFlowToModeAction implements Action { @Override public String execute(RequestInfo requestInfo) { MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + int billId = requestInfo.getRequestManager().getBillid(); + int formid = requestInfo.getRequestManager().getFormid(); DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo(); DetailTable detailTable = detailTableInfo.getDetailTable(0); @@ -59,6 +74,11 @@ public class RecruitFlowToModeAction implements Action { mainMap.put("modedatamodifydatetime", dateTime); mainMap.put("modedatacreatertype", "0"); + Map messageMap = new HashMap<>(); + messageMap.put("billId", String.valueOf(billId)); + messageMap.put("formId", String.valueOf(formid)); + messageMap.put("modeId", String.valueOf(formModeId)); + List> insertList = new ArrayList<>(); Row[] rows = detailTable.getRow(); for (Row row : rows) { @@ -79,14 +99,32 @@ public class RecruitFlowToModeAction implements Action { String sql = " insert into " + MODE_TABLE_NAME + "(modeuuid,modedatacreatertype,formmodeid,modedatacreater,modedatacreatedate,modedatacreatetime,modedatamodifier,modedatamodifydatetime,xqsplc,xqzt,sqr,sqsj,sqbm,nd,spfs,xqlx,bz,xqmc,zpyy,zpxqfzr,szfb,szbm,gw,gwzz,rzyq,zwxz,gzdd,gznx,zdxlyq,zprs,qwdgsj)" + " values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; try { - List> paramList = new ArrayList<>(); - // 构建插入参数集合 - buildParamList(insertList, paramList); - for (List objects : paramList) { + + for (Map map : insertList) { + List objects = buildParamList(map); String uuid = UUID.randomUUID().toString(); objects.add(0, uuid); rst.executeUpdate(sql, objects); refreshRight(rst, uuid, formModeId); + + // 申请人ID + String applicant = Util.null2String(map.get("sqr")); + // 申请人名称 + String applicantName = new ResourceComInfo().getLastname(applicant); + // 需求名称 + String requirementName = Util.null2String(map.get("xqmc")); + // 招聘需求负责人ID + String manager = Util.null2String(map.get("zpxqfzr")); + // 申请人集合 + Set applicantSet = new HashSet<>(); + applicantSet.add(applicant); + // 需求负责人集合 + Set managerSet = new HashSet<>(); + managerSet.add(manager); + + // 消息提醒 + messagePush(applicantName + ",你申请的“" + requirementName + "”招聘需求,正在进行中,请知悉。", messageMap, applicantSet); + messagePush("您有一个新的”" + requirementName + "“招聘需求,请查收。", messageMap, managerSet); } rst.commit(); } catch (Exception e) { @@ -168,6 +206,65 @@ public class RecruitFlowToModeAction implements Action { } } + private List buildParamList(Map map) { + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); + // 需求审批流程 + param.add(map.get("xqsplc")); + // 需求状态 + param.add(map.get("xqzt")); + // 申请人 + param.add(map.get("sqr")); + // 申请时间 + param.add(map.get("sqsj")); + // 申请部门 + param.add(map.get("sqbm")); + // 年度 + param.add(map.get("nd")); + // 审批方式 + param.add(map.get("spfs")); + // 需求类型 + param.add(map.get("xqlx")); + // 备注 + param.add(map.get("bz")); + // 需求名称 + param.add(map.get("xqmc")); + // 招聘原因 + param.add(map.get("zpyy")); + // 招聘需求负责人 + param.add(map.get("zpxqfzr")); + // 所属分部 + param.add(map.get("szfb")); + // 所属部门 + param.add(map.get("szbm")); + // 岗位 + param.add(map.get("gw")); + // 岗位职责 + param.add(map.get("gwzz")); + // 任职要求 + param.add(map.get("rzyq")); + // 职位性质 + param.add(map.get("zwxz")); + // 工作地点 + param.add(map.get("gzdd")); + // 工作年限 + param.add(map.get("gznx")); + // 最低学历要求 + param.add(map.get("zdxlyq")); + // 招聘人数 + param.add(map.get("zprs")); + // 期望到岗时间 + param.add(map.get("qwdgsj")); + return param; + } + /** * 将空字符串转化为NULL * @@ -197,4 +294,72 @@ public class RecruitFlowToModeAction implements Action { modeRightInfo.editModeDataShare(1, formModeId, bid); } } + + /** + * 消息推送 + * + * @param context 消息内容 + * @param messageMap 消息 相关key + * @param userIdList 消息接收人ID集合 + */ + private static void messagePush(String context, Map messageMap, Set userIdList) { + + // 替换context内容信息; + + // 替换URL内容信息 + linkUrl = replaceUrlKeys(linkUrl, messageMap); + linkMobileUrl = replaceUrlKeys(linkMobileUrl, messageMap); + + MessageType message = MessageType.newInstance(Integer.parseInt(messageType)); + try { + MessageBean messageBean = Util_Message.createMessage(message, userIdList, title, context, linkUrl, linkMobileUrl); + messageBean.setCreater(1); + //message.setBizState("0");// 需要修改消息为已处理等状态时传入,表示消息最初状态为待处理 + Util_Message.store(messageBean); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 替换url的相关key + * + * @param url 链接地址 + * @param messageMap key集合 + */ + private static String replaceUrlKeys(String url, Map messageMap) { + return url.replace("$modeId$", messageMap.get("modeId")).replace("$formId$", messageMap.get("formId")).replace("$billid$", messageMap.get("billId")); + } + + public static String getMessageType() { + return messageType; + } + + public static void setMessageType(String messageType) { + RecruitFlowToModeAction.messageType = messageType; + } + + public static String getTitle() { + return title; + } + + public static void setTitle(String title) { + RecruitFlowToModeAction.title = title; + } + + public static String getLinkUrl() { + return linkUrl; + } + + public static void setLinkUrl(String linkUrl) { + RecruitFlowToModeAction.linkUrl = linkUrl; + } + + public static String getLinkMobileUrl() { + return linkMobileUrl; + } + + public static void setLinkMobileUrl(String linkMobileUrl) { + RecruitFlowToModeAction.linkMobileUrl = linkMobileUrl; + } } From 4c14329a7794224f92aa32b6b48e990fd8364c6a Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 18 Sep 2023 15:01:35 +0800 Subject: [PATCH 02/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8C=89=E9=92=AEAction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RecruitButtonController.java | 12 ++ .../controller/RecruitButtonController.java | 38 ++++ .../recruit/enums/RecruitStatusEnum.java | 1 + .../exception/CustomizeRunTimeException.java | 21 ++ .../recruit/factory/RecruitButtonFactory.java | 37 ++++ .../recruit/service/RecruitButtonService.java | 22 +++ .../service/impl/AddRemarksServiceImpl.java | 21 ++ .../impl/ArchiveTalentPoolServiceImpl.java | 21 ++ .../impl/ArrangeInterviewsServiceImpl.java | 21 ++ .../impl/BackToneRegistrationServiceImpl.java | 21 ++ .../service/impl/CreateOfferServiceImpl.java | 21 ++ .../impl/DistributeOffersServiceImpl.java | 21 ++ .../service/impl/EliminateServiceImpl.java | 21 ++ .../impl/InviteToUpdateResumeServiceImpl.java | 21 ++ .../impl/JoinBlacklistServiceImpl.java | 21 ++ .../impl/NegotiationRecordsServiceImpl.java | 21 ++ .../service/impl/NextStageServiceImpl.java | 21 ++ .../impl/PendingEmploymentServiceImpl.java | 21 ++ .../impl/RegisterForWrittenServiceImpl.java | 21 ++ .../service/impl/ScreenServiceImpl.java | 21 ++ .../TransferToOtherPositionsServiceImpl.java | 21 ++ .../engine/recruit/util/ExceptionUtil.java | 19 ++ .../engine/recruit/util/ResponseResult.java | 187 ++++++++++++++++++ .../recruit/wrapper/RecruitButtonWrapper.java | 43 ++++ .../demandmanage/RecruitFinishModeExpand.java | 1 + .../demandmanage/RecruitStartModeExpand.java | 1 + .../demandmanage/RecruitStopModeExpand.java | 1 + .../action/RecruitFlowToModeAction.java | 1 + 28 files changed, 699 insertions(+) create mode 100644 src/com/api/recruit/controller/RecruitButtonController.java create mode 100644 src/com/engine/recruit/controller/RecruitButtonController.java create mode 100644 src/com/engine/recruit/exception/CustomizeRunTimeException.java create mode 100644 src/com/engine/recruit/factory/RecruitButtonFactory.java create mode 100644 src/com/engine/recruit/service/RecruitButtonService.java create mode 100644 src/com/engine/recruit/service/impl/AddRemarksServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/ArchiveTalentPoolServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/ArrangeInterviewsServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/BackToneRegistrationServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/CreateOfferServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/DistributeOffersServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/EliminateServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/InviteToUpdateResumeServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/NegotiationRecordsServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/NextStageServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/PendingEmploymentServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/RegisterForWrittenServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/ScreenServiceImpl.java create mode 100644 src/com/engine/recruit/service/impl/TransferToOtherPositionsServiceImpl.java create mode 100644 src/com/engine/recruit/util/ExceptionUtil.java create mode 100644 src/com/engine/recruit/util/ResponseResult.java create mode 100644 src/com/engine/recruit/wrapper/RecruitButtonWrapper.java diff --git a/src/com/api/recruit/controller/RecruitButtonController.java b/src/com/api/recruit/controller/RecruitButtonController.java new file mode 100644 index 0000000..5c74a7d --- /dev/null +++ b/src/com/api/recruit/controller/RecruitButtonController.java @@ -0,0 +1,12 @@ +package com.api.recruit.controller; + +import javax.ws.rs.Path; + +/** + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +@Path("/jcl/recruit/button") +public class RecruitButtonController extends com.engine.recruit.controller.RecruitButtonController{ +} diff --git a/src/com/engine/recruit/controller/RecruitButtonController.java b/src/com/engine/recruit/controller/RecruitButtonController.java new file mode 100644 index 0000000..b1f8d51 --- /dev/null +++ b/src/com/engine/recruit/controller/RecruitButtonController.java @@ -0,0 +1,38 @@ +package com.engine.recruit.controller; + +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.recruit.util.ResponseResult; +import com.engine.recruit.wrapper.RecruitButtonWrapper; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class RecruitButtonController { + + public RecruitButtonWrapper getRecruitButtonWrapper(User user) { + return ServiceUtil.getService(RecruitButtonWrapper.class, user); + } + + @POST + @Path("/executeButtonAction") + @Produces(MediaType.APPLICATION_JSON) + public String executeButtonAction(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getRecruitButtonWrapper(user)::execute, params); + } +} diff --git a/src/com/engine/recruit/enums/RecruitStatusEnum.java b/src/com/engine/recruit/enums/RecruitStatusEnum.java index 3e79319..1de09de 100644 --- a/src/com/engine/recruit/enums/RecruitStatusEnum.java +++ b/src/com/engine/recruit/enums/RecruitStatusEnum.java @@ -1,6 +1,7 @@ package com.engine.recruit.enums; /** + *

聚才林招聘

* 需求状态枚举类 * * @author:dxfeng diff --git a/src/com/engine/recruit/exception/CustomizeRunTimeException.java b/src/com/engine/recruit/exception/CustomizeRunTimeException.java new file mode 100644 index 0000000..75ad088 --- /dev/null +++ b/src/com/engine/recruit/exception/CustomizeRunTimeException.java @@ -0,0 +1,21 @@ +package com.engine.recruit.exception; + +/** + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class CustomizeRunTimeException extends RuntimeException{ + + public CustomizeRunTimeException(String message) { + super(message); + } + + public CustomizeRunTimeException(Throwable cause) { + super(cause); + } + + public CustomizeRunTimeException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/com/engine/recruit/factory/RecruitButtonFactory.java b/src/com/engine/recruit/factory/RecruitButtonFactory.java new file mode 100644 index 0000000..8ee144a --- /dev/null +++ b/src/com/engine/recruit/factory/RecruitButtonFactory.java @@ -0,0 +1,37 @@ +package com.engine.recruit.factory; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +/** + *

聚才林招聘

+ * 招聘按钮工厂类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class RecruitButtonFactory { + + /** + * 根据类的全路径获取类对象 + * + * @param className 类全路径 + * @param + * @return + */ + public static Class getClass(String className) { + Class clazz; + try { + clazz = Class.forName(className); + if (!RecruitButtonService.class.isAssignableFrom(clazz)) { + throw new IllegalArgumentException("该类未实现RecruitButtonService"); + } + return (Class) clazz; + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); + } + + + } +} diff --git a/src/com/engine/recruit/service/RecruitButtonService.java b/src/com/engine/recruit/service/RecruitButtonService.java new file mode 100644 index 0000000..1351d62 --- /dev/null +++ b/src/com/engine/recruit/service/RecruitButtonService.java @@ -0,0 +1,22 @@ +package com.engine.recruit.service; + +import java.util.Map; + +/** + *

聚才林招聘

+ * 招聘流程按钮功能实现接口 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public interface RecruitButtonService { + + /** + * 按钮执行的业务逻辑 + * + * @param params 参数集合 + * @return 响应结果 + */ + Map execute(Map params); +} diff --git a/src/com/engine/recruit/service/impl/AddRemarksServiceImpl.java b/src/com/engine/recruit/service/impl/AddRemarksServiceImpl.java new file mode 100644 index 0000000..c344e3f --- /dev/null +++ b/src/com/engine/recruit/service/impl/AddRemarksServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "添加备注"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class AddRemarksServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/ArchiveTalentPoolServiceImpl.java b/src/com/engine/recruit/service/impl/ArchiveTalentPoolServiceImpl.java new file mode 100644 index 0000000..2054aec --- /dev/null +++ b/src/com/engine/recruit/service/impl/ArchiveTalentPoolServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "归档人才库"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class ArchiveTalentPoolServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/ArrangeInterviewsServiceImpl.java b/src/com/engine/recruit/service/impl/ArrangeInterviewsServiceImpl.java new file mode 100644 index 0000000..9f24b46 --- /dev/null +++ b/src/com/engine/recruit/service/impl/ArrangeInterviewsServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "安排面试"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class ArrangeInterviewsServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/BackToneRegistrationServiceImpl.java b/src/com/engine/recruit/service/impl/BackToneRegistrationServiceImpl.java new file mode 100644 index 0000000..a77c665 --- /dev/null +++ b/src/com/engine/recruit/service/impl/BackToneRegistrationServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "背调结果登记"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class BackToneRegistrationServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/CreateOfferServiceImpl.java b/src/com/engine/recruit/service/impl/CreateOfferServiceImpl.java new file mode 100644 index 0000000..b12edaf --- /dev/null +++ b/src/com/engine/recruit/service/impl/CreateOfferServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "创建offer"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class CreateOfferServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/DistributeOffersServiceImpl.java b/src/com/engine/recruit/service/impl/DistributeOffersServiceImpl.java new file mode 100644 index 0000000..dab8cf6 --- /dev/null +++ b/src/com/engine/recruit/service/impl/DistributeOffersServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "发放offer"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class DistributeOffersServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/EliminateServiceImpl.java b/src/com/engine/recruit/service/impl/EliminateServiceImpl.java new file mode 100644 index 0000000..26df3fc --- /dev/null +++ b/src/com/engine/recruit/service/impl/EliminateServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "淘汰"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class EliminateServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/InviteToUpdateResumeServiceImpl.java b/src/com/engine/recruit/service/impl/InviteToUpdateResumeServiceImpl.java new file mode 100644 index 0000000..837bf0d --- /dev/null +++ b/src/com/engine/recruit/service/impl/InviteToUpdateResumeServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "邀请更新简历"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class InviteToUpdateResumeServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java b/src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java new file mode 100644 index 0000000..9fb38f8 --- /dev/null +++ b/src/com/engine/recruit/service/impl/JoinBlacklistServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "加入黑名单"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class JoinBlacklistServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/NegotiationRecordsServiceImpl.java b/src/com/engine/recruit/service/impl/NegotiationRecordsServiceImpl.java new file mode 100644 index 0000000..d4617fa --- /dev/null +++ b/src/com/engine/recruit/service/impl/NegotiationRecordsServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "谈判记录登记"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class NegotiationRecordsServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/NextStageServiceImpl.java b/src/com/engine/recruit/service/impl/NextStageServiceImpl.java new file mode 100644 index 0000000..d7e9252 --- /dev/null +++ b/src/com/engine/recruit/service/impl/NextStageServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "进入下一阶段"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class NextStageServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/PendingEmploymentServiceImpl.java b/src/com/engine/recruit/service/impl/PendingEmploymentServiceImpl.java new file mode 100644 index 0000000..60ecd6c --- /dev/null +++ b/src/com/engine/recruit/service/impl/PendingEmploymentServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "转为待入职"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class PendingEmploymentServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/RegisterForWrittenServiceImpl.java b/src/com/engine/recruit/service/impl/RegisterForWrittenServiceImpl.java new file mode 100644 index 0000000..bd00d83 --- /dev/null +++ b/src/com/engine/recruit/service/impl/RegisterForWrittenServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "笔试结果登记"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class RegisterForWrittenServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/ScreenServiceImpl.java b/src/com/engine/recruit/service/impl/ScreenServiceImpl.java new file mode 100644 index 0000000..0b93a2e --- /dev/null +++ b/src/com/engine/recruit/service/impl/ScreenServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "业务筛选"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class ScreenServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/service/impl/TransferToOtherPositionsServiceImpl.java b/src/com/engine/recruit/service/impl/TransferToOtherPositionsServiceImpl.java new file mode 100644 index 0000000..38a52e9 --- /dev/null +++ b/src/com/engine/recruit/service/impl/TransferToOtherPositionsServiceImpl.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitButtonService; + +import java.util.Map; + +/** + *

聚才林招聘

+ * "转推其他岗位"按钮实现类 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class TransferToOtherPositionsServiceImpl extends Service implements RecruitButtonService { + @Override + public Map execute(Map params) { + return null; + } +} diff --git a/src/com/engine/recruit/util/ExceptionUtil.java b/src/com/engine/recruit/util/ExceptionUtil.java new file mode 100644 index 0000000..2a707fd --- /dev/null +++ b/src/com/engine/recruit/util/ExceptionUtil.java @@ -0,0 +1,19 @@ +package com.engine.recruit.util; + +/** + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class ExceptionUtil { + public static String getRealMessage(Throwable e) { + while (e != null) { + Throwable cause = e.getCause(); + if (cause == null) { + return e.getMessage(); + } + e = cause; + } + return ""; + } +} diff --git a/src/com/engine/recruit/util/ResponseResult.java b/src/com/engine/recruit/util/ResponseResult.java new file mode 100644 index 0000000..45e2e46 --- /dev/null +++ b/src/com/engine/recruit/util/ResponseResult.java @@ -0,0 +1,187 @@ +package com.engine.recruit.util; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.engine.recruit.exception.CustomizeRunTimeException; +import com.engine.core.exception.ECException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import weaver.general.BaseBean; +import weaver.hrm.User; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Supplier; + +/** + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +@Slf4j +public class ResponseResult { + + private static final long serialVersionUID = 1L; + + private final User user; + + private final BaseBean baseBean = new BaseBean(); + + private final Boolean isLog = "true".equals(baseBean.getPropValue("hrmSalary", "log")); + + public ResponseResult(User user) { + this.user = user; + } + + /** + * 统一返回方法(自定义返回格式) + */ + public String customRun(Function f, T t) { + try { + if (isLog) { + log.info("run api , param {}", t); + } + return getJsonString(f.apply(t)); + } catch (CustomizeRunTimeException e) { + log.error("api run fail", e); + return Error(e.getMessage()); + } catch (ECException e) { + log.error("api run fail", e); + Throwable cause = e.getCause(); + return Error(cause.getMessage()); + } catch (Exception e) { + log.error("api run fail", e); + return Error("系统异常!"); + } + } + + /** + * 统一返回方法 + */ + public String run(Function f, T t) { + try { + if (isLog) { + log.info("run api , param {}", t); + } + return Ok(f.apply(t)); + } catch (CustomizeRunTimeException e) { + log.error("api run fail", e); + return Error(e.getMessage()); + } catch (ECException e) { + log.error("api run fail", e); + Throwable cause = e.getCause(); + return Error(cause.getMessage()); + } catch (Exception e) { + log.error("api run fail", e); + return Error("系统异常!"); + } + } + + /** + * 统一返回方法(有参无返回) + */ + public String run(Consumer f, T t) { + try { + if (isLog) { + log.info("run api , param {}", t); + } + f.accept(t); + return Ok(); + } catch (CustomizeRunTimeException e) { + log.error("api run fail", e); + return Error(e.getMessage()); + } catch (ECException e) { + log.error("api run fail", e); + return Error(ExceptionUtil.getRealMessage(e)); + } catch (Exception e) { + log.error("api run fail", e); + return Error("系统异常!", e); + } + } + + + /** + * 统一返回方法(无参有返回) + */ + public String run(Supplier f) { + try { + if (isLog) { + log.info("run api"); + } + return Ok(f.get()); + } catch (CustomizeRunTimeException e) { + log.error("api run fail", e); + return Error(e.getMessage()); + } catch (ECException e) { + log.error("api run fail", e); + Throwable cause = e.getCause(); + return Error(cause.getMessage()); + } catch (Exception e) { + log.error("api run fail", e); + return Error("系统异常!", e); + } + } + + + private static String getJsonString(Object apidatas) { + ObjectMapper mapper = new ObjectMapper(); + try { + return mapper.writeValueAsString(apidatas); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return ""; + } + + + /** + * 成功返回 + */ + private String Ok() { + Map apidatas = new HashMap<>(); + apidatas.put("status", true); + return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + + + /** + * 成功返回 + */ + private String Ok(R r) { + Map apidatas = new HashMap<>(); + apidatas.put("status", true); + apidatas.put("data", r); + String success = getJsonString(apidatas); + if (isLog) { + log.info("run salary api success return {}", success); + } + return success; + } + + + /** + * 失败返回 + */ + private static String Error(String message) { + Map apidatas = new HashMap<>(); + apidatas.put("status", false); + apidatas.put("errormsg", message); + return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + + + /** + * 系统异常失败返回 + */ + private static String Error(String message, Exception e) { + Map apidatas = new HashMap<>(); + apidatas.put("status", false); + apidatas.put("errormsg", message); + apidatas.put("error", e.getMessage()); + return JSONObject.toJSONString(apidatas, SerializerFeature.DisableCircularReferenceDetect); + } + +} diff --git a/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java b/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java new file mode 100644 index 0000000..3ded352 --- /dev/null +++ b/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java @@ -0,0 +1,43 @@ +package com.engine.recruit.wrapper; + + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.recruit.factory.RecruitButtonFactory; +import com.engine.recruit.service.RecruitButtonService; +import weaver.general.Util; +import weaver.hrm.User; + +import java.util.Map; + +/** + *

聚才林招聘

+ * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class RecruitButtonWrapper extends Service { + + /** + * 根据类全路径,获取对应的实现类 + * + * @param user 当前用户 + * @param classPath 类全路径 + * @return + */ + public RecruitButtonService getRecruitButtonService(User user, String classPath) { + return ServiceUtil.getService(RecruitButtonFactory.getClass(classPath), user); + } + + /** + * 执行对应实现类的方法 + * + * @param params 参数集合 + */ + public Map execute(Map params) { + // 获取实现类全路径 + String classPath = Util.null2String(params.get("classPath")); + return getRecruitButtonService(user, classPath).execute(params); + } +} diff --git a/src/weaver/formmode/recruit/demandmanage/RecruitFinishModeExpand.java b/src/weaver/formmode/recruit/demandmanage/RecruitFinishModeExpand.java index f4f7474..93506f8 100644 --- a/src/weaver/formmode/recruit/demandmanage/RecruitFinishModeExpand.java +++ b/src/weaver/formmode/recruit/demandmanage/RecruitFinishModeExpand.java @@ -13,6 +13,7 @@ import java.util.HashMap; import java.util.Map; /** + *

聚才林招聘

* 完成需求 *

完成需求——更新状态为招聘完成,置空结束日期,完成日期取当前日期

* diff --git a/src/weaver/formmode/recruit/demandmanage/RecruitStartModeExpand.java b/src/weaver/formmode/recruit/demandmanage/RecruitStartModeExpand.java index b0caceb..f1c0833 100644 --- a/src/weaver/formmode/recruit/demandmanage/RecruitStartModeExpand.java +++ b/src/weaver/formmode/recruit/demandmanage/RecruitStartModeExpand.java @@ -12,6 +12,7 @@ import java.util.HashMap; import java.util.Map; /** + *

聚才林招聘

* 开启需求 *

开启需求——状态为进行中,置空完成日期和结束日期

* diff --git a/src/weaver/formmode/recruit/demandmanage/RecruitStopModeExpand.java b/src/weaver/formmode/recruit/demandmanage/RecruitStopModeExpand.java index eb9fa4c..1f3fcc6 100644 --- a/src/weaver/formmode/recruit/demandmanage/RecruitStopModeExpand.java +++ b/src/weaver/formmode/recruit/demandmanage/RecruitStopModeExpand.java @@ -13,6 +13,7 @@ import java.util.HashMap; import java.util.Map; /** + *

聚才林招聘

* 关闭需求 *

关闭需求——状态为招聘停止,置空完成日期结束日期取当前日期

* diff --git a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java index 800ce29..ee4746e 100644 --- a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java +++ b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.*; /** + *

聚才林招聘

* 招聘需求流程明细表数据转建模台账 * * @author:dxfeng From 09e56843aa629ee11ed3f323a1f87eaf1a71a0db Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 18 Sep 2023 18:56:45 +0800 Subject: [PATCH 03/36] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89-?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=93=8D=E4=BD=9C;=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E5=8F=8D=E9=A6=88-=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AddDeptScreeningModeExpand.java | 138 ++++++++++++++++++ .../DeleteDeptScreeningFeedbackExpand.java | 64 ++++++++ 2 files changed, 202 insertions(+) create mode 100644 src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java create mode 100644 src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java diff --git a/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java new file mode 100644 index 0000000..47300a8 --- /dev/null +++ b/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java @@ -0,0 +1,138 @@ +package weaver.formmode.recruit.departmentscreening; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +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/18 + * @version: 1.0 + */ +public class AddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { + /** + * JCL_部门筛选反馈(uf_jcl_bmsxfk) + */ + private static final String MODE_TABLE_NAME = "uf_jcl_bmsxfk"; + + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); + if (requestInfo != null) { + Map dataMap = new HashMap<>(); + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + for (Property property : properties) { + dataMap.put(property.getName(), property.getValue()); + } + + int formModeId = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? )", MODE_TABLE_NAME); + if (rs.next()) { + formModeId = rs.getInt("id"); + } + + // 填充数据集合信息 + dataMap.put("bmsxid", requestInfo.getRequestid()); + dataMap.put("formmodeid", formModeId); + dataMap.put("modedatacreater", requestInfo.getCreatorid()); + String dateTime = DateUtil.getFullDate(); + String[] split = dateTime.split(" "); + dataMap.put("modedatacreatedate", split[0]); + dataMap.put("modedatacreatetime", split[1]); + dataMap.put("modedatamodifier", requestInfo.getCreatorid()); + dataMap.put("modedatamodifydatetime", dateTime); + dataMap.put("modedatacreatertype", "0"); + + List> paramList = new ArrayList<>(); + buildParamList(dataMap, paramList); + if (CollectionUtils.isNotEmpty(paramList)) { + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + for (List objects : paramList) { + String uuid = UUID.randomUUID().toString(); + objects.add(0, uuid); + rs.executeUpdate(insertSql, objects); + refreshRight(rs, uuid, formModeId); + } + } + } + } catch (Exception e) { + new BaseBean().writeLog(e); + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + return result; + } + + /** + * 构建批量插入数据集合 + * + * @param map 表单参数 + * @param paramList 待插入数据集合 + */ + private void buildParamList(Map map, List> paramList) { + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); + + //部门筛选ID + param.add(map.get("bmsxid")); + // 应聘者 + param.add(map.get("ypz")); + // 应聘职位 + param.add(map.get("ypzw")); + // 投递时间 + param.add(map.get("tdsj")); + // 反馈人 + String fkr = Util.null2String(map.get("fkr")); + if (StringUtils.isNotBlank(fkr)) { + String[] fkrArray = fkr.split(","); + for (String fkrId : fkrArray) { + ArrayList objects = new ArrayList<>(param); + objects.add(fkrId); + paramList.add(objects); + } + } + } + + /** + * 权限重构 + * + * @param rs RecordSet + * @param uuid UUID + * @param formModeId 建模ID + */ + private void refreshRight(RecordSet rs, String uuid, int formModeId) { + rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'"); + if (rs.next()) { + //建模数据的id + int bid = Util.getIntValue(rs.getString("id")); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + //新建的时候添加共享 + modeRightInfo.editModeDataShare(1, formModeId, bid); + } + } +} diff --git a/src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java b/src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java new file mode 100644 index 0000000..3a283b6 --- /dev/null +++ b/src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java @@ -0,0 +1,64 @@ +package weaver.formmode.recruit.departmentscreening; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +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.*; + +/** + *

聚才林招聘

+ * 部门筛选反馈数据删除,更新/删除部门筛选数据 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class DeleteDeptScreeningFeedbackExpand extends AbstractModeExpandJavaCodeNew { + /** + * JCL_部门筛选(uf_jcl_bmsx) + */ + private static final String MODE_TABLE_NAME = "uf_jcl_bmsx"; + + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); + if (requestInfo != null) { + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + Map dataMap = new HashMap<>(); + for (Property property : properties) { + dataMap.put(property.getName(), property.getValue()); + } + String bmsxid = Util.null2String(dataMap.get("bmsxid")); + String fkr = Util.null2String(dataMap.get("fkr")); + + RecordSet rs = new RecordSet(); + rs.executeQuery("select fkr from " + MODE_TABLE_NAME + " where id = ?", bmsxid); + if (rs.next()) { + String fkrStr = rs.getString("fkr"); + List strings = new ArrayList<>(Arrays.asList(fkrStr.split(","))); + strings.remove(fkr); + if (CollectionUtils.isEmpty(strings)) { + // 直接删除部门筛选数据 + rs.executeUpdate("delete from " + MODE_TABLE_NAME + " where id = ?", bmsxid); + } else { + // 更新部门筛选数据的反馈人信息 + rs.executeUpdate("update " + MODE_TABLE_NAME + " set fkr = ? where id = ?", StringUtils.join(strings, ","), bmsxid); + } + } + } + } catch (Exception e) { + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + return result; + } +} From 086e0da3be7d178e9b9e7d6c2e13d9f7a93b6950 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 19 Sep 2023 10:31:17 +0800 Subject: [PATCH 04/36] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89-?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=93=8D=E4=BD=9C,=E5=A4=9A=E5=BA=94?= =?UTF-8?q?=E8=81=98=E8=80=85=E3=80=81=E5=A4=9A=E5=8F=8D=E9=A6=88=E4=BA=BA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8F=92=E5=85=A5=E5=A4=84=E7=90=86=20?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89-=E5=BC=83=E7=94=A8?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9CExpand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AddDeptScreeningModeExpand.java | 67 +++++++++++-------- .../DeleteDeptScreeningFeedbackExpand.java | 64 ------------------ 2 files changed, 40 insertions(+), 91 deletions(-) delete mode 100644 src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java diff --git a/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java index 47300a8..951910e 100644 --- a/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java @@ -48,8 +48,12 @@ public class AddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { formModeId = rs.getInt("id"); } - // 填充数据集合信息 + + // 部门筛选ID dataMap.put("bmsxid", requestInfo.getRequestid()); + // 结果 + dataMap.put("jg", "2"); + // 填充建模数据基本信息 dataMap.put("formmodeid", formModeId); dataMap.put("modedatacreater", requestInfo.getCreatorid()); String dateTime = DateUtil.getFullDate(); @@ -63,7 +67,7 @@ public class AddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { List> paramList = new ArrayList<>(); buildParamList(dataMap, paramList); if (CollectionUtils.isNotEmpty(paramList)) { - String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, jg, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; for (List objects : paramList) { String uuid = UUID.randomUUID().toString(); objects.add(0, uuid); @@ -87,32 +91,41 @@ public class AddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { * @param paramList 待插入数据集合 */ private void buildParamList(Map map, List> paramList) { - List param = new ArrayList<>(); - // 填充建模表相关字段 - param.add(map.get("modedatacreatertype")); - param.add(map.get("formmodeid")); - param.add(map.get("modedatacreater")); - param.add(map.get("modedatacreatedate")); - param.add(map.get("modedatacreatetime")); - param.add(map.get("modedatamodifier")); - param.add(map.get("modedatamodifydatetime")); + String ypz = Util.null2String(map.get("ypz")); + String[] ypzIds = ypz.split(","); + for (String ypzId : ypzIds) { + if (StringUtils.isBlank(ypzId)) { + continue; + } + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); - //部门筛选ID - param.add(map.get("bmsxid")); - // 应聘者 - param.add(map.get("ypz")); - // 应聘职位 - param.add(map.get("ypzw")); - // 投递时间 - param.add(map.get("tdsj")); - // 反馈人 - String fkr = Util.null2String(map.get("fkr")); - if (StringUtils.isNotBlank(fkr)) { - String[] fkrArray = fkr.split(","); - for (String fkrId : fkrArray) { - ArrayList objects = new ArrayList<>(param); - objects.add(fkrId); - paramList.add(objects); + //部门筛选ID + param.add(map.get("bmsxid")); + // 应聘者 + param.add(ypzId); + // 应聘职位 + param.add(map.get("ypzw")); + // 投递时间 + param.add(map.get("tdsj")); + // 状态 + param.add(map.get("jg")); + // 反馈人 + String fkr = Util.null2String(map.get("fkr")); + if (StringUtils.isNotBlank(fkr)) { + String[] fkrArray = fkr.split(","); + for (String fkrId : fkrArray) { + ArrayList objects = new ArrayList<>(param); + objects.add(fkrId); + paramList.add(objects); + } } } } diff --git a/src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java b/src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java deleted file mode 100644 index 3a283b6..0000000 --- a/src/weaver/formmode/recruit/departmentscreening/DeleteDeptScreeningFeedbackExpand.java +++ /dev/null @@ -1,64 +0,0 @@ -package weaver.formmode.recruit.departmentscreening; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import weaver.conn.RecordSet; -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.*; - -/** - *

聚才林招聘

- * 部门筛选反馈数据删除,更新/删除部门筛选数据 - * - * @author:dxfeng - * @createTime: 2023/09/18 - * @version: 1.0 - */ -public class DeleteDeptScreeningFeedbackExpand extends AbstractModeExpandJavaCodeNew { - /** - * JCL_部门筛选(uf_jcl_bmsx) - */ - private static final String MODE_TABLE_NAME = "uf_jcl_bmsx"; - - @Override - public Map doModeExpand(Map param) { - Map result = new HashMap<>(); - try { - RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); - if (requestInfo != null) { - MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); - Property[] properties = mainTableInfo.getProperty(); - Map dataMap = new HashMap<>(); - for (Property property : properties) { - dataMap.put(property.getName(), property.getValue()); - } - String bmsxid = Util.null2String(dataMap.get("bmsxid")); - String fkr = Util.null2String(dataMap.get("fkr")); - - RecordSet rs = new RecordSet(); - rs.executeQuery("select fkr from " + MODE_TABLE_NAME + " where id = ?", bmsxid); - if (rs.next()) { - String fkrStr = rs.getString("fkr"); - List strings = new ArrayList<>(Arrays.asList(fkrStr.split(","))); - strings.remove(fkr); - if (CollectionUtils.isEmpty(strings)) { - // 直接删除部门筛选数据 - rs.executeUpdate("delete from " + MODE_TABLE_NAME + " where id = ?", bmsxid); - } else { - // 更新部门筛选数据的反馈人信息 - rs.executeUpdate("update " + MODE_TABLE_NAME + " set fkr = ? where id = ?", StringUtils.join(strings, ","), bmsxid); - } - } - } - } catch (Exception e) { - result.put("errmsg", "自定义出错信息"); - result.put("flag", "false"); - } - return result; - } -} From cbe4d20940009a6662cb10155541f832656f7a9a Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 19 Sep 2023 15:32:39 +0800 Subject: [PATCH 05/36] =?UTF-8?q?=E5=BA=9F=E5=BC=83=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/RecruitFlowToModeAction.java | 65 +------------------ 1 file changed, 2 insertions(+), 63 deletions(-) diff --git a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java index ee4746e..e79f6fd 100644 --- a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java +++ b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java @@ -143,70 +143,9 @@ public class RecruitFlowToModeAction implements Action { /** * 构建插入参数集合 * - * @param insertList 待插入数据集合 - * @param paramList SQL插入参数集合 + * @param map 表单数据集合 + * @return 待插入参数集合 */ - private void buildParamList(List> insertList, List> paramList) { - for (Map map : insertList) { - List param = new ArrayList<>(); - // 填充建模表相关字段 - param.add(map.get("modedatacreatertype")); - param.add(map.get("formmodeid")); - param.add(map.get("modedatacreater")); - param.add(map.get("modedatacreatedate")); - param.add(map.get("modedatacreatetime")); - param.add(map.get("modedatamodifier")); - param.add(map.get("modedatamodifydatetime")); - // 需求审批流程 - param.add(map.get("xqsplc")); - // 需求状态 - param.add(map.get("xqzt")); - // 申请人 - param.add(map.get("sqr")); - // 申请时间 - param.add(map.get("sqsj")); - // 申请部门 - param.add(map.get("sqbm")); - // 年度 - param.add(map.get("nd")); - // 审批方式 - param.add(map.get("spfs")); - // 需求类型 - param.add(map.get("xqlx")); - // 备注 - param.add(map.get("bz")); - // 需求名称 - param.add(map.get("xqmc")); - // 招聘原因 - param.add(map.get("zpyy")); - // 招聘需求负责人 - param.add(map.get("zpxqfzr")); - // 所属分部 - param.add(map.get("szfb")); - // 所属部门 - param.add(map.get("szbm")); - // 岗位 - param.add(map.get("gw")); - // 岗位职责 - param.add(map.get("gwzz")); - // 任职要求 - param.add(map.get("rzyq")); - // 职位性质 - param.add(map.get("zwxz")); - // 工作地点 - param.add(map.get("gzdd")); - // 工作年限 - param.add(map.get("gznx")); - // 最低学历要求 - param.add(map.get("zdxlyq")); - // 招聘人数 - param.add(map.get("zprs")); - // 期望到岗时间 - param.add(map.get("qwdgsj")); - paramList.add(param); - } - } - private List buildParamList(Map map) { List param = new ArrayList<>(); // 填充建模表相关字段 From d93a4b6c8bc881982a66e74fbfadca2b2fa79754 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 19 Sep 2023 17:46:44 +0800 Subject: [PATCH 06/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E6=B5=81=E7=A8=8B-?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=97=B6,=E7=94=9F=E6=88=90=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E9=98=B6=E6=AE=B5=E5=85=B3=E8=81=94=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/RelatedStageModeExpand.java | 192 ++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 src/weaver/formmode/recruit/process/RelatedStageModeExpand.java diff --git a/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java b/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java new file mode 100644 index 0000000..06702e2 --- /dev/null +++ b/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java @@ -0,0 +1,192 @@ +package weaver.formmode.recruit.process; + +import org.apache.commons.lang3.StringUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.soa.workflow.request.MainTableInfo; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; +import weaver.workflow.workflow.WorkflowBillComInfo; + +import java.util.*; + +/** + *

聚才林招聘

+ * + *

招聘流程新建时,生成流程阶段关联数据

+ * + * @author:dxfeng + * @createTime: 2023/09/19 + * @version: 1.0 + */ +public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { + private static final String MODE_TABLE_NAME = "uf_jcl_zpjdsz"; + private static final String MODE_TABLE_NAME_DT1 = "uf_jcl_zpjdsz_dt1"; + private static final String MODE_TABLE_NAME_DT2 = "uf_jcl_zpjdsz_dt2"; + + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + String billId; + RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); + if (requestInfo != null) { + billId = requestInfo.getRequestid(); + // 获取表单名称 + String formId = Util.null2String(param.get("formid")); + String tableName = new WorkflowBillComInfo().getTablename(formId); + //String sql = "update " + tableName + " set xqzt = ? ,jssj = ?,wcsj = ? where id = ?"; + //RecordSet rs = new RecordSet(); + //// 更新状态为招聘完成,置空结束日期,完成日期取当前日期 + //rs.executeUpdate(sql, RecruitStatusEnum.RECRUITMENT_COMPLETED.getValue(), null, DateUtil.getCurrentDate(), billId); + new BaseBean().writeLog("完成需求操作:billId=[" + billId + "]操作完成"); + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + Map mainDataMap = new HashMap<>(); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + // 开始阶段 + String ksjd = mainDataMap.get("ksjd"); + // 过程阶段 + String gcjd = mainDataMap.get("gcjd"); + // 结束阶段 + String jsjd = mainDataMap.get("jsjd"); + // 查询所有的操作阶段信息 + relatedStageData(requestInfo.getCreatorid(), billId, ksjd, gcjd, jsjd); + + } + } catch (Exception e) { + new BaseBean().writeLog(e); + ; + result.put("errmsg", "完成需求操作失败"); + result.put("flag", "false"); + } + return result; + } + + /** + * 生成关联的招聘阶段数据 + * + * @param creator 创建者ID + * @param billId 当前数据ID + * @param processIds 路程表单所选阶段ID + */ + private void relatedStageData(String creator, String billId, String... processIds) { + String dateTime = DateUtil.getFullDate(); + String[] dateSplit = dateTime.split(" "); + + List paramsList = new ArrayList<>(); + // modedatacreater + paramsList.add(creator); + // modedatacreatedate + paramsList.add(dateSplit[0]); + // modedatacreatetime + paramsList.add(dateSplit[1]); + // modedatamodifier + paramsList.add(creator); + // modedatamodifydatetime + paramsList.add(dateTime); + // modedatacreatertype + paramsList.add("0"); + + String processIdsStr = StringUtils.join(Arrays.asList(processIds), ","); + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, modedatacreatertype, formmodeid, jdmc, jdms, jdlx, hj, sfqy, zssx, zpjd, zplc) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + for (String processId : processIdsStr.split(",")) { + if (StringUtils.isBlank(processId)) { + continue; + } + insertMainTableData(billId, processId, insertSql, paramsList); + } + } + + /** + * 插入主表数据 + * + * @param billId 招聘流程表单ID + * @param processId 招聘阶段ID + * @param insertSql 插入SQL语句 + * @param paramsList 待插入参数集合 + */ + private void insertMainTableData(String billId, String processId, String insertSql, List paramsList) { + String uuid = UUID.randomUUID().toString(); + ArrayList insertList = new ArrayList<>(paramsList); + insertList.add(0, uuid); + RecordSet rs = new RecordSet(); + rs.executeQuery("select * from uf_jcl_zpjdsz where id = ?", processId); + if (rs.next()) { + String formModeId = rs.getString("formmodeid"); + insertList.add(formModeId); + insertList.add(rs.getString("jdmc")); + insertList.add(rs.getString("jdms")); + insertList.add(rs.getString("jdlx")); + insertList.add(rs.getString("hj")); + insertList.add(rs.getString("sfqy")); + insertList.add(rs.getString("zssx")); + // zpjd + insertList.add(processId); + // zplc + insertList.add(billId); + // 插入主表数据 + rs.executeUpdate(insertSql, insertList); + refreshRight(uuid, formModeId, processId); + } + } + + /** + * 权限重构,插入明细表数据 + * + * @param uuid UUID + * @param formModeId formModeId + */ + private void refreshRight(String uuid, String formModeId, String processId) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'"); + if (rs.next()) { + //建模数据的id + String bid = rs.getString("id"); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + //新建的时候添加共享 + modeRightInfo.editModeDataShare(1, Util.getIntValue(formModeId), Util.getIntValue(bid)); + + // 插入明细表数据 + rs.executeQuery("select * from " + MODE_TABLE_NAME_DT1 + " where mainid = ? ", processId); + List> insertList = new ArrayList<>(); + while (rs.next()) { + List paramList = new ArrayList<>(); + // mainid + paramList.add(bid); + paramList.add(rs.getString("czan")); + paramList.add(rs.getString("zdyxsmc")); + paramList.add(rs.getString("sfqy")); + paramList.add(rs.getString("tzymbt")); + paramList.add(rs.getString("tzymdz")); + paramList.add(rs.getString("zssx")); + insertList.add(paramList); + } + for (List list : insertList) { + rs.executeUpdate("insert into " + MODE_TABLE_NAME_DT1 + " (mainid, czan, zdyxsmc, sfqy, tzymbt, tzymdz, zssx) values (?, ?, ?, ?, ?, ?, ?)", list); + } + + insertList = new ArrayList<>(); + rs.executeQuery("select * from " + MODE_TABLE_NAME_DT2 + " where mainid = ? ", processId); + while (rs.next()) { + List paramList = new ArrayList<>(); + // mainid + paramList.add(bid); + paramList.add(rs.getString("ymbt")); + paramList.add(rs.getString("ymdz")); + paramList.add(rs.getString("zssx")); + insertList.add(paramList); + } + for (List list : insertList) { + rs.executeUpdate("insert into " + MODE_TABLE_NAME_DT2 + " (mainid, ymbt, ymdz, zssx) values (?, ?, ?, ?)", list); + } + } + } +} From c14c7ecfdc3bfe5ab2f97c519de31eed53afc2f0 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 20 Sep 2023 11:47:27 +0800 Subject: [PATCH 07/36] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E8=BD=AC=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=EF=BC=88=E5=8D=95=E4=B8=80=E3=80=81=E6=89=B9=E9=87=8F=EF=BC=89?= =?UTF-8?q?Action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/wrapper/RecruitButtonWrapper.java | 2 +- .../BatchAddDeptScreeningModeExpand.java | 156 ++++++++++++++++++ ... => SingleAddDeptScreeningModeExpand.java} | 69 ++++---- .../process/RelatedStageModeExpand.java | 9 - 4 files changed, 189 insertions(+), 47 deletions(-) create mode 100644 src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java rename src/weaver/formmode/recruit/departmentscreening/{AddDeptScreeningModeExpand.java => SingleAddDeptScreeningModeExpand.java} (72%) diff --git a/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java b/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java index 3ded352..f44659b 100644 --- a/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java +++ b/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java @@ -26,7 +26,7 @@ public class RecruitButtonWrapper extends Service { * @param classPath 类全路径 * @return */ - public RecruitButtonService getRecruitButtonService(User user, String classPath) { + private RecruitButtonService getRecruitButtonService(User user, String classPath) { return ServiceUtil.getService(RecruitButtonFactory.getClass(classPath), user); } diff --git a/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java new file mode 100644 index 0000000..8a4fdeb --- /dev/null +++ b/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java @@ -0,0 +1,156 @@ +package weaver.formmode.recruit.departmentscreening; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.soa.workflow.request.*; + +import java.util.*; + +/** + *

聚才林招聘

+ * 批量发起部门筛选,转部门筛选反馈数据 + * + * @author:dxfeng + * @createTime: 2023/09/18 + * @version: 1.0 + */ +public class BatchAddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { + /** + * JCL_部门筛选反馈(uf_jcl_bmsxfk) + */ + private static final String MODE_TABLE_NAME = "uf_jcl_bmsxfk"; + + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); + if (requestInfo != null) { + int formModeId = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? )", MODE_TABLE_NAME); + if (rs.next()) { + formModeId = rs.getInt("id"); + } + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + Map mainDataMap = new HashMap<>(); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + // 部门筛选ID + mainDataMap.put("bmsxid", requestInfo.getRequestid()); + // 结果 + mainDataMap.put("jg", "2"); + // 填充建模数据基本信息 + mainDataMap.put("formmodeid", formModeId); + mainDataMap.put("modedatacreater", requestInfo.getCreatorid()); + String dateTime = DateUtil.getFullDate(); + String[] split = dateTime.split(" "); + mainDataMap.put("modedatacreatedate", split[0]); + mainDataMap.put("modedatacreatetime", split[1]); + mainDataMap.put("modedatamodifier", requestInfo.getCreatorid()); + mainDataMap.put("modedatamodifydatetime", dateTime); + mainDataMap.put("modedatacreatertype", "0"); + + List> detailMapList = new ArrayList<>(); + DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo(); + DetailTable detailTable = detailTableInfo.getDetailTable(0); + Row[] rows = detailTable.getRow(); + for (Row row : rows) { + Map detailDataMap = new HashMap<>(mainDataMap); + Cell[] cells = row.getCell(); + for (Cell cell : cells) { + detailDataMap.put(cell.getName(), cell.getValue()); + } + detailMapList.add(detailDataMap); + } + + for (Map detailDataMap : detailMapList) { + List> paramList = new ArrayList<>(); + buildParamList(detailDataMap, paramList); + if (CollectionUtils.isNotEmpty(paramList)) { + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, jg, pcid, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + for (List objects : paramList) { + String uuid = UUID.randomUUID().toString(); + objects.add(0, uuid); + rs.executeUpdate(insertSql, objects); + refreshRight(rs, uuid, formModeId); + } + } + } + } + } catch (Exception e) { + new BaseBean().writeLog(e); + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + return result; + } + + /** + * 构建批量插入数据集合 + * + * @param map 表单参数 + * @param paramList 待插入数据集合 + */ + private void buildParamList(Map map, List> paramList) { + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); + + //部门筛选ID + param.add(map.get("bmsxid")); + // 应聘者 + param.add(map.get("ypz")); + // 应聘职位 + param.add(map.get("ypzw")); + // 投递时间 + param.add(map.get("tdsj")); + // 状态 + param.add(map.get("jg")); + // 批次ID + param.add(map.get("pcid")); + // 反馈人 + String fkr = Util.null2String(map.get("fkr")); + if (StringUtils.isNotBlank(fkr)) { + String[] fkrArray = fkr.split(","); + for (String fkrId : fkrArray) { + ArrayList objects = new ArrayList<>(param); + objects.add(fkrId); + paramList.add(objects); + } + } + } + + /** + * 权限重构 + * + * @param rs RecordSet + * @param uuid UUID + * @param formModeId 建模ID + */ + private void refreshRight(RecordSet rs, String uuid, int formModeId) { + rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'"); + if (rs.next()) { + //建模数据的id + int bid = Util.getIntValue(rs.getString("id")); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + //新建的时候添加共享 + modeRightInfo.editModeDataShare(1, formModeId, bid); + } + } +} diff --git a/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java similarity index 72% rename from src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java rename to src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java index 951910e..f087681 100644 --- a/src/weaver/formmode/recruit/departmentscreening/AddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java @@ -16,13 +16,13 @@ import java.util.*; /** *

聚才林招聘

- * 发起部门筛选,转部门筛选反馈数据 + * 单一发起部门筛选,转部门筛选反馈数据 * * @author:dxfeng * @createTime: 2023/09/18 * @version: 1.0 */ -public class AddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { +public class SingleAddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { /** * JCL_部门筛选反馈(uf_jcl_bmsxfk) */ @@ -67,7 +67,7 @@ public class AddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { List> paramList = new ArrayList<>(); buildParamList(dataMap, paramList); if (CollectionUtils.isNotEmpty(paramList)) { - String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, jg, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, jg, pcid, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; for (List objects : paramList) { String uuid = UUID.randomUUID().toString(); objects.add(0, uuid); @@ -91,41 +91,36 @@ public class AddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeNew { * @param paramList 待插入数据集合 */ private void buildParamList(Map map, List> paramList) { - String ypz = Util.null2String(map.get("ypz")); - String[] ypzIds = ypz.split(","); - for (String ypzId : ypzIds) { - if (StringUtils.isBlank(ypzId)) { - continue; - } - List param = new ArrayList<>(); - // 填充建模表相关字段 - param.add(map.get("modedatacreatertype")); - param.add(map.get("formmodeid")); - param.add(map.get("modedatacreater")); - param.add(map.get("modedatacreatedate")); - param.add(map.get("modedatacreatetime")); - param.add(map.get("modedatamodifier")); - param.add(map.get("modedatamodifydatetime")); + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); - //部门筛选ID - param.add(map.get("bmsxid")); - // 应聘者 - param.add(ypzId); - // 应聘职位 - param.add(map.get("ypzw")); - // 投递时间 - param.add(map.get("tdsj")); - // 状态 - param.add(map.get("jg")); - // 反馈人 - String fkr = Util.null2String(map.get("fkr")); - if (StringUtils.isNotBlank(fkr)) { - String[] fkrArray = fkr.split(","); - for (String fkrId : fkrArray) { - ArrayList objects = new ArrayList<>(param); - objects.add(fkrId); - paramList.add(objects); - } + //部门筛选ID + param.add(map.get("bmsxid")); + // 应聘者 + param.add(map.get("ypz")); + // 应聘职位 + param.add(map.get("ypzw")); + // 投递时间 + param.add(map.get("tdsj")); + // 状态 + param.add(map.get("jg")); + // 批次ID + param.add(map.get("pcid")); + // 反馈人 + String fkr = Util.null2String(map.get("fkr")); + if (StringUtils.isNotBlank(fkr)) { + String[] fkrArray = fkr.split(","); + for (String fkrId : fkrArray) { + ArrayList objects = new ArrayList<>(param); + objects.add(fkrId); + paramList.add(objects); } } } diff --git a/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java b/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java index 06702e2..3cf56f6 100644 --- a/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java +++ b/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java @@ -10,7 +10,6 @@ import weaver.general.Util; import weaver.soa.workflow.request.MainTableInfo; import weaver.soa.workflow.request.Property; import weaver.soa.workflow.request.RequestInfo; -import weaver.workflow.workflow.WorkflowBillComInfo; import java.util.*; @@ -37,13 +36,6 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { if (requestInfo != null) { billId = requestInfo.getRequestid(); // 获取表单名称 - String formId = Util.null2String(param.get("formid")); - String tableName = new WorkflowBillComInfo().getTablename(formId); - //String sql = "update " + tableName + " set xqzt = ? ,jssj = ?,wcsj = ? where id = ?"; - //RecordSet rs = new RecordSet(); - //// 更新状态为招聘完成,置空结束日期,完成日期取当前日期 - //rs.executeUpdate(sql, RecruitStatusEnum.RECRUITMENT_COMPLETED.getValue(), null, DateUtil.getCurrentDate(), billId); - new BaseBean().writeLog("完成需求操作:billId=[" + billId + "]操作完成"); MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); Property[] properties = mainTableInfo.getProperty(); Map mainDataMap = new HashMap<>(); @@ -58,7 +50,6 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { String jsjd = mainDataMap.get("jsjd"); // 查询所有的操作阶段信息 relatedStageData(requestInfo.getCreatorid(), billId, ksjd, gcjd, jsjd); - } } catch (Exception e) { new BaseBean().writeLog(e); From 16bbd4478c405b7b6d635260608c8109e59f275f Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 20 Sep 2023 11:49:52 +0800 Subject: [PATCH 08/36] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E5=AD=97=E6=AE=B5=E8=81=94=E5=8A=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicantResumeController.java | 12 ++++++ .../controller/ApplicantResumeController.java | 39 +++++++++++++++++++ .../service/ApplicantResumeService.java | 23 +++++++++++ .../impl/ApplicantResumeServiceImpl.java | 36 +++++++++++++++++ .../wrapper/ApplicantResumeWrapper.java | 24 ++++++++++++ 5 files changed, 134 insertions(+) create mode 100644 src/com/api/recruit/controller/ApplicantResumeController.java create mode 100644 src/com/engine/recruit/controller/ApplicantResumeController.java create mode 100644 src/com/engine/recruit/service/ApplicantResumeService.java create mode 100644 src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java create mode 100644 src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java diff --git a/src/com/api/recruit/controller/ApplicantResumeController.java b/src/com/api/recruit/controller/ApplicantResumeController.java new file mode 100644 index 0000000..6fd3941 --- /dev/null +++ b/src/com/api/recruit/controller/ApplicantResumeController.java @@ -0,0 +1,12 @@ +package com.api.recruit.controller; + +import javax.ws.rs.Path; + +/** + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +@Path("/jcl/recruit/applicant") +public class ApplicantResumeController extends com.engine.recruit.controller.ApplicantResumeController{ +} diff --git a/src/com/engine/recruit/controller/ApplicantResumeController.java b/src/com/engine/recruit/controller/ApplicantResumeController.java new file mode 100644 index 0000000..01ec0af --- /dev/null +++ b/src/com/engine/recruit/controller/ApplicantResumeController.java @@ -0,0 +1,39 @@ +package com.engine.recruit.controller; + +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.recruit.util.ResponseResult; +import com.engine.recruit.wrapper.ApplicantResumeWrapper; +import weaver.general.Util; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +public class ApplicantResumeController { + public ApplicantResumeWrapper getApplicantResumeWrapper(User user) { + return ServiceUtil.getService(ApplicantResumeWrapper.class, user); + } + + @POST + @Path("/getApplicantsName") + @Produces(MediaType.APPLICATION_JSON) + public String getApplicantsName(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + String ids = Util.null2String(params.get("ids")); + return new ResponseResult>(user).run(getApplicantResumeWrapper(user)::getApplicantsName, ids); + } +} diff --git a/src/com/engine/recruit/service/ApplicantResumeService.java b/src/com/engine/recruit/service/ApplicantResumeService.java new file mode 100644 index 0000000..1195d00 --- /dev/null +++ b/src/com/engine/recruit/service/ApplicantResumeService.java @@ -0,0 +1,23 @@ +package com.engine.recruit.service; + +import java.util.Map; + +/** + *

聚才林招聘

+ *

+ * 应聘者简历服务类 + * + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +public interface ApplicantResumeService { + + /** + * 获取应聘者姓名 + * + * @param ids 应聘者ID + * @return 应聘者姓名 + */ + Map getApplicantsName(String ids); +} diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java new file mode 100644 index 0000000..516a399 --- /dev/null +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -0,0 +1,36 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.ApplicantResumeService; +import weaver.conn.RecordSet; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +public class ApplicantResumeServiceImpl extends Service implements ApplicantResumeService { + @Override + public Map getApplicantsName(String ids) { + Map returnMap = new HashMap<>(); + RecordSet rs = new RecordSet(); + String[] split = ids.split(","); + List> list = new ArrayList<>(); + for (String id : split) { + rs.executeQuery("select xm from uf_jcl_yppc where id = ?", id); + if (rs.next()) { + Map rowMap = new HashMap<>(); + rowMap.put("id", id); + rowMap.put("name", rs.getString("xm")); + list.add(rowMap); + } + } + returnMap.put("rows", list); + return returnMap; + } +} diff --git a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java new file mode 100644 index 0000000..7c482d4 --- /dev/null +++ b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java @@ -0,0 +1,24 @@ +package com.engine.recruit.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.recruit.service.ApplicantResumeService; +import com.engine.recruit.service.impl.ApplicantResumeServiceImpl; +import weaver.hrm.User; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +public class ApplicantResumeWrapper extends Service { + private ApplicantResumeService getApplicantResumeService(User user) { + return ServiceUtil.getService(ApplicantResumeServiceImpl.class, user); + } + + public Map getApplicantsName(String ids) { + return getApplicantResumeService(user).getApplicantsName(ids); + } +} From 4d670be00c216b31c63c4e258f273a8c2bdd5366 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 21 Sep 2023 15:26:35 +0800 Subject: [PATCH 09/36] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E6=95=B0=E6=8D=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BatchAddDeptScreeningModeExpand.java | 8 ++++---- .../SingleAddDeptScreeningModeExpand.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java index 8a4fdeb..68d66e4 100644 --- a/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java @@ -46,8 +46,8 @@ public class BatchAddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeN } // 部门筛选ID mainDataMap.put("bmsxid", requestInfo.getRequestid()); - // 结果 - mainDataMap.put("jg", "2"); + // 状态 + mainDataMap.put("zt", "0"); // 填充建模数据基本信息 mainDataMap.put("formmodeid", formModeId); mainDataMap.put("modedatacreater", requestInfo.getCreatorid()); @@ -76,7 +76,7 @@ public class BatchAddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeN List> paramList = new ArrayList<>(); buildParamList(detailDataMap, paramList); if (CollectionUtils.isNotEmpty(paramList)) { - String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, jg, pcid, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, zt, pcid, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; for (List objects : paramList) { String uuid = UUID.randomUUID().toString(); objects.add(0, uuid); @@ -120,7 +120,7 @@ public class BatchAddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeN // 投递时间 param.add(map.get("tdsj")); // 状态 - param.add(map.get("jg")); + param.add(map.get("zt")); // 批次ID param.add(map.get("pcid")); // 反馈人 diff --git a/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java index f087681..8552b1c 100644 --- a/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java @@ -51,8 +51,8 @@ public class SingleAddDeptScreeningModeExpand extends AbstractModeExpandJavaCode // 部门筛选ID dataMap.put("bmsxid", requestInfo.getRequestid()); - // 结果 - dataMap.put("jg", "2"); + // 状态 + dataMap.put("zt", "0"); // 填充建模数据基本信息 dataMap.put("formmodeid", formModeId); dataMap.put("modedatacreater", requestInfo.getCreatorid()); @@ -67,7 +67,7 @@ public class SingleAddDeptScreeningModeExpand extends AbstractModeExpandJavaCode List> paramList = new ArrayList<>(); buildParamList(dataMap, paramList); if (CollectionUtils.isNotEmpty(paramList)) { - String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, jg, pcid, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, bmsxid, ypz, ypzw, tdsj, zt, pcid, fkr) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; for (List objects : paramList) { String uuid = UUID.randomUUID().toString(); objects.add(0, uuid); @@ -110,7 +110,7 @@ public class SingleAddDeptScreeningModeExpand extends AbstractModeExpandJavaCode // 投递时间 param.add(map.get("tdsj")); // 状态 - param.add(map.get("jg")); + param.add(map.get("zt")); // 批次ID param.add(map.get("pcid")); // 反馈人 From 4bab5bae71d4d7a1da1fe48720a61297f4b3d954 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 22 Sep 2023 13:38:04 +0800 Subject: [PATCH 10/36] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=AE=89=E6=8E=92?= =?UTF-8?q?=E7=AC=94=E8=AF=95=E6=8E=A8=E7=AC=94=E8=AF=95=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=EF=BC=88=E5=BB=BA=E6=A8=A1=E6=8E=A8=E5=BB=BA=E6=A8=A1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BatchAddWrittenResultModeExpand.java | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 src/weaver/formmode/recruit/written/BatchAddWrittenResultModeExpand.java diff --git a/src/weaver/formmode/recruit/written/BatchAddWrittenResultModeExpand.java b/src/weaver/formmode/recruit/written/BatchAddWrittenResultModeExpand.java new file mode 100644 index 0000000..681f211 --- /dev/null +++ b/src/weaver/formmode/recruit/written/BatchAddWrittenResultModeExpand.java @@ -0,0 +1,148 @@ +package weaver.formmode.recruit.written; + +import org.apache.commons.collections.CollectionUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.soa.workflow.request.*; + +import java.util.*; + +/** + *

聚才林招聘

+ * 批量安排笔试推笔试结果 + * + * @author:dxfeng + * @createTime: 2023/09/21 + * @version: 1.0 + */ +public class BatchAddWrittenResultModeExpand extends AbstractModeExpandJavaCodeNew { + private static final String MODE_TABLE_NAME = "uf_jcl_bs"; + + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); + if (requestInfo != null) { + int formModeId = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? )", MODE_TABLE_NAME); + if (rs.next()) { + formModeId = rs.getInt("id"); + } + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + Map mainDataMap = new HashMap<>(); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + // 填充建模数据基本信息 + mainDataMap.put("formmodeid", formModeId); + mainDataMap.put("modedatacreater", requestInfo.getCreatorid()); + String dateTime = DateUtil.getFullDate(); + String[] split = dateTime.split(" "); + mainDataMap.put("modedatacreatedate", split[0]); + mainDataMap.put("modedatacreatetime", split[1]); + mainDataMap.put("modedatamodifier", requestInfo.getCreatorid()); + mainDataMap.put("modedatamodifydatetime", dateTime); + mainDataMap.put("modedatacreatertype", "0"); + + mainDataMap.put("bsapid", requestInfo.getRequestid()); + + List> detailMapList = new ArrayList<>(); + DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo(); + DetailTable detailTable = detailTableInfo.getDetailTable(0); + Row[] rows = detailTable.getRow(); + for (Row row : rows) { + Map detailDataMap = new HashMap<>(mainDataMap); + Cell[] cells = row.getCell(); + for (Cell cell : cells) { + detailDataMap.put(cell.getName(), cell.getValue()); + } + detailMapList.add(detailDataMap); + } + + for (Map detailDataMap : detailMapList) { + List> paramList = new ArrayList<>(); + buildParamList(detailDataMap, paramList); + if (CollectionUtils.isNotEmpty(paramList)) { + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, pcid, ypz, ypzw, bsmc, bssj, bssm, tdsj, bsapid, sjh, yx ) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + for (List objects : paramList) { + String uuid = UUID.randomUUID().toString(); + objects.add(0, uuid); + rs.executeUpdate(insertSql, objects); + refreshRight(rs, uuid, formModeId); + } + } + } + } + } catch (Exception e) { + new BaseBean().writeLog(e); + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + return result; + } + + + /** + * 构建批量插入数据集合 + * + * @param map 表单参数 + * @param paramList 待插入数据集合 + */ + private void buildParamList(Map map, List> paramList) { + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); + + // 表单字段 + // 批次ID + param.add(map.get("pcid")); + // 应聘者 + param.add(map.get("ypz")); + // 应聘职位 + param.add(map.get("ypzw")); + //笔试名称 + param.add(map.get("bsmc")); + // 笔试时间 + param.add(map.get("bssj")); + // 笔试说明 + param.add(map.get("bssm")); + param.add(map.get("tdsj")); + param.add(map.get("bsapid")); + param.add(map.get("sjh")); + param.add(map.get("yx")); + paramList.add(param); + } + + /** + * 权限重构 + * + * @param rs RecordSet + * @param uuid UUID + * @param formModeId 建模ID + */ + private void refreshRight(RecordSet rs, String uuid, int formModeId) { + rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'"); + if (rs.next()) { + //建模数据的id + int bid = Util.getIntValue(rs.getString("id")); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + //新建的时候添加共享 + modeRightInfo.editModeDataShare(1, formModeId, bid); + } + } + +} From c94a4f4fc9f966cd5af2f2644741f2c22c95841f Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 22 Sep 2023 17:06:12 +0800 Subject: [PATCH 11/36] =?UTF-8?q?=E6=89=B9=E9=87=8F=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E9=9D=A2=E8=AF=95=E8=AF=84=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BatchAddInterviewResultModeExpand.java | 174 ++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java diff --git a/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java b/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java new file mode 100644 index 0000000..34d0427 --- /dev/null +++ b/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java @@ -0,0 +1,174 @@ +package weaver.formmode.recruit.interview; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import weaver.common.DateUtil; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.soa.workflow.request.*; + +import java.util.*; + +/** + *

聚才林招聘

+ * 批量安排笔试推笔试结果 + * + * @author:dxfeng + * @createTime: 2023/09/22 + * @version: 1.0 + */ +public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCodeNew { + private static final String MODE_TABLE_NAME = "uf_jcl_ms"; + + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); + if (requestInfo != null) { + int formModeId = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? )", MODE_TABLE_NAME); + if (rs.next()) { + formModeId = rs.getInt("id"); + } + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + Map mainDataMap = new HashMap<>(); + for (Property property : properties) { + mainDataMap.put(property.getName(), parseBlankToNull(property.getValue())); + } + // 填充建模数据基本信息 + mainDataMap.put("formmodeid", formModeId); + mainDataMap.put("modedatacreater", requestInfo.getCreatorid()); + String dateTime = DateUtil.getFullDate(); + String[] split = dateTime.split(" "); + mainDataMap.put("modedatacreatedate", split[0]); + mainDataMap.put("modedatacreatetime", split[1]); + mainDataMap.put("modedatamodifier", requestInfo.getCreatorid()); + mainDataMap.put("modedatamodifydatetime", dateTime); + mainDataMap.put("modedatacreatertype", "0"); + + //mainDataMap.put("bsapid", requestInfo.getRequestid()); + + List> detailMapList = new ArrayList<>(); + DetailTableInfo detailTableInfo = requestInfo.getDetailTableInfo(); + DetailTable detailTable = detailTableInfo.getDetailTable(0); + Row[] rows = detailTable.getRow(); + for (Row row : rows) { + Map detailDataMap = new HashMap<>(mainDataMap); + Cell[] cells = row.getCell(); + for (Cell cell : cells) { + detailDataMap.put(cell.getName(), parseBlankToNull(cell.getValue())); + } + detailMapList.add(detailDataMap); + } + + for (Map detailDataMap : detailMapList) { + List> paramList = new ArrayList<>(); + buildParamList(detailDataMap, paramList); + if (CollectionUtils.isNotEmpty(paramList)) { + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, pcid, ypz, ypzw, tdsj, sjhm, dzyx, tzypz, msfs, mshj, msc, msg, ptmsg, ptmsgsfcymspj, msrq, zt) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; + for (List objects : paramList) { + String uuid = UUID.randomUUID().toString(); + objects.add(0, uuid); + rs.executeUpdate(insertSql, objects); + refreshRight(rs, uuid, formModeId); + } + } + } + } + } catch (Exception e) { + new BaseBean().writeLog(e); + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + return result; + } + + + /** + * 构建批量插入数据集合 + * + * @param map 表单参数 + * @param paramList 待插入数据集合 + */ + private void buildParamList(Map map, List> paramList) { + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); + + // 表单字段 + // 批次ID + param.add(map.get("pcid")); + // 应聘者 + param.add(map.get("ypz")); + // 投递职位 + param.add(map.get("tdzw")); + //投递时间 + param.add(map.get("tdsj")); + // 手机号码 + param.add(map.get("sjhm")); + // 电子邮箱 + param.add(map.get("dzyx")); + // 通知应聘者 + param.add(map.get("tzypz")); + // 面试方式 + param.add(map.get("msfs")); + // 面试环节 + param.add(map.get("mshj")); + // 面试轮次 + param.add(map.get("msc")); + // 面试官 + param.add(map.get("msg")); + // 陪同面试官 + param.add(map.get("ptmsg")); + // 陪同面试官是否参与面试评价 + param.add(map.get("ptmsgsfcymspj")); + // 面试日期 + param.add(map.get("msrq")); + // 面试状态 + param.add(map.get("zt")); + + paramList.add(param); + } + + /** + * 权限重构 + * + * @param rs RecordSet + * @param uuid UUID + * @param formModeId 建模ID + */ + private void refreshRight(RecordSet rs, String uuid, int formModeId) { + rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'"); + if (rs.next()) { + //建模数据的id + int bid = Util.getIntValue(rs.getString("id")); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + //新建的时候添加共享 + modeRightInfo.editModeDataShare(1, formModeId, bid); + } + } + + + /** + * 将空字符串转化为NULL + * + * @param str 字符串 + * @return Object + */ + private Object parseBlankToNull(String str) { + return StringUtils.isBlank(str) ? null : str; + } +} From 4860d8dcc4a6645e551c75f69574f850de8a4be3 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 25 Sep 2023 16:35:14 +0800 Subject: [PATCH 12/36] =?UTF-8?q?=E9=9D=A2=E8=AF=95=E8=AF=84=E4=BB=B7?= =?UTF-8?q?=E5=8D=A1=E7=89=87,=E5=AD=97=E6=AE=B5=E8=B5=8B=E5=80=BC?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicantResumeController.java | 10 ++ .../service/ApplicantResumeService.java | 8 ++ .../impl/ApplicantResumeServiceImpl.java | 131 +++++++++++++++++- .../wrapper/ApplicantResumeWrapper.java | 4 + 4 files changed, 152 insertions(+), 1 deletion(-) diff --git a/src/com/engine/recruit/controller/ApplicantResumeController.java b/src/com/engine/recruit/controller/ApplicantResumeController.java index 01ec0af..bc14aa2 100644 --- a/src/com/engine/recruit/controller/ApplicantResumeController.java +++ b/src/com/engine/recruit/controller/ApplicantResumeController.java @@ -36,4 +36,14 @@ public class ApplicantResumeController { String ids = Util.null2String(params.get("ids")); return new ResponseResult>(user).run(getApplicantResumeWrapper(user)::getApplicantsName, ids); } + + @POST + @Path("/getInterviewInfoById") + @Produces(MediaType.APPLICATION_JSON) + public String getInterviewInfoById(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + String id = Util.null2String(params.get("id")); + return new ResponseResult>(user).run(getApplicantResumeWrapper(user)::getInterviewInfoById, id); + } } diff --git a/src/com/engine/recruit/service/ApplicantResumeService.java b/src/com/engine/recruit/service/ApplicantResumeService.java index 1195d00..981a94d 100644 --- a/src/com/engine/recruit/service/ApplicantResumeService.java +++ b/src/com/engine/recruit/service/ApplicantResumeService.java @@ -20,4 +20,12 @@ public interface ApplicantResumeService { * @return 应聘者姓名 */ Map getApplicantsName(String ids); + + /** + * 根据ID获取面试信息 + * + * @param id + * @return + */ + Map getInterviewInfoById(String id); } diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index 516a399..bc0324d 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -2,7 +2,9 @@ package com.engine.recruit.service.impl; import com.engine.core.impl.Service; import com.engine.recruit.service.ApplicantResumeService; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import weaver.hrm.resource.ResourceComInfo; import java.util.ArrayList; import java.util.HashMap; @@ -17,7 +19,7 @@ import java.util.Map; public class ApplicantResumeServiceImpl extends Service implements ApplicantResumeService { @Override public Map getApplicantsName(String ids) { - Map returnMap = new HashMap<>(); + Map returnMap = new HashMap<>(1); RecordSet rs = new RecordSet(); String[] split = ids.split(","); List> list = new ArrayList<>(); @@ -33,4 +35,131 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu returnMap.put("rows", list); return returnMap; } + + @Override + public Map getInterviewInfoById(String id) { + Map returnMap = new HashMap<>(16); + String sql = "select a.ypz,b.xm,a.ypzw,b.tdsj,b.sjhm,b.dzyx,a.msfs,a.mshj ,a.msc,a.msg ,a.ptmsg,a.msrq,a.msdd ,a.msfkr from uf_jcl_ms a inner join uf_jcl_yppc b on a.ypz = b.id where a.id = ?"; + RecordSet rs = new RecordSet(); + rs.executeQuery(sql, id); + if (rs.next()) { + // 应聘者 + returnMap.put("ypz", createApplicantBrowserMap(rs.getString("ypz"), rs.getString("xm"))); + // 应聘职位 + returnMap.put("ypzw", createAppliedPositionBrowserMap(rs.getString("ypzw"))); + // 投递时间 + returnMap.put("tdsj", createApplicantBrowserMap(rs.getString("tdsj"))); + // 手机号码 + returnMap.put("sjhm", createApplicantBrowserMap(rs.getString("sjhm"))); + // 电子邮箱 + returnMap.put("dzyx", createApplicantBrowserMap(rs.getString("dzyx"))); + // 面试方式 + returnMap.put("msfs", createApplicantBrowserMap(rs.getString("msfs"))); + // 面试环节 + returnMap.put("mshj", createApplicantBrowserMap(rs.getString("mshj"))); + // 面试轮次 + returnMap.put("msc", createApplicantBrowserMap(rs.getString("msc"))); + // 面试官 + returnMap.put("msg", createResourceBrowserMap(rs.getString("msg"))); + // 陪同面试官 + returnMap.put("ptmsg", createResourceBrowserMap(rs.getString("ptmsg"))); + // 面试日期 + returnMap.put("msrq", createApplicantBrowserMap(rs.getString("msrq"))); + // 面试地址 + returnMap.put("msdd", createApplicantBrowserMap(rs.getString("msdd"))); + } + return returnMap; + } + + /** + * 构建普通数据格式 + * + * @param value + * @return + */ + private Map createApplicantBrowserMap(String value) { + if (StringUtils.isBlank(value)) { + return null; + } + Map browserMap = new HashMap<>(1); + browserMap.put("value", value); + return browserMap; + } + + /** + * 构建应聘者浏览按钮值 + * + * @param id + * @param name + * @return + */ + private Map createApplicantBrowserMap(String id, String name) { + Map browserMap = new HashMap<>(2); + if (StringUtils.isBlank(id)) { + return browserMap; + } + browserMap.put("value", id); + List> objList = new ArrayList<>(); + Map obj = new HashMap<>(2); + obj.put("id", id); + obj.put("name", name); + objList.add(obj); + browserMap.put("specialobj", objList); + return browserMap; + } + + /** + * 构建应聘职位浏览按钮 + * + * @param id + * @return + */ + private Map createAppliedPositionBrowserMap(String id) { + Map browserMap = new HashMap<>(2); + if (StringUtils.isBlank(id)) { + return browserMap; + } + browserMap.put("value", id); + RecordSet rs = new RecordSet(); + rs.executeQuery("select zpzwmc from uf_jcl_zp_zpzw where id = ?", id); + if (rs.next()) { + List> objList = new ArrayList<>(); + Map obj = new HashMap<>(2); + obj.put("id", id); + obj.put("name", rs.getString("zpzwmc")); + objList.add(obj); + browserMap.put("specialobj", objList); + } + return browserMap; + } + + /** + * 构建人员浏览按钮值 + * + * @param ids + * @return + */ + private Map createResourceBrowserMap(String ids) { + Map browserMap = new HashMap<>(2); + if (StringUtils.isBlank(ids)) { + return browserMap; + } + browserMap.put("value", ids); + List> objList = new ArrayList<>(); + String[] split = ids.split(","); + try { + ResourceComInfo resourceComInfo = new ResourceComInfo(); + for (String s : split) { + Map obj = new HashMap<>(2); + obj.put("id", s); + obj.put("name", resourceComInfo.getLastname(s)); + objList.add(obj); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + browserMap.put("specialobj", objList); + return browserMap; + + } } diff --git a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java index 7c482d4..5c2bb58 100644 --- a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java +++ b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java @@ -21,4 +21,8 @@ public class ApplicantResumeWrapper extends Service { public Map getApplicantsName(String ids) { return getApplicantResumeService(user).getApplicantsName(ids); } + + public Map getInterviewInfoById(String id) { + return getApplicantResumeService(user).getInterviewInfoById(id); + } } From e60894828d0c20c57bc344d73cccfeb498ea93af Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 25 Sep 2023 16:35:33 +0800 Subject: [PATCH 13/36] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=AE=89=E6=8E=92?= =?UTF-8?q?=E9=9D=A2=E8=AF=95=EF=BC=8C=E5=88=9D=E5=A7=8B=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=B5=8B=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interview/BatchAddInterviewResultModeExpand.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java b/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java index 34d0427..a384523 100644 --- a/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java +++ b/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java @@ -14,7 +14,7 @@ import java.util.*; /** *

聚才林招聘

- * 批量安排笔试推笔试结果 + * 批量面试推送面试评价 * * @author:dxfeng * @createTime: 2023/09/22 @@ -136,8 +136,8 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod param.add(map.get("ptmsgsfcymspj")); // 面试日期 param.add(map.get("msrq")); - // 面试状态 - param.add(map.get("zt")); + // 面试状态,默认值:待面试 + param.add("0"); paramList.add(param); } From 31e67ea0218207009f78a1dbf49099c65712f4c9 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 25 Sep 2023 16:35:58 +0800 Subject: [PATCH 14/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=B3=E8=81=94=E6=8C=89=E9=92=AE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RecruitFlowController.java | 12 ++++ .../controller/RecruitFlowController.java | 37 +++++++++++ .../entity/recruitflow/po/RecruitButton.java | 26 ++++++++ .../recruit/service/RecruitFlowService.java | 21 +++++++ .../service/impl/RecruitFlowServiceImpl.java | 61 +++++++++++++++++++ .../recruit/wrapper/RecruitFlowWrapper.java | 24 ++++++++ 6 files changed, 181 insertions(+) create mode 100644 src/com/api/recruit/controller/RecruitFlowController.java create mode 100644 src/com/engine/recruit/controller/RecruitFlowController.java create mode 100644 src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java create mode 100644 src/com/engine/recruit/service/RecruitFlowService.java create mode 100644 src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java create mode 100644 src/com/engine/recruit/wrapper/RecruitFlowWrapper.java diff --git a/src/com/api/recruit/controller/RecruitFlowController.java b/src/com/api/recruit/controller/RecruitFlowController.java new file mode 100644 index 0000000..c1778b9 --- /dev/null +++ b/src/com/api/recruit/controller/RecruitFlowController.java @@ -0,0 +1,12 @@ +package com.api.recruit.controller; + +import javax.ws.rs.Path; + +/** + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +@Path("/jcl/recruit/recruitflow") +public class RecruitFlowController extends com.engine.recruit.controller.RecruitFlowController{ +} diff --git a/src/com/engine/recruit/controller/RecruitFlowController.java b/src/com/engine/recruit/controller/RecruitFlowController.java new file mode 100644 index 0000000..3342856 --- /dev/null +++ b/src/com/engine/recruit/controller/RecruitFlowController.java @@ -0,0 +1,37 @@ +package com.engine.recruit.controller; + +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.recruit.util.ResponseResult; +import com.engine.recruit.wrapper.RecruitFlowWrapper; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +public class RecruitFlowController { + public RecruitFlowWrapper getRecruitFlowWrapper(User user) { + return ServiceUtil.getService(RecruitFlowWrapper.class, user); + } + + @POST + @Path("/getButtonList") + @Produces(MediaType.APPLICATION_JSON) + public String getButtonList(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getRecruitFlowWrapper(user)::getButtonList, params); + } +} diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java new file mode 100644 index 0000000..1556f2a --- /dev/null +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java @@ -0,0 +1,26 @@ +package com.engine.recruit.entity.recruitflow.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 招聘流程按钮实体类 + * + * @author:dxfeng + * @createTime: 2023/09/25 + * @version: 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class RecruitButton { + private String buttonName; + private String tabName; + private String tabLink; + private String buttonKey; + private String buttonAction; + private Integer orderNum; +} diff --git a/src/com/engine/recruit/service/RecruitFlowService.java b/src/com/engine/recruit/service/RecruitFlowService.java new file mode 100644 index 0000000..0463e0f --- /dev/null +++ b/src/com/engine/recruit/service/RecruitFlowService.java @@ -0,0 +1,21 @@ +package com.engine.recruit.service; + +import java.util.Map; + +/** + *

聚才林招聘

+ * 招聘流程接口 + * + * @author:dxfeng + * @createTime: 2023/09/22 + * @version: 1.0 + */ +public interface RecruitFlowService { + /** + * 获取当前阶段操作按钮 + * + * @param params 参数 + * @return 操作按钮 + */ + Map getButtonList(Map params); +} diff --git a/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java new file mode 100644 index 0000000..147d8c3 --- /dev/null +++ b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java @@ -0,0 +1,61 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.entity.recruitflow.po.RecruitButton; +import com.engine.recruit.service.RecruitFlowService; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/22 + * @version: 1.0 + */ +public class RecruitFlowServiceImpl extends Service implements RecruitFlowService { + @Override + public Map getButtonList(Map params) { + Map returnMap = new HashMap<>(); + String modeId = Util.null2String(params.get("modeId")); + String formId = Util.null2String(params.get("formId")); + String billId = Util.null2String(params.get("billId")); + + // 当前阶段 + String stageId = Util.null2String(params.get("stageId")); + + //TODO 查询对应的招聘流程 + int zplcId = 2; + List buttonList = new ArrayList<>(); + RecordSet rs = new RecordSet(); + if (StringUtils.isBlank(stageId)) { + // 查询开始环节 + rs.executeQuery("select id from uf_jcl_zpjdsz where zplc = ? and hj = 0", zplcId); + if (rs.next()) { + stageId = rs.getString("id"); + } + if (StringUtils.isBlank(stageId)) { + throw new RuntimeException("未找到对应招聘阶段"); + } + } + rs.executeQuery("select a.zdyxsmc as buttonName, a.tzymbt as tabName, a.tzymdz as tabLink, a.zssx as orderNum, b.anbs as buttonKey, b.andz as buttonAction from uf_jcl_zpjdsz_dt1 a inner join uf_jcl_lcczan b on a.czan = b.id where a.sfqy = 0 and mainid = ? order by zssx", stageId); + while (rs.next()) { + buttonList.add(RecruitButton.builder() + .buttonName(rs.getString("buttonName")) + .tabName(rs.getString("tabName")) + .tabLink(rs.getString("tabLink")) + .buttonKey(rs.getString("buttonKey")) + .buttonAction(rs.getString("buttonAction")) + .orderNum(rs.getInt("orderNum")) + .build()); + } + + // 当前阶段所有按钮信息 + returnMap.put("buttonList", buttonList); + return returnMap; + } +} diff --git a/src/com/engine/recruit/wrapper/RecruitFlowWrapper.java b/src/com/engine/recruit/wrapper/RecruitFlowWrapper.java new file mode 100644 index 0000000..7393ca3 --- /dev/null +++ b/src/com/engine/recruit/wrapper/RecruitFlowWrapper.java @@ -0,0 +1,24 @@ +package com.engine.recruit.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitFlowService; +import com.engine.recruit.service.impl.RecruitFlowServiceImpl; +import weaver.hrm.User; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/20 + * @version: 1.0 + */ +public class RecruitFlowWrapper extends Service { + private RecruitFlowService getRecruitFlowService(User user) { + return ServiceUtil.getService(RecruitFlowServiceImpl.class, user); + } + + public Map getButtonList(Map params) { + return getRecruitFlowService(user).getButtonList(params); + } +} From cb002def30867940daebb1daadf397bd32462238 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 25 Sep 2023 16:57:28 +0800 Subject: [PATCH 15/36] =?UTF-8?q?modeexpand=E7=B1=BB,class=E5=8C=85?= =?UTF-8?q?=E5=90=8D=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => modeexpand}/demandmanage/RecruitFinishModeExpand.java | 2 +- .../{ => modeexpand}/demandmanage/RecruitStartModeExpand.java | 2 +- .../{ => modeexpand}/demandmanage/RecruitStopModeExpand.java | 2 +- .../departmentscreening/BatchAddDeptScreeningModeExpand.java | 2 +- .../departmentscreening/SingleAddDeptScreeningModeExpand.java | 2 +- .../interview/BatchAddInterviewResultModeExpand.java | 2 +- .../{ => modeexpand}/process/RelatedStageModeExpand.java | 2 +- .../written/BatchAddWrittenResultModeExpand.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) rename src/weaver/formmode/recruit/{ => modeexpand}/demandmanage/RecruitFinishModeExpand.java (97%) rename src/weaver/formmode/recruit/{ => modeexpand}/demandmanage/RecruitStartModeExpand.java (97%) rename src/weaver/formmode/recruit/{ => modeexpand}/demandmanage/RecruitStopModeExpand.java (97%) rename src/weaver/formmode/recruit/{ => modeexpand}/departmentscreening/BatchAddDeptScreeningModeExpand.java (99%) rename src/weaver/formmode/recruit/{ => modeexpand}/departmentscreening/SingleAddDeptScreeningModeExpand.java (98%) rename src/weaver/formmode/recruit/{ => modeexpand}/interview/BatchAddInterviewResultModeExpand.java (99%) rename src/weaver/formmode/recruit/{ => modeexpand}/process/RelatedStageModeExpand.java (99%) rename src/weaver/formmode/recruit/{ => modeexpand}/written/BatchAddWrittenResultModeExpand.java (99%) diff --git a/src/weaver/formmode/recruit/demandmanage/RecruitFinishModeExpand.java b/src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitFinishModeExpand.java similarity index 97% rename from src/weaver/formmode/recruit/demandmanage/RecruitFinishModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitFinishModeExpand.java index 93506f8..10f73b4 100644 --- a/src/weaver/formmode/recruit/demandmanage/RecruitFinishModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitFinishModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.demandmanage; +package weaver.formmode.recruit.modeexpand.demandmanage; import com.engine.recruit.enums.RecruitStatusEnum; import weaver.common.DateUtil; diff --git a/src/weaver/formmode/recruit/demandmanage/RecruitStartModeExpand.java b/src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitStartModeExpand.java similarity index 97% rename from src/weaver/formmode/recruit/demandmanage/RecruitStartModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitStartModeExpand.java index f1c0833..d7861da 100644 --- a/src/weaver/formmode/recruit/demandmanage/RecruitStartModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitStartModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.demandmanage; +package weaver.formmode.recruit.modeexpand.demandmanage; import com.engine.recruit.enums.RecruitStatusEnum; import weaver.conn.RecordSet; diff --git a/src/weaver/formmode/recruit/demandmanage/RecruitStopModeExpand.java b/src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitStopModeExpand.java similarity index 97% rename from src/weaver/formmode/recruit/demandmanage/RecruitStopModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitStopModeExpand.java index 1f3fcc6..4ff3f5a 100644 --- a/src/weaver/formmode/recruit/demandmanage/RecruitStopModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/demandmanage/RecruitStopModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.demandmanage; +package weaver.formmode.recruit.modeexpand.demandmanage; import com.engine.recruit.enums.RecruitStatusEnum; import weaver.common.DateUtil; diff --git a/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java similarity index 99% rename from src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java index 68d66e4..182614e 100644 --- a/src/weaver/formmode/recruit/departmentscreening/BatchAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.departmentscreening; +package weaver.formmode.recruit.modeexpand.departmentscreening; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; diff --git a/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java similarity index 98% rename from src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java index 8552b1c..e68d672 100644 --- a/src/weaver/formmode/recruit/departmentscreening/SingleAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.departmentscreening; +package weaver.formmode.recruit.modeexpand.departmentscreening; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; diff --git a/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java similarity index 99% rename from src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java index a384523..b8efa5e 100644 --- a/src/weaver/formmode/recruit/interview/BatchAddInterviewResultModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.interview; +package weaver.formmode.recruit.modeexpand.interview; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; diff --git a/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java similarity index 99% rename from src/weaver/formmode/recruit/process/RelatedStageModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java index 3cf56f6..9a44dc5 100644 --- a/src/weaver/formmode/recruit/process/RelatedStageModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.process; +package weaver.formmode.recruit.modeexpand.process; import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; diff --git a/src/weaver/formmode/recruit/written/BatchAddWrittenResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeExpand.java similarity index 99% rename from src/weaver/formmode/recruit/written/BatchAddWrittenResultModeExpand.java rename to src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeExpand.java index 681f211..50cb237 100644 --- a/src/weaver/formmode/recruit/written/BatchAddWrittenResultModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeExpand.java @@ -1,4 +1,4 @@ -package weaver.formmode.recruit.written; +package weaver.formmode.recruit.modeexpand.written; import org.apache.commons.collections.CollectionUtils; import weaver.common.DateUtil; From 3603341c8afbe6579b63657ca5abeb41dfac870b Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 26 Sep 2023 15:21:22 +0800 Subject: [PATCH 16/36] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92-?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=AE=89=E6=8E=92=E3=80=81=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E9=9D=A2=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB-INF/prop/jclRecruit.properties | 6 + .../BatchAddInterviewResultModeExpand.java | 112 ++++++++++---- .../CancelInterviewResultModeExpand.java | 137 ++++++++++++++++++ .../modeexpand/util/RecruitModeUtil.java | 70 +++++++++ 4 files changed, 293 insertions(+), 32 deletions(-) create mode 100644 WEB-INF/prop/jclRecruit.properties create mode 100644 src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java create mode 100644 src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java diff --git a/WEB-INF/prop/jclRecruit.properties b/WEB-INF/prop/jclRecruit.properties new file mode 100644 index 0000000..92a968d --- /dev/null +++ b/WEB-INF/prop/jclRecruit.properties @@ -0,0 +1,6 @@ +#面试相关消息提醒,消息来源 +INTERVIEW_MESSAGE_TYPE=85 +#添加面试消息提醒表弟 +INTERVIEW_ADD_MESSAGE_TITLE=面试安排提醒 +#取消面试消息提醒表弟 +INTERVIEW_CANCEL_MESSAGE_TITLE=取消面试提醒 \ No newline at end of file diff --git a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java index b8efa5e..d03d27e 100644 --- a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java @@ -5,11 +5,13 @@ import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; import weaver.conn.RecordSet; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; import weaver.soa.workflow.request.*; +import java.io.UnsupportedEncodingException; import java.util.*; /** @@ -23,6 +25,22 @@ import java.util.*; public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCodeNew { private static final String MODE_TABLE_NAME = "uf_jcl_ms"; + /** + * 消息来源ID + */ + private final String messageType; + + /** + * 消息提醒标题 + */ + private final String title; + + public BatchAddInterviewResultModeExpand() throws UnsupportedEncodingException { + super(); + messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); + title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE"); + } + @Override public Map doModeExpand(Map param) { Map result = new HashMap<>(); @@ -30,8 +48,13 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo"); if (requestInfo != null) { int formModeId = -1; + int formId = -1; RecordSet rs = new RecordSet(); - rs.executeQuery("select id from modeinfo where formid =( select id from workflow_bill where tablename = ? )", MODE_TABLE_NAME); + rs.executeQuery("select id from workflow_bill where tablename = ?", MODE_TABLE_NAME); + if (rs.next()) { + formId = rs.getInt("id"); + } + rs.executeQuery("select id from modeinfo where formid =?", formId); if (rs.next()) { formModeId = rs.getInt("id"); } @@ -67,19 +90,40 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod detailMapList.add(detailDataMap); } + String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, pcid, ypz, ypzw, tdsj, sjhm, dzyx, tzypz, msfs, mshj, msc, msg, ptmsg, ptmsgsfcymspj, msrq, zt) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; + StringBuilder msgBuilder = new StringBuilder(); for (Map detailDataMap : detailMapList) { - List> paramList = new ArrayList<>(); - buildParamList(detailDataMap, paramList); + List paramList = buildParamList(detailDataMap); if (CollectionUtils.isNotEmpty(paramList)) { - String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreatertype, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, pcid, ypz, ypzw, tdsj, sjhm, dzyx, tzypz, msfs, mshj, msc, msg, ptmsg, ptmsgsfcymspj, msrq, zt) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"; - for (List objects : paramList) { - String uuid = UUID.randomUUID().toString(); - objects.add(0, uuid); - rs.executeUpdate(insertSql, objects); - refreshRight(rs, uuid, formModeId); + String uuid = UUID.randomUUID().toString(); + paramList.add(0, uuid); + rs.executeUpdate(insertSql, paramList); + rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'"); + if (rs.next()) { + // 权限重构 + int bid = Util.getIntValue(rs.getString("id")); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.setNewRight(true); + modeRightInfo.editModeDataShare(1, formModeId, bid); + getApplicantsInfo(msgBuilder, Util.null2String(detailDataMap.get("ypz")), Util.null2String(detailDataMap.get("tdzw"))); } } } + if (StringUtils.isNotBlank(msgBuilder)) { + msgBuilder.insert(0, RecruitModeUtil.getResourceNames(requestInfo.getCreatorid()) + "安排了一场面试
"); + 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) { new BaseBean().writeLog(e); @@ -93,10 +137,9 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod /** * 构建批量插入数据集合 * - * @param map 表单参数 - * @param paramList 待插入数据集合 + * @param map 表单参数 */ - private void buildParamList(Map map, List> paramList) { + private List buildParamList(Map map) { List param = new ArrayList<>(); // 填充建模表相关字段 param.add(map.get("modedatacreatertype")); @@ -139,26 +182,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod // 面试状态,默认值:待面试 param.add("0"); - paramList.add(param); - } - - /** - * 权限重构 - * - * @param rs RecordSet - * @param uuid UUID - * @param formModeId 建模ID - */ - private void refreshRight(RecordSet rs, String uuid, int formModeId) { - rs.executeQuery("select id from " + MODE_TABLE_NAME + " where modeuuid='" + uuid + "'"); - if (rs.next()) { - //建模数据的id - int bid = Util.getIntValue(rs.getString("id")); - ModeRightInfo modeRightInfo = new ModeRightInfo(); - modeRightInfo.setNewRight(true); - //新建的时候添加共享 - modeRightInfo.editModeDataShare(1, formModeId, bid); - } + return param; } @@ -171,4 +195,28 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod private Object parseBlankToNull(String str) { return StringUtils.isBlank(str) ? null : str; } + + + /** + * 获取应聘者信息 + * + * @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("
"); + } } diff --git a/src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java new file mode 100644 index 0000000..f3c2623 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java @@ -0,0 +1,137 @@ +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; + } +} + diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java new file mode 100644 index 0000000..4d67e09 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java @@ -0,0 +1,70 @@ +package weaver.formmode.recruit.modeexpand.util; + +import com.cloudstore.dev.api.bean.MessageBean; +import com.cloudstore.dev.api.bean.MessageType; +import com.cloudstore.dev.api.util.Util_Message; +import weaver.general.BaseBean; +import weaver.hrm.resource.ResourceComInfo; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Set; + +/** + * @author:dxfeng + * @createTime: 2023/09/26 + * @version: 1.0 + */ +public class RecruitModeUtil { + /** + * 消息推送 + * + * @param messageType 消息来源 + * @param title 消息标题 + * @param context 消息内容 + * @param userIdList 接收人ID集合 + * @param creater 消息创建者 + */ + public static void messagePush(String messageType, String title, String context, Set userIdList, Integer creater) { + MessageType message = MessageType.newInstance(Integer.parseInt(messageType)); + try { + MessageBean messageBean = Util_Message.createMessage(message, userIdList, title, context, "", ""); + messageBean.setCreater(creater); + Util_Message.store(messageBean); + } catch (IOException e) { + new BaseBean().writeLog(e); + e.printStackTrace(); + } + } + + /** + * 获取人员姓名 + * + * @param ids 人员ID + * @return 人员姓名 + */ + public static String getResourceNames(String ids) { + try { + return new ResourceComInfo().getLastnames(ids); + } catch (Exception e) { + new BaseBean().writeLog(e); + throw new RuntimeException(e); + } + } + + /** + * 获取聚才林招聘相关配置文件 + * + * @param key + * @return + */ + public static String getRecruitPropValue(String key) { + String value = new BaseBean().getPropValue("jclRecruit", key); + try { + value = new String(value.getBytes("ISO-8859-1"), "utf-8"); + } catch (UnsupportedEncodingException e) { + new BaseBean().writeLog(e); + } + return value; + } +} From f2a5ade9ad8fc4e57ad608f318490b5d9b44eb02 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 26 Sep 2023 15:21:59 +0800 Subject: [PATCH 17/36] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E6=98=BE=E7=A4=BA=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicantResumeController.java | 9 +++++++++ .../service/ApplicantResumeService.java | 10 +++++++++- .../impl/ApplicantResumeServiceImpl.java | 20 +++++++++++++++++++ .../wrapper/ApplicantResumeWrapper.java | 4 ++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/com/engine/recruit/controller/ApplicantResumeController.java b/src/com/engine/recruit/controller/ApplicantResumeController.java index bc14aa2..5b4ac33 100644 --- a/src/com/engine/recruit/controller/ApplicantResumeController.java +++ b/src/com/engine/recruit/controller/ApplicantResumeController.java @@ -46,4 +46,13 @@ public class ApplicantResumeController { String id = Util.null2String(params.get("id")); return new ResponseResult>(user).run(getApplicantResumeWrapper(user)::getInterviewInfoById, id); } + + @POST + @Path("/getDisplayLayoutId") + @Produces(MediaType.APPLICATION_JSON) + public String getDisplayLayoutId(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::getDisplayLayoutId, params); + } } diff --git a/src/com/engine/recruit/service/ApplicantResumeService.java b/src/com/engine/recruit/service/ApplicantResumeService.java index 981a94d..791b67a 100644 --- a/src/com/engine/recruit/service/ApplicantResumeService.java +++ b/src/com/engine/recruit/service/ApplicantResumeService.java @@ -25,7 +25,15 @@ public interface ApplicantResumeService { * 根据ID获取面试信息 * * @param id - * @return + * @return 面试信息 */ Map getInterviewInfoById(String id); + + /** + * 获取编辑布局对应的显示布局ID + * + * @param params 入参 + * @return 显示布局ID + */ + Map getDisplayLayoutId(Map params); } diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index bc0324d..bd811a0 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -4,6 +4,7 @@ import com.engine.core.impl.Service; import com.engine.recruit.service.ApplicantResumeService; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import weaver.general.Util; import weaver.hrm.resource.ResourceComInfo; import java.util.ArrayList; @@ -71,6 +72,25 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu return returnMap; } + @Override + public Map getDisplayLayoutId(Map params) { + Map returnMap = new HashMap<>(); + String layoutId = Util.null2String(params.get("layoutid")); + String modeId = Util.null2String(params.get("modeId")); + returnMap.put("layoutId", layoutId); + RecordSet rs = new RecordSet(); + rs.executeQuery("select layoutname from modehtmllayout where modeid = ? and id = ?", modeId, layoutId); + if (rs.next()) { + String layoutName = rs.getString("layoutname"); + // 获取相同名称的显示布局ID + rs.executeQuery("select id from modehtmllayout where type = 0 and modeid = ? and layoutname =?", modeId, layoutName); + if (rs.next()) { + returnMap.put("layoutId", rs.getString("id")); + } + } + return returnMap; + } + /** * 构建普通数据格式 * diff --git a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java index 5c2bb58..3889305 100644 --- a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java +++ b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java @@ -25,4 +25,8 @@ public class ApplicantResumeWrapper extends Service { public Map getInterviewInfoById(String id) { return getApplicantResumeService(user).getInterviewInfoById(id); } + + public Map getDisplayLayoutId(Map params) { + return getApplicantResumeService(user).getDisplayLayoutId(params); + } } From df3b429f07a3afa064bbdff75e8e9811551b47bf Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 26 Sep 2023 18:50:30 +0800 Subject: [PATCH 18/36] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=B0=83=E6=95=B4?= =?UTF-8?q?=EF=BC=8C=E9=80=9A=E7=94=A8=E6=96=B9=E6=B3=95=E6=8A=BD=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/RecruitFlowServiceImpl.java | 2 +- .../BatchAddInterviewResultModeExpand.java | 20 ++------ .../process/RelatedStageModeExpand.java | 47 ++++++++++--------- .../modeexpand/util/RecruitModeUtil.java | 12 +++++ .../action/RecruitFlowToModeAction.java | 13 +---- 5 files changed, 44 insertions(+), 50 deletions(-) diff --git a/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java index 147d8c3..94f5830 100644 --- a/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java +++ b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java @@ -29,7 +29,7 @@ public class RecruitFlowServiceImpl extends Service implements RecruitFlowServic String stageId = Util.null2String(params.get("stageId")); //TODO 查询对应的招聘流程 - int zplcId = 2; + int zplcId = 3; List buttonList = new ArrayList<>(); RecordSet rs = new RecordSet(); if (StringUtils.isBlank(stageId)) { diff --git a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java index d03d27e..bc094f0 100644 --- a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java @@ -62,7 +62,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod Property[] properties = mainTableInfo.getProperty(); Map mainDataMap = new HashMap<>(); for (Property property : properties) { - mainDataMap.put(property.getName(), parseBlankToNull(property.getValue())); + mainDataMap.put(property.getName(), RecruitModeUtil.parseBlankToNull(property.getValue())); } // 填充建模数据基本信息 mainDataMap.put("formmodeid", formModeId); @@ -85,7 +85,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod Map detailDataMap = new HashMap<>(mainDataMap); Cell[] cells = row.getCell(); for (Cell cell : cells) { - detailDataMap.put(cell.getName(), parseBlankToNull(cell.getValue())); + detailDataMap.put(cell.getName(), RecruitModeUtil.parseBlankToNull(cell.getValue())); } detailMapList.add(detailDataMap); } @@ -105,7 +105,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod ModeRightInfo modeRightInfo = new ModeRightInfo(); modeRightInfo.setNewRight(true); modeRightInfo.editModeDataShare(1, formModeId, bid); - getApplicantsInfo(msgBuilder, Util.null2String(detailDataMap.get("ypz")), Util.null2String(detailDataMap.get("tdzw"))); + getApplicantsInfo(msgBuilder, Util.null2String(detailDataMap.get("ypz")), Util.null2String(detailDataMap.get("ypzw"))); } } } @@ -156,8 +156,8 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod // 应聘者 param.add(map.get("ypz")); // 投递职位 - param.add(map.get("tdzw")); - //投递时间 + param.add(map.get("ypzw")); + // 投递时间 param.add(map.get("tdsj")); // 手机号码 param.add(map.get("sjhm")); @@ -186,16 +186,6 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod } - /** - * 将空字符串转化为NULL - * - * @param str 字符串 - * @return Object - */ - private Object parseBlankToNull(String str) { - return StringUtils.isBlank(str) ? null : str; - } - /** * 获取应聘者信息 diff --git a/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java index 9a44dc5..9ae018c 100644 --- a/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java @@ -4,6 +4,7 @@ import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; import weaver.conn.RecordSet; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; @@ -105,23 +106,23 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { */ private void insertMainTableData(String billId, String processId, String insertSql, List paramsList) { String uuid = UUID.randomUUID().toString(); - ArrayList insertList = new ArrayList<>(paramsList); + ArrayList insertList = new ArrayList<>(paramsList); insertList.add(0, uuid); RecordSet rs = new RecordSet(); rs.executeQuery("select * from uf_jcl_zpjdsz where id = ?", processId); if (rs.next()) { String formModeId = rs.getString("formmodeid"); insertList.add(formModeId); - insertList.add(rs.getString("jdmc")); - insertList.add(rs.getString("jdms")); - insertList.add(rs.getString("jdlx")); - insertList.add(rs.getString("hj")); - insertList.add(rs.getString("sfqy")); - insertList.add(rs.getString("zssx")); + insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jdmc"))); + insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jdms"))); + insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jdlx"))); + insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("hj"))); + insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("sfqy"))); + insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zssx"))); // zpjd - insertList.add(processId); + insertList.add(RecruitModeUtil.parseBlankToNull(processId)); // zplc - insertList.add(billId); + insertList.add(RecruitModeUtil.parseBlankToNull(billId)); // 插入主表数据 rs.executeUpdate(insertSql, insertList); refreshRight(uuid, formModeId, processId); @@ -147,35 +148,35 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { // 插入明细表数据 rs.executeQuery("select * from " + MODE_TABLE_NAME_DT1 + " where mainid = ? ", processId); - List> insertList = new ArrayList<>(); + List> insertList = new ArrayList<>(); while (rs.next()) { - List paramList = new ArrayList<>(); + List paramList = new ArrayList<>(); // mainid paramList.add(bid); - paramList.add(rs.getString("czan")); - paramList.add(rs.getString("zdyxsmc")); - paramList.add(rs.getString("sfqy")); - paramList.add(rs.getString("tzymbt")); - paramList.add(rs.getString("tzymdz")); - paramList.add(rs.getString("zssx")); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("czan"))); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zdyxsmc"))); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("sfqy"))); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("tzymbt"))); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("tzymdz"))); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zssx"))); insertList.add(paramList); } - for (List list : insertList) { + for (List list : insertList) { rs.executeUpdate("insert into " + MODE_TABLE_NAME_DT1 + " (mainid, czan, zdyxsmc, sfqy, tzymbt, tzymdz, zssx) values (?, ?, ?, ?, ?, ?, ?)", list); } insertList = new ArrayList<>(); rs.executeQuery("select * from " + MODE_TABLE_NAME_DT2 + " where mainid = ? ", processId); while (rs.next()) { - List paramList = new ArrayList<>(); + List paramList = new ArrayList<>(); // mainid paramList.add(bid); - paramList.add(rs.getString("ymbt")); - paramList.add(rs.getString("ymdz")); - paramList.add(rs.getString("zssx")); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("ymbt"))); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("ymdz"))); + paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zssx"))); insertList.add(paramList); } - for (List list : insertList) { + for (List list : insertList) { rs.executeUpdate("insert into " + MODE_TABLE_NAME_DT2 + " (mainid, ymbt, ymdz, zssx) values (?, ?, ?, ?)", list); } } diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java index 4d67e09..938b47e 100644 --- a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java +++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java @@ -3,6 +3,7 @@ package weaver.formmode.recruit.modeexpand.util; import com.cloudstore.dev.api.bean.MessageBean; import com.cloudstore.dev.api.bean.MessageType; import com.cloudstore.dev.api.util.Util_Message; +import org.apache.commons.lang3.StringUtils; import weaver.general.BaseBean; import weaver.hrm.resource.ResourceComInfo; @@ -67,4 +68,15 @@ public class RecruitModeUtil { } return value; } + + /** + * 转换空字符串为null + * + * @param str 字符串 + * @return 转换后的字符串 + */ + public static Object parseBlankToNull(String str) { + return StringUtils.isBlank(str) ? null : str; + } + } diff --git a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java index e79f6fd..9317e18 100644 --- a/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java +++ b/src/weaver/interfaces/recruit/action/RecruitFlowToModeAction.java @@ -4,10 +4,10 @@ import com.cloudstore.dev.api.bean.MessageBean; import com.cloudstore.dev.api.bean.MessageType; import com.cloudstore.dev.api.util.Util_Message; import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; import weaver.conn.RecordSet; import weaver.conn.RecordSetTrans; +import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; @@ -87,7 +87,7 @@ public class RecruitFlowToModeAction implements Action { detailMap.putAll(mainMap); Cell[] cells = row.getCell(); for (Cell cell : cells) { - detailMap.put(cell.getName(), parseBlankToNull(cell.getValue())); + detailMap.put(cell.getName(), RecruitModeUtil.parseBlankToNull(cell.getValue())); } insertList.add(detailMap); } @@ -205,15 +205,6 @@ public class RecruitFlowToModeAction implements Action { return param; } - /** - * 将空字符串转化为NULL - * - * @param str 字符串 - * @return Object - */ - private Object parseBlankToNull(String str) { - return StringUtils.isBlank(str) ? null : str; - } /** * 权限重构 From 5467e10277611b978a10b5745030b1efd7ece5d5 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 27 Sep 2023 09:15:08 +0800 Subject: [PATCH 19/36] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MessageTemplateController.java | 12 ++++++ .../controller/MessageTemplateController.java | 37 +++++++++++++++++++ .../service/MessageTemplateService.java | 22 +++++++++++ .../impl/MessageTemplateServiceImpl.java | 32 ++++++++++++++++ .../wrapper/MessageTemplateWrapper.java | 24 ++++++++++++ 5 files changed, 127 insertions(+) create mode 100644 src/com/api/recruit/controller/MessageTemplateController.java create mode 100644 src/com/engine/recruit/controller/MessageTemplateController.java create mode 100644 src/com/engine/recruit/service/MessageTemplateService.java create mode 100644 src/com/engine/recruit/service/impl/MessageTemplateServiceImpl.java create mode 100644 src/com/engine/recruit/wrapper/MessageTemplateWrapper.java diff --git a/src/com/api/recruit/controller/MessageTemplateController.java b/src/com/api/recruit/controller/MessageTemplateController.java new file mode 100644 index 0000000..68a7d17 --- /dev/null +++ b/src/com/api/recruit/controller/MessageTemplateController.java @@ -0,0 +1,12 @@ +package com.api.recruit.controller; + +import javax.ws.rs.Path; + +/** + * @author:dxfeng + * @createTime: 2023/09/26 + * @version: 1.0 + */ +@Path("/jcl/recruit/message") +public class MessageTemplateController extends com.engine.recruit.controller.MessageTemplateController { +} diff --git a/src/com/engine/recruit/controller/MessageTemplateController.java b/src/com/engine/recruit/controller/MessageTemplateController.java new file mode 100644 index 0000000..bf2682a --- /dev/null +++ b/src/com/engine/recruit/controller/MessageTemplateController.java @@ -0,0 +1,37 @@ +package com.engine.recruit.controller; + +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.recruit.util.ResponseResult; +import com.engine.recruit.wrapper.MessageTemplateWrapper; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/26 + * @version: 1.0 + */ +public class MessageTemplateController { + public MessageTemplateWrapper getMessageTemplateWrapper(User user) { + return ServiceUtil.getService(MessageTemplateWrapper.class, user); + } + + @POST + @Path("/getMessageContent") + @Produces(MediaType.APPLICATION_JSON) + public String getMessageContent(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getMessageTemplateWrapper(user)::getMessageContent, params); + } +} diff --git a/src/com/engine/recruit/service/MessageTemplateService.java b/src/com/engine/recruit/service/MessageTemplateService.java new file mode 100644 index 0000000..f6ead76 --- /dev/null +++ b/src/com/engine/recruit/service/MessageTemplateService.java @@ -0,0 +1,22 @@ +package com.engine.recruit.service; + +import java.util.Map; + +/** + *

聚才林招聘

+ * 消息模板接口 + * + * @author:dxfeng + * @createTime: 2023/09/26 + * @version: 1.0 + */ +public interface MessageTemplateService { + + /** + * 获取邮件模板内容 + * + * @param params 入参 + * @return 模板内容 + */ + Map getMessageContent(Map params); +} diff --git a/src/com/engine/recruit/service/impl/MessageTemplateServiceImpl.java b/src/com/engine/recruit/service/impl/MessageTemplateServiceImpl.java new file mode 100644 index 0000000..c573b7e --- /dev/null +++ b/src/com/engine/recruit/service/impl/MessageTemplateServiceImpl.java @@ -0,0 +1,32 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.service.MessageTemplateService; +import weaver.conn.RecordSet; +import weaver.general.Util; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/26 + * @version: 1.0 + */ +public class MessageTemplateServiceImpl extends Service implements MessageTemplateService { + private static final String MESSAGE_TEMPLATE_TABLE = "uf_jcl_yjtzmb"; + + @Override + public Map getMessageContent(Map params) { + Map resMap = new HashMap<>(); + String id = Util.null2String(params.get("id")); + String content = ""; + RecordSet rs = new RecordSet(); + rs.executeQuery("select yjnr from " + MESSAGE_TEMPLATE_TABLE + " where id = ?", id); + if (rs.next()) { + content = rs.getString("yjnr"); + } + resMap.put("content", content); + return resMap; + } +} diff --git a/src/com/engine/recruit/wrapper/MessageTemplateWrapper.java b/src/com/engine/recruit/wrapper/MessageTemplateWrapper.java new file mode 100644 index 0000000..eba08f9 --- /dev/null +++ b/src/com/engine/recruit/wrapper/MessageTemplateWrapper.java @@ -0,0 +1,24 @@ +package com.engine.recruit.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.recruit.service.MessageTemplateService; +import com.engine.recruit.service.impl.MessageTemplateServiceImpl; +import weaver.hrm.User; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/26 + * @version: 1.0 + */ +public class MessageTemplateWrapper extends Service { + private MessageTemplateService getMessageTemplateService(User user) { + return ServiceUtil.getService(MessageTemplateServiceImpl.class, user); + } + + public Map getMessageContent(Map params) { + return getMessageTemplateService(user).getMessageContent(params); + } +} From 8bfdfc995c1faf719d6ea7b09e94a4bd57043328 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 27 Sep 2023 13:35:02 +0800 Subject: [PATCH 20/36] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E8=AF=84=E4=BB=B7=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=E9=9D=A2?= =?UTF-8?q?=E8=AF=95=E5=88=9B=E5=BB=BA=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/InterviewOperateTypeEnum.java | 49 ++++++ .../BatchAddDeptScreeningModeExpand.java | 7 +- .../SingleAddDeptScreeningModeExpand.java | 7 +- .../BatchAddInterviewResultModeExpand.java | 8 +- .../CancelInterviewResultModeExpand.java | 137 --------------- .../interview/CreateInterviewModeExpand.java | 111 ++++++++++++ .../interview/UpdateInterviewModeExpand.java | 164 ++++++++++++++++++ .../process/RelatedStageModeExpand.java | 10 +- .../modeexpand/util/ApplicantCommonInfo.java | 59 +++++++ .../modeexpand/util/RecruitModeUtil.java | 12 +- .../BatchAddWrittenResultModeExpand.java | 6 +- 11 files changed, 411 insertions(+), 159 deletions(-) create mode 100644 src/com/engine/recruit/enums/InterviewOperateTypeEnum.java delete mode 100644 src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java create mode 100644 src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java create mode 100644 src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java create mode 100644 src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java diff --git a/src/com/engine/recruit/enums/InterviewOperateTypeEnum.java b/src/com/engine/recruit/enums/InterviewOperateTypeEnum.java new file mode 100644 index 0000000..226bd8e --- /dev/null +++ b/src/com/engine/recruit/enums/InterviewOperateTypeEnum.java @@ -0,0 +1,49 @@ +package com.engine.recruit.enums; + +/** + * @author:dxfeng + * @createTime: 2023/09/27 + * @version: 1.0 + */ +public enum InterviewOperateTypeEnum { + /** + * 面试操作类型 + */ + EVALUATE("evaluate", "面试评价"), + CANCEL("cancel", "取消面试"), + ARRANGE("arrange", "安排面试"), + ADJUSTMENT("adjustment", "调整面试"); + + InterviewOperateTypeEnum(String operateType, String operateDesc) { + this.operateType = operateType; + this.operateDesc = operateDesc; + } + + private String operateType; + private String operateDesc; + + public String getOperateType() { + return operateType; + } + + public void setOperateType(String operateType) { + this.operateType = operateType; + } + + public String getOperateDesc() { + return operateDesc; + } + + public void setOperateDesc(String operateDesc) { + this.operateDesc = operateDesc; + } + + public static InterviewOperateTypeEnum getOperateType(String operateType) { + for (InterviewOperateTypeEnum item : InterviewOperateTypeEnum.values()) { + if (item.operateType.equalsIgnoreCase(operateType)) { + return item; + } + } + throw new RuntimeException("不支持的操作类型"); + } +} diff --git a/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java index 182614e..3785d3f 100644 --- a/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/departmentscreening/BatchAddDeptScreeningModeExpand.java @@ -8,6 +8,7 @@ import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.hrm.User; import weaver.soa.workflow.request.*; import java.util.*; @@ -44,18 +45,20 @@ public class BatchAddDeptScreeningModeExpand extends AbstractModeExpandJavaCodeN for (Property property : properties) { mainDataMap.put(property.getName(), property.getValue()); } + User user = (User) param.get("user"); + // 部门筛选ID mainDataMap.put("bmsxid", requestInfo.getRequestid()); // 状态 mainDataMap.put("zt", "0"); // 填充建模数据基本信息 mainDataMap.put("formmodeid", formModeId); - mainDataMap.put("modedatacreater", requestInfo.getCreatorid()); + mainDataMap.put("modedatacreater", user.getUID()); String dateTime = DateUtil.getFullDate(); String[] split = dateTime.split(" "); mainDataMap.put("modedatacreatedate", split[0]); mainDataMap.put("modedatacreatetime", split[1]); - mainDataMap.put("modedatamodifier", requestInfo.getCreatorid()); + mainDataMap.put("modedatamodifier", user.getUID()); mainDataMap.put("modedatamodifydatetime", dateTime); mainDataMap.put("modedatacreatertype", "0"); diff --git a/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java b/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java index e68d672..2759b75 100644 --- a/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/departmentscreening/SingleAddDeptScreeningModeExpand.java @@ -8,6 +8,7 @@ import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.hrm.User; import weaver.soa.workflow.request.MainTableInfo; import weaver.soa.workflow.request.Property; import weaver.soa.workflow.request.RequestInfo; @@ -48,19 +49,19 @@ public class SingleAddDeptScreeningModeExpand extends AbstractModeExpandJavaCode formModeId = rs.getInt("id"); } - + User user = (User) param.get("user"); // 部门筛选ID dataMap.put("bmsxid", requestInfo.getRequestid()); // 状态 dataMap.put("zt", "0"); // 填充建模数据基本信息 dataMap.put("formmodeid", formModeId); - dataMap.put("modedatacreater", requestInfo.getCreatorid()); + dataMap.put("modedatacreater", user.getUID()); String dateTime = DateUtil.getFullDate(); String[] split = dateTime.split(" "); dataMap.put("modedatacreatedate", split[0]); dataMap.put("modedatacreatetime", split[1]); - dataMap.put("modedatamodifier", requestInfo.getCreatorid()); + dataMap.put("modedatamodifier", user.getUID()); dataMap.put("modedatamodifydatetime", dateTime); dataMap.put("modedatacreatertype", "0"); diff --git a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java index bc094f0..e814cdd 100644 --- a/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/BatchAddInterviewResultModeExpand.java @@ -9,6 +9,7 @@ import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.hrm.User; import weaver.soa.workflow.request.*; import java.io.UnsupportedEncodingException; @@ -64,14 +65,15 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod for (Property property : properties) { mainDataMap.put(property.getName(), RecruitModeUtil.parseBlankToNull(property.getValue())); } + User user = (User) param.get("user"); // 填充建模数据基本信息 mainDataMap.put("formmodeid", formModeId); - mainDataMap.put("modedatacreater", requestInfo.getCreatorid()); + mainDataMap.put("modedatacreater", user.getUID()); String dateTime = DateUtil.getFullDate(); String[] split = dateTime.split(" "); mainDataMap.put("modedatacreatedate", split[0]); mainDataMap.put("modedatacreatetime", split[1]); - mainDataMap.put("modedatamodifier", requestInfo.getCreatorid()); + mainDataMap.put("modedatamodifier", user.getUID()); mainDataMap.put("modedatamodifydatetime", dateTime); mainDataMap.put("modedatacreatertype", "0"); @@ -122,7 +124,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod 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())); + RecruitModeUtil.messagePush(messageType, title, msgBuilder.toString(), userIdSet, user.getUID()); } } } catch (Exception e) { diff --git a/src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java deleted file mode 100644 index f3c2623..0000000 --- a/src/weaver/formmode/recruit/modeexpand/interview/CancelInterviewResultModeExpand.java +++ /dev/null @@ -1,137 +0,0 @@ -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; - } -} - diff --git a/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java new file mode 100644 index 0000000..d6cd277 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/interview/CreateInterviewModeExpand.java @@ -0,0 +1,111 @@ +package weaver.formmode.recruit.modeexpand.interview; + +import com.engine.recruit.enums.InterviewOperateTypeEnum; +import org.apache.commons.lang3.StringUtils; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.recruit.modeexpand.util.ApplicantCommonInfo; +import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; +import weaver.general.Util; +import weaver.hrm.User; +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/27 + * @version: 1.0 + */ +public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew { + + /** + * 消息来源ID + */ + private String messageType; + + /** + * 消息提醒标题 + */ + private String title; + + @Override + public Map doModeExpand(Map params) { + Map result = new HashMap<>(); + try { + //数据id + int billId; + //模块id + int modeId; + RequestInfo requestInfo = (RequestInfo) params.get("RequestInfo"); + User user = (User) params.get("user"); + 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<>(16); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + + String operateType = Util.null2String(params.get("operateType")); + if (StringUtils.isBlank(operateType)) { + operateType = InterviewOperateTypeEnum.ARRANGE.getOperateType(); + } + InterviewOperateTypeEnum operateTypeEnum = InterviewOperateTypeEnum.getOperateType(operateType); + switch (operateTypeEnum) { + case ARRANGE: + messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); + title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE"); + arrangeInterview(user, mainDataMap); + default: + break; + } + + } + } + } catch (Exception e) { + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + + return result; + } + + + /** + * 安排面试拓展动作 + * + * @param user + * @param mainDataMap + */ + private void arrangeInterview(User user, Map mainDataMap) { + StringBuilder msgBuilder = new StringBuilder(); + msgBuilder.append(RecruitModeUtil.getResourceNames(String.valueOf(user.getUID()))).append("安排了一场面试
"); + + String ypz = Util.null2String(mainDataMap.get("ypz")); + String ypzw = Util.null2String(mainDataMap.get("ypzw")); + 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(ApplicantCommonInfo.getApplicantName(ypz)); + msgBuilder.append(";应聘职位:").append(ApplicantCommonInfo.getApplicantPosition(ypzw)); + msgBuilder.append("
"); + 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, user.getUID()); + + } +} diff --git a/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java new file mode 100644 index 0000000..ba30731 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java @@ -0,0 +1,164 @@ +package weaver.formmode.recruit.modeexpand.interview; + +import com.engine.recruit.enums.InterviewOperateTypeEnum; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.recruit.modeexpand.util.ApplicantCommonInfo; +import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; +import weaver.general.Util; +import weaver.hrm.User; +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/27 + * @version: 1.0 + */ +public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew { + + private static final String MODE_TABLE_NAME = "uf_jcl_ms"; + + /** + * 消息来源ID + */ + private String messageType; + + /** + * 消息提醒标题 + */ + private String title; + + @Override + public Map doModeExpand(Map params) { + Map result = new HashMap<>(); + try { + //数据id + int billId; + //模块id + int modeId; + RequestInfo requestInfo = (RequestInfo) params.get("RequestInfo"); + if (requestInfo != null) { + billId = Util.getIntValue(requestInfo.getRequestid()); + modeId = Util.getIntValue(requestInfo.getWorkflowid()); + if (billId > 0 && modeId > 0) { + User user = (User) params.get("user"); + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + Map mainDataMap = new HashMap<>(); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + + String operateType = Util.null2String(params.get("operateType")); + if (StringUtils.isBlank(operateType)) { + // 为空则默认为新建布局、安排面试 + operateType = InterviewOperateTypeEnum.ARRANGE.getOperateType(); + } + InterviewOperateTypeEnum operateTypeEnum = InterviewOperateTypeEnum.getOperateType(operateType); + switch (operateTypeEnum) { + case EVALUATE: + // 面试评价 + messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); + title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_EVALUATE_MESSAGE_TITLE"); + evaluateInterview(params, requestInfo.getCreatorid(), mainDataMap); + break; + case CANCEL: + // 面试取消 + messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE"); + title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_CANCEL_MESSAGE_TITLE"); + cancelInterView(params, requestInfo, billId, mainDataMap); + break; + default: + break; + } + + } + } + } catch (Exception e) { + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + + return result; + } + + /** + * 面试评价操作拓展动作 + * + * @param params params + * @param creater creater + * @param mainDataMap mainDataMap + */ + private void evaluateInterview(Map params, String creater, Map mainDataMap) { + String ypz = Util.null2String(mainDataMap.get("ypz")); + String ypzw = Util.null2String(mainDataMap.get("ypzw")); + String msfkr = Util.null2String(mainDataMap.get("msfkr")); + String msrq = Util.null2String(mainDataMap.get("msrq")); + String msg = Util.null2String(mainDataMap.get("msg")); + String ptmsg = Util.null2String(mainDataMap.get("ptmsg")); + String jg = Util.null2String(mainDataMap.get("jg")); + String formId = Util.null2String(params.get("formId")); + + StringBuilder msgBuilder = new StringBuilder(); + msgBuilder.append(RecruitModeUtil.getResourceNames(msfkr)).append("已经提交了面试评价"); + msgBuilder.append("
"); + msgBuilder.append("应聘者:").append(ApplicantCommonInfo.getApplicantName(ypz)).append(";应聘职位:").append(ApplicantCommonInfo.getApplicantPosition(ypzw)); + msgBuilder.append("
"); + msgBuilder.append("面试时间:").append(msrq).append(";面试官:").append(RecruitModeUtil.getResourceNames(msg)).append(",").append(RecruitModeUtil.getResourceNames(ptmsg)); + msgBuilder.append("
"); + msgBuilder.append("面试结果:$jg$").append(ApplicantCommonInfo.getSelectName(formId, "jg", jg)); + + User user = (User) params.get("user"); + + // 消息发送,通知创建人 + Set userIdSet = new HashSet<>(); + userIdSet.add(creater); + RecruitModeUtil.messagePush(messageType, title, msgBuilder.toString(), userIdSet, user.getUID()); + } + + + /** + * 取消面试拓展动作 + * + * @param params params + * @param requestInfo requestInfo + * @param billId billId + * @param mainDataMap mainDataMap + */ + private void cancelInterView(Map params, RequestInfo requestInfo, int billId, Map mainDataMap) { + // 更新面试状态为“已取消” + RecordSet rs = new RecordSet(); + rs.executeUpdate("update " + MODE_TABLE_NAME + " set zt = 4 where id = ?", billId); + + // 发送消息 + 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")); + String formId = Util.null2String(params.get("formId")); + + StringBuilder msgBuilder = new StringBuilder(); + msgBuilder.append(RecruitModeUtil.getResourceNames(requestInfo.getCreatorid())).append("取消了面试,请知悉。取消原因:").append(ApplicantCommonInfo.getSelectName(formId, "qxyy", Util.null2String(mainDataMap.get("qxyy")))).append("
"); + + msgBuilder.append("应聘者:").append(ApplicantCommonInfo.getApplicantName(Util.null2String(mainDataMap.get("ypz")))); + msgBuilder.append(";应聘职位:").append(ApplicantCommonInfo.getApplicantPosition(Util.null2String(mainDataMap.get("ypzw")))); + msgBuilder.append("
"); + + 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())); + + } + + +} diff --git a/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java index 9ae018c..8c75874 100644 --- a/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java @@ -8,6 +8,7 @@ import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.hrm.User; import weaver.soa.workflow.request.MainTableInfo; import weaver.soa.workflow.request.Property; import weaver.soa.workflow.request.RequestInfo; @@ -50,7 +51,8 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { // 结束阶段 String jsjd = mainDataMap.get("jsjd"); // 查询所有的操作阶段信息 - relatedStageData(requestInfo.getCreatorid(), billId, ksjd, gcjd, jsjd); + User user = (User) param.get("user"); + relatedStageData(user.getUID(), billId, ksjd, gcjd, jsjd); } } catch (Exception e) { new BaseBean().writeLog(e); @@ -68,11 +70,11 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { * @param billId 当前数据ID * @param processIds 路程表单所选阶段ID */ - private void relatedStageData(String creator, String billId, String... processIds) { + private void relatedStageData(int creator, String billId, String... processIds) { String dateTime = DateUtil.getFullDate(); String[] dateSplit = dateTime.split(" "); - List paramsList = new ArrayList<>(); + List paramsList = new ArrayList<>(); // modedatacreater paramsList.add(creator); // modedatacreatedate @@ -104,7 +106,7 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { * @param insertSql 插入SQL语句 * @param paramsList 待插入参数集合 */ - private void insertMainTableData(String billId, String processId, String insertSql, List paramsList) { + private void insertMainTableData(String billId, String processId, String insertSql, List paramsList) { String uuid = UUID.randomUUID().toString(); ArrayList insertList = new ArrayList<>(paramsList); insertList.add(0, uuid); diff --git a/src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java b/src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java new file mode 100644 index 0000000..daa0f41 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java @@ -0,0 +1,59 @@ +package weaver.formmode.recruit.modeexpand.util; + +import weaver.conn.RecordSet; + +/** + * @author:dxfeng + * @createTime: 2023/09/27 + * @version: 1.0 + */ +public class ApplicantCommonInfo { + /** + * 获取应聘者姓名 + * + * @param applicantId 应聘者ID + * @return 应聘者姓名 + */ + public static String getApplicantName(String applicantId) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select xm from uf_jcl_yppc where id = ?", applicantId); + if (rs.next()) { + return rs.getString("xm"); + } + return ""; + } + + /** + * 获取应聘职位名称 + * + * @param positionId 职位ID + * @return 职位名称 + */ + public static String getApplicantPosition(String positionId) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select zpzwmc from uf_jcl_zp_zpzw where id = ?", positionId); + if (rs.next()) { + return rs.getString("zpzwmc"); + } + return ""; + } + + + /** + * 获取取消理由 + * + * @param formId 表单ID + * @param fieldName 字段明湖曾 + * @param value 下拉框值 + * @return + */ + public static String getSelectName(String formId, String fieldName, 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 = ? ) and selectvalue = ?", formId, fieldName, value); + if (rs.next()) { + cancelReason = rs.getString("selectname"); + } + return cancelReason; + } +} diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java index 938b47e..687da4e 100644 --- a/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java +++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitModeUtil.java @@ -8,7 +8,7 @@ import weaver.general.BaseBean; import weaver.hrm.resource.ResourceComInfo; import java.io.IOException; -import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; import java.util.Set; /** @@ -56,16 +56,12 @@ public class RecruitModeUtil { /** * 获取聚才林招聘相关配置文件 * - * @param key - * @return + * @param key key + * @return value */ public static String getRecruitPropValue(String key) { String value = new BaseBean().getPropValue("jclRecruit", key); - try { - value = new String(value.getBytes("ISO-8859-1"), "utf-8"); - } catch (UnsupportedEncodingException e) { - new BaseBean().writeLog(e); - } + value = new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); return value; } diff --git a/src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeExpand.java b/src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeExpand.java index 50cb237..473abe3 100644 --- a/src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/written/BatchAddWrittenResultModeExpand.java @@ -7,6 +7,7 @@ import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; import weaver.formmode.setup.ModeRightInfo; import weaver.general.BaseBean; import weaver.general.Util; +import weaver.hrm.User; import weaver.soa.workflow.request.*; import java.util.*; @@ -41,13 +42,14 @@ public class BatchAddWrittenResultModeExpand extends AbstractModeExpandJavaCodeN mainDataMap.put(property.getName(), property.getValue()); } // 填充建模数据基本信息 + User user = (User) param.get("user"); mainDataMap.put("formmodeid", formModeId); - mainDataMap.put("modedatacreater", requestInfo.getCreatorid()); + mainDataMap.put("modedatacreater", user.getUID()); String dateTime = DateUtil.getFullDate(); String[] split = dateTime.split(" "); mainDataMap.put("modedatacreatedate", split[0]); mainDataMap.put("modedatacreatetime", split[1]); - mainDataMap.put("modedatamodifier", requestInfo.getCreatorid()); + mainDataMap.put("modedatamodifier", user.getUID()); mainDataMap.put("modedatamodifydatetime", dateTime); mainDataMap.put("modedatacreatertype", "0"); From 5e88575e8e0643bca31b3811ebe063a353ed216f Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 27 Sep 2023 14:05:45 +0800 Subject: [PATCH 21/36] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=9D=A2=E8=AF=95?= =?UTF-8?q?=E8=AF=84=E4=BB=B7=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92=E9=9D=A2?= =?UTF-8?q?=E8=AF=95=E5=88=9B=E5=BB=BA=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/modeexpand/interview/UpdateInterviewModeExpand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java index ba30731..1fd9f4c 100644 --- a/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/interview/UpdateInterviewModeExpand.java @@ -111,7 +111,7 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew { msgBuilder.append("
"); msgBuilder.append("面试时间:").append(msrq).append(";面试官:").append(RecruitModeUtil.getResourceNames(msg)).append(",").append(RecruitModeUtil.getResourceNames(ptmsg)); msgBuilder.append("
"); - msgBuilder.append("面试结果:$jg$").append(ApplicantCommonInfo.getSelectName(formId, "jg", jg)); + msgBuilder.append("面试结果:").append(ApplicantCommonInfo.getSelectName(formId, "jg", jg)); User user = (User) params.get("user"); From 11387472fc072f2934e68852f9a8e080542a6a8a Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 27 Sep 2023 17:30:24 +0800 Subject: [PATCH 22/36] =?UTF-8?q?tab=E5=B1=95=E7=A4=BA=E5=BD=93=E5=89=8Dta?= =?UTF-8?q?b=E9=A1=B5=E4=B8=8B=E7=AE=80=E5=8E=86=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=9A=84=E8=AE=B0=E5=BD=95=E6=9D=A1=E6=95=B0=E5=90=88=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicantResumeController.java | 9 ++++ .../service/ApplicantResumeService.java | 8 ++++ .../impl/ApplicantResumeServiceImpl.java | 47 +++++++++++++++++++ .../wrapper/ApplicantResumeWrapper.java | 3 ++ 4 files changed, 67 insertions(+) diff --git a/src/com/engine/recruit/controller/ApplicantResumeController.java b/src/com/engine/recruit/controller/ApplicantResumeController.java index 5b4ac33..f72ed10 100644 --- a/src/com/engine/recruit/controller/ApplicantResumeController.java +++ b/src/com/engine/recruit/controller/ApplicantResumeController.java @@ -55,4 +55,13 @@ public class ApplicantResumeController { Map params = ParamUtil.request2Map(request); return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::getDisplayLayoutId, params); } + + @POST + @Path("/getTabCount") + @Produces(MediaType.APPLICATION_JSON) + public String getTabCount(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::getTabCount, params); + } } diff --git a/src/com/engine/recruit/service/ApplicantResumeService.java b/src/com/engine/recruit/service/ApplicantResumeService.java index 791b67a..153f5f9 100644 --- a/src/com/engine/recruit/service/ApplicantResumeService.java +++ b/src/com/engine/recruit/service/ApplicantResumeService.java @@ -36,4 +36,12 @@ public interface ApplicantResumeService { * @return 显示布局ID */ Map getDisplayLayoutId(Map params); + + /** + * 获取关联Tab页,数据统计条数 + * + * @param params 入参 + * @return 据统计条数 + */ + Map getTabCount(Map params); } diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index bd811a0..8d993d3 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -91,6 +91,53 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu return returnMap; } + @Override + public Map getTabCount(Map params) { + Map returnMap = new HashMap<>(); + String billId = Util.null2String(params.get("billid")); + List countList = new ArrayList<>(); + RecordSet rs = new RecordSet(); + // 部门筛选反馈 + rs.executeQuery("select count(id) as num from uf_jcl_bmsxfk where ypz = ?", billId); + if (rs.next()) { + countList.add(rs.getInt("num")); + } + // 笔试 + rs.executeQuery("select count(id) as num from uf_jcl_bs where ypz = ?", billId); + if (rs.next()) { + countList.add(rs.getInt("num")); + } + // 面试 + rs.executeQuery("select count(id) as num from uf_jcl_ms where ypz = ?", billId); + if (rs.next()) { + countList.add(rs.getInt("num")); + } + // 背调 + rs.executeQuery("select count(id) as num from uf_jcl_bd where ypz = ?", billId); + if (rs.next()) { + countList.add(rs.getInt("num")); + } + // 薪酬谈判 + rs.executeQuery("select count(id) as num from uf_jcl_xctp where ypz = ?", billId); + if (rs.next()) { + countList.add(rs.getInt("num")); + } + // 历史投递记录 + rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", billId); + if (rs.next()) { + rs.executeQuery("select count(id) as num from uf_jcl_yppc where xm=? and sjhm =?", rs.getString("xm"), rs.getString("sjhm")); + if (rs.next()) { + countList.add(rs.getInt("num")); + } + }else{ + countList.add(0); + } + + + returnMap.put("countList", countList); + return returnMap; + } + /** * 构建普通数据格式 * diff --git a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java index 3889305..a015a48 100644 --- a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java +++ b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java @@ -29,4 +29,7 @@ public class ApplicantResumeWrapper extends Service { public Map getDisplayLayoutId(Map params) { return getApplicantResumeService(user).getDisplayLayoutId(params); } + public Map getTabCount(Map params) { + return getApplicantResumeService(user).getTabCount(params); + } } From 4d3fd2ae3f4c5a9b8162ba197d5c68dda057a9ac Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 28 Sep 2023 09:11:08 +0800 Subject: [PATCH 23/36] =?UTF-8?q?=E5=BA=94=E8=81=98=E8=80=85-=E6=B7=98?= =?UTF-8?q?=E6=B1=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicantResumeController.java | 8 ++++ .../recruit/enums/ApplicantOperateEnum.java | 47 +++++++++++++++++++ .../recruit/enums/ApplicationStatusEnum.java | 40 ++++++++++++++++ .../service/ApplicantResumeService.java | 9 ++++ .../impl/ApplicantResumeServiceImpl.java | 16 ++++++- .../wrapper/ApplicantResumeWrapper.java | 3 ++ 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 src/com/engine/recruit/enums/ApplicantOperateEnum.java create mode 100644 src/com/engine/recruit/enums/ApplicationStatusEnum.java diff --git a/src/com/engine/recruit/controller/ApplicantResumeController.java b/src/com/engine/recruit/controller/ApplicantResumeController.java index f72ed10..7ae878a 100644 --- a/src/com/engine/recruit/controller/ApplicantResumeController.java +++ b/src/com/engine/recruit/controller/ApplicantResumeController.java @@ -64,4 +64,12 @@ public class ApplicantResumeController { Map params = ParamUtil.request2Map(request); return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::getTabCount, params); } + @POST + @Path("/updateApplicantsInfo") + @Produces(MediaType.APPLICATION_JSON) + public String updateApplicantsInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::updateApplicantsInfo, params); + } } diff --git a/src/com/engine/recruit/enums/ApplicantOperateEnum.java b/src/com/engine/recruit/enums/ApplicantOperateEnum.java new file mode 100644 index 0000000..21d32eb --- /dev/null +++ b/src/com/engine/recruit/enums/ApplicantOperateEnum.java @@ -0,0 +1,47 @@ +package com.engine.recruit.enums; + +/** + * @author:dxfeng + * @createTime: 2023/09/27 + * @version: 1.0 + */ +public enum ApplicantOperateEnum { + + /** + * 应聘者相关操作类型 + */ + ELIMINATE("eliminate", "淘汰"); + + ApplicantOperateEnum(String operateType, String operateDesc) { + this.operateType = operateType; + this.operateDesc = operateDesc; + } + + private String operateType; + private String operateDesc; + + public String getOperateType() { + return operateType; + } + + public void setOperateType(String operateType) { + this.operateType = operateType; + } + + public String getOperateDesc() { + return operateDesc; + } + + public void setOperateDesc(String operateDesc) { + this.operateDesc = operateDesc; + } + + public static ApplicantOperateEnum getOperateType(String operateType) { + for (ApplicantOperateEnum item : ApplicantOperateEnum.values()) { + if (item.operateType.equalsIgnoreCase(operateType)) { + return item; + } + } + throw new RuntimeException("不支持的操作类型"); + } +} diff --git a/src/com/engine/recruit/enums/ApplicationStatusEnum.java b/src/com/engine/recruit/enums/ApplicationStatusEnum.java new file mode 100644 index 0000000..cfd038f --- /dev/null +++ b/src/com/engine/recruit/enums/ApplicationStatusEnum.java @@ -0,0 +1,40 @@ +package com.engine.recruit.enums; + +/** + * @author:dxfeng + * @createTime: 2023/09/27 + * @version: 1.0 + */ +public enum ApplicationStatusEnum { + /** + * 应聘状态 + */ + DISTRIBUTION("待分配", "0"), + CANDIDATE("候选中", "1"), + ARCHIVED("已归档", "2"), + OBSOLETE("已淘汰", "3"); + + ApplicationStatusEnum(String name, String value) { + this.name = name; + this.value = value; + } + + private String name; + private String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/com/engine/recruit/service/ApplicantResumeService.java b/src/com/engine/recruit/service/ApplicantResumeService.java index 153f5f9..1a40444 100644 --- a/src/com/engine/recruit/service/ApplicantResumeService.java +++ b/src/com/engine/recruit/service/ApplicantResumeService.java @@ -44,4 +44,13 @@ public interface ApplicantResumeService { * @return 据统计条数 */ Map getTabCount(Map params); + + + /** + * 更新应聘者信息 + * + * @param params 入参 + * @return + */ + Map updateApplicantsInfo(Map params); } diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index 8d993d3..eb952a3 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -1,6 +1,8 @@ package com.engine.recruit.service.impl; import com.engine.core.impl.Service; +import com.engine.recruit.enums.ApplicantOperateEnum; +import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.service.ApplicantResumeService; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; @@ -129,7 +131,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu if (rs.next()) { countList.add(rs.getInt("num")); } - }else{ + } else { countList.add(0); } @@ -138,6 +140,18 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu return returnMap; } + @Override + public Map updateApplicantsInfo(Map params) { + Map returnMap = new HashMap<>(); + String operateType = Util.null2String(params.get("operateType")); + String ids = Util.null2String(params.get("ids")); + RecordSet rs = new RecordSet(); + if (ApplicantOperateEnum.ELIMINATE.getOperateType().equals(operateType)) { + rs.executeUpdate("update uf_jcl_yppc set zt = ? where id = (?)", ApplicationStatusEnum.OBSOLETE.getValue(), ids); + } + return returnMap; + } + /** * 构建普通数据格式 * diff --git a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java index a015a48..3d3a54a 100644 --- a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java +++ b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java @@ -32,4 +32,7 @@ public class ApplicantResumeWrapper extends Service { public Map getTabCount(Map params) { return getApplicantResumeService(user).getTabCount(params); } + public Map updateApplicantsInfo(Map params) { + return getApplicantResumeService(user).updateApplicantsInfo(params); + } } From 36874763ebc2dcc86ec9c1fd01940492c84ff46a Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 28 Sep 2023 15:14:32 +0800 Subject: [PATCH 24/36] =?UTF-8?q?=E8=BD=AC=E7=A7=BB=E9=98=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/enums/ApplicantOperateEnum.java | 4 +- .../enums/CurrentApplicationStageEnum.java | 55 +++++++ .../impl/ApplicantResumeServiceImpl.java | 9 +- .../applicant/UpdateApplicantModeExpand.java | 134 ++++++++++++++++++ 4 files changed, 199 insertions(+), 3 deletions(-) create mode 100644 src/com/engine/recruit/enums/CurrentApplicationStageEnum.java create mode 100644 src/weaver/formmode/recruit/modeexpand/applicant/UpdateApplicantModeExpand.java diff --git a/src/com/engine/recruit/enums/ApplicantOperateEnum.java b/src/com/engine/recruit/enums/ApplicantOperateEnum.java index 21d32eb..6f8a843 100644 --- a/src/com/engine/recruit/enums/ApplicantOperateEnum.java +++ b/src/com/engine/recruit/enums/ApplicantOperateEnum.java @@ -10,7 +10,9 @@ public enum ApplicantOperateEnum { /** * 应聘者相关操作类型 */ - ELIMINATE("eliminate", "淘汰"); + ELIMINATE("eliminate", "淘汰"), + REFERRAL("referral", "转推其他职位"), + TRANSFER("transfer", "转移阶段"); ApplicantOperateEnum(String operateType, String operateDesc) { this.operateType = operateType; diff --git a/src/com/engine/recruit/enums/CurrentApplicationStageEnum.java b/src/com/engine/recruit/enums/CurrentApplicationStageEnum.java new file mode 100644 index 0000000..6b87563 --- /dev/null +++ b/src/com/engine/recruit/enums/CurrentApplicationStageEnum.java @@ -0,0 +1,55 @@ +package com.engine.recruit.enums; + +/** + * @author:dxfeng + * @createTime: 2023/09/28 + * @version: 1.0 + */ +public enum CurrentApplicationStageEnum { + + /** + * 当前操作阶段 + */ + SCREENING("初筛", "0"), + WRITTEN("笔试", "1"), + INTERVIEW("面试", "2"), + EVALUATION("测评", "3"), + SALARY("薪酬谈判", "4"), + BACK("背调", "5"), + offer("offer", "6"), + EMPLOYMENT("待入职", "8"), + ENTRY("入职", "9 "); + + CurrentApplicationStageEnum(String stageName, String stageValue) { + this.stageName = stageName; + this.stageValue = stageValue; + } + + private String stageName; + private String stageValue; + + public String getStageName() { + return stageName; + } + + public void setStageName(String stageName) { + this.stageName = stageName; + } + + public String getStageValue() { + return stageValue; + } + + public void setStageValue(String stageValue) { + this.stageValue = stageValue; + } + + public static CurrentApplicationStageEnum getOperateType(String operateType) { + for (CurrentApplicationStageEnum item : CurrentApplicationStageEnum.values()) { + if (item.stageValue.equalsIgnoreCase(operateType)) { + return item; + } + } + throw new RuntimeException("不支持的操作类型"); + } +} diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index eb952a3..622c736 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -144,10 +144,15 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu public Map updateApplicantsInfo(Map params) { Map returnMap = new HashMap<>(); String operateType = Util.null2String(params.get("operateType")); - String ids = Util.null2String(params.get("ids")); RecordSet rs = new RecordSet(); if (ApplicantOperateEnum.ELIMINATE.getOperateType().equals(operateType)) { - rs.executeUpdate("update uf_jcl_yppc set zt = ? where id = (?)", ApplicationStatusEnum.OBSOLETE.getValue(), ids); + String ids = Util.null2String(params.get("ids")); + rs.executeUpdate("update uf_jcl_yppc set zt = ? where id in (?)", ApplicationStatusEnum.OBSOLETE.getValue(), ids); + } + if (ApplicantOperateEnum.TRANSFER.getOperateType().equals(operateType)) { + String dqypjd = Util.null2String(params.get("dqypjd")); + String billid = Util.null2String(params.get("billid")); + rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, billid); } return returnMap; } diff --git a/src/weaver/formmode/recruit/modeexpand/applicant/UpdateApplicantModeExpand.java b/src/weaver/formmode/recruit/modeexpand/applicant/UpdateApplicantModeExpand.java new file mode 100644 index 0000000..8a5f4f6 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/applicant/UpdateApplicantModeExpand.java @@ -0,0 +1,134 @@ +package weaver.formmode.recruit.modeexpand.applicant; + +import com.engine.recruit.enums.ApplicantOperateEnum; +import com.engine.recruit.enums.CurrentApplicationStageEnum; +import com.engine.recruit.enums.InterviewOperateTypeEnum; +import org.apache.commons.lang3.StringUtils; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.soa.workflow.request.MainTableInfo; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/09/28 + * @version: 1.0 + */ +public class UpdateApplicantModeExpand extends AbstractModeExpandJavaCodeNew { + @Override + public Map doModeExpand(Map params) { + Map result = new HashMap<>(); + try { + //数据id + int billId; + //模块id + int modeId; + RequestInfo requestInfo = (RequestInfo) params.get("RequestInfo"); + User user = (User) params.get("user"); + 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<>(16); + for (Property property : properties) { + mainDataMap.put(property.getName(), property.getValue()); + } + + String operateType = Util.null2String(params.get("operateType")); + if (StringUtils.isBlank(operateType)) { + operateType = InterviewOperateTypeEnum.ARRANGE.getOperateType(); + } + ApplicantOperateEnum operateTypeEnum = ApplicantOperateEnum.getOperateType(operateType); + switch (operateTypeEnum) { + // 转移阶段 + case TRANSFER: + + default: + break; + } + + } + } + } catch (Exception e) { + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + + return result; + } + + private void transferApplicant(Map mainDataMap) { + // 当前应聘阶段 + String currentApplicationStage = Util.null2String(mainDataMap.get("dqypjd")); + // 待入职、入职状态,数据推入职管理建模 + if (CurrentApplicationStageEnum.EMPLOYMENT.getStageValue().equals(currentApplicationStage) || CurrentApplicationStageEnum.ENTRY.getStageValue().equals(currentApplicationStage)) { + String modeTableName = "uf_jcl_rzgl"; + String insertSql = "insert into " + modeTableName + " () values ()"; + + } + } + + private List buildParamList(Map map) { + List param = new ArrayList<>(); + // 填充建模表相关字段 + param.add(map.get("modedatacreatertype")); + param.add(map.get("formmodeid")); + param.add(map.get("modedatacreater")); + param.add(map.get("modedatacreatedate")); + param.add(map.get("modedatacreatetime")); + param.add(map.get("modedatamodifier")); + param.add(map.get("modedatamodifydatetime")); + + // 表单字段 + // 信息采集ID + // param.add(map.get("")); + // 姓名 + param.add(map.get("xm")); + // 身份证号 + param.add(map.get("sfz")); + // 年龄 + param.add(map.get("nl")); + // 性别 + param.add(map.get("xb")); + // 手机号码 + param.add(map.get("sjhm")); + // 电子邮箱 + param.add(map.get("dzyx")); + // 入职公司 + param.add(map.get("rzgs")); + + //// 入职部门 + //param.add(map.get("rzbm")); + //// 直接上级 + //param.add(map.get("zjsj")); + //// 岗位 + //param.add(map.get("gw")); + // 预计入职日期 + param.add(map.get("yjrzrq")); + // 关联招聘需求 + param.add(map.get("glzpxq")); + // 入职状态 + param.add(map.get("rzzt")); + // 信息采集 + param.add(map.get("xxcj")); + // 入职流程 + param.add(map.get("rzlc")); + // 入职流程状态 + param.add(map.get("rzlczt")); + // 批次ID + param.add(map.get("pcid")); + // 取消原因 + param.add(map.get("qxyy")); + + return param; + } +} From b7c5156d0ca1229d1f2a1f4ef08a720a03224589 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Sat, 7 Oct 2023 10:26:59 +0800 Subject: [PATCH 25/36] =?UTF-8?q?=E5=85=A5=E8=81=8C=E7=AE=A1=E7=90=86=20?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BA=94=E8=81=98=E8=80=85=E5=BA=94=E8=81=98?= =?UTF-8?q?=E9=98=B6=E6=AE=B5=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entrymanager/AddEntryModeExpand.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java diff --git a/src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java b/src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java new file mode 100644 index 0000000..de3a2f2 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java @@ -0,0 +1,41 @@ +package weaver.formmode.recruit.modeexpand.entrymanager; + +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.general.Util; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/07 + * @version: 1.0 + */ +public class AddEntryModeExpand extends AbstractModeExpandJavaCodeNew { + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + int billId; + 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) { + String dqypjd = Util.null2String(param.get("dqypjd")); + String pcid = Util.null2String(param.get("pcid")); + RecordSet rs = new RecordSet(); + // 更新应聘者当前应聘阶段 + rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, pcid); + } + } + } catch (Exception e) { + result.put("errmsg", "自定义出错信息"); + result.put("flag", "false"); + } + return result; + } +} From ada279bb19f3de01f1fb211f7530ee53188a7024 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 9 Oct 2023 10:31:12 +0800 Subject: [PATCH 26/36] =?UTF-8?q?=E5=8D=83=E9=87=8C=E8=81=86=E8=81=8C?= =?UTF-8?q?=E4=BD=8D=E5=8F=91=E5=B8=83=E3=80=81=E8=81=8C=E4=BD=8D=E4=B8=8B?= =?UTF-8?q?=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/PositionThirdChannelEnum.java | 42 ++++ .../position/ClosePositionModeExpand.java | 56 +++++ .../position/ReleasePositionModeExpand.java | 90 +++++++++ .../modeexpand/util/ApplicantCommonInfo.java | 29 ++- .../modeexpand/util/RecruitPositionUtil.java | 191 ++++++++++++++++++ 5 files changed, 407 insertions(+), 1 deletion(-) create mode 100644 src/com/engine/recruit/enums/PositionThirdChannelEnum.java create mode 100644 src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java create mode 100644 src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java create mode 100644 src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java diff --git a/src/com/engine/recruit/enums/PositionThirdChannelEnum.java b/src/com/engine/recruit/enums/PositionThirdChannelEnum.java new file mode 100644 index 0000000..443f235 --- /dev/null +++ b/src/com/engine/recruit/enums/PositionThirdChannelEnum.java @@ -0,0 +1,42 @@ +package com.engine.recruit.enums; + +/** + * 发布渠道枚举类 + * + * @author:dxfeng + * @createTime: 2023/10/08 + * @version: 1.0 + */ +public enum PositionThirdChannelEnum { + /** + * 发布渠道 + */ + BOSS("0"), + ZHI_LIAN("1"), + D51_JOB("2"), + LA_GOU("3"), + LIE_PIN("4"); + + PositionThirdChannelEnum(String value) { + this.value = value; + } + + private String value; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public static PositionThirdChannelEnum getEnum(String value) { + for (PositionThirdChannelEnum item : PositionThirdChannelEnum.values()) { + if (item.value.equalsIgnoreCase(value)) { + return item; + } + } + throw new RuntimeException("不支持的发布渠道"); + } +} diff --git a/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java b/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java new file mode 100644 index 0000000..64660ad --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java @@ -0,0 +1,56 @@ +package weaver.formmode.recruit.modeexpand.position; + +import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient; +import com.weaver.rpa.sdk.clients.core.ERPASDKClients; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/07 + * @version: 1.0 + */ +public class ClosePositionModeExpand extends AbstractModeExpandJavaCodeNew { + + @Override + public Map doModeExpand(Map param) { + String tableName = "uf_jcl_zp_zpzw"; + + Map result = new HashMap<>(16); + try { + User user = (User) param.get("user"); + int billId; + 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) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select qllgwid from " + tableName + " where id = ?", billId); + if (rs.next()) { + long jobId = Long.parseLong(rs.getString("qllgwid")); + ERPAResumeSDKClient client = ERPASDKClients.getResumeSDKClient(); + client.start(); + String userId = String.valueOf(user.getUID()); + client.closeResumeJob(userId, jobId); + rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", jobId, 5, billId); + } + } + } + } catch (Exception e) { + new BaseBean().writeLog(e); + result.put("errmsg", e.getMessage()); + result.put("flag", "false"); + } + return result; + } + +} diff --git a/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java new file mode 100644 index 0000000..d370b42 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java @@ -0,0 +1,90 @@ +package weaver.formmode.recruit.modeexpand.position; + +import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient; +import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobDto; +import com.weaver.rpa.sdk.clients.core.ERPASDKClients; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.formmode.recruit.modeexpand.util.RecruitPositionUtil; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.User; +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; + +/** + * @author:dxfeng + * @createTime: 2023/10/07 + * @version: 1.0 + */ +public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { + + @Override + public Map doModeExpand(Map param) { + String tableName = "uf_jcl_zp_zpzw"; + + Map result = new HashMap<>(16); + try { + User user = (User) param.get("user"); + int billId; + 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) { + long jobId = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery("select qllgwid from " + tableName + " where id = ?", billId); + if (rs.next()) { + jobId = Long.parseLong(rs.getString("qllgwid")); + } + ERPAResumeSDKClient client = ERPASDKClients.getResumeSDKClient(); + Map map = new HashMap<>(16); + MainTableInfo mainTableInfo = requestInfo.getMainTableInfo(); + Property[] properties = mainTableInfo.getProperty(); + for (Property property : properties) { + map.put(property.getName(), property.getValue()); + } + ResumeJobDto resumeJobDto = RecruitPositionUtil.convertMap2ResumeJobDto(map); + // 发布千里聆职位 + if (!RecruitPositionUtil.checkAvailable(client)) { + new BaseBean().writeLog("千里聆未开通简历应用。"); + result.put("errmsg", "千里聆未开通简历应用。"); + result.put("flag", "false"); + } + String userId = String.valueOf(user.getUID()); + // TODO 测试数据 userId = "26"; + // 未创建职位,则先创建职位 + if (jobId == -1) { + // 创建千里聆职位 + jobId = client.addResumeJob(userId, resumeJobDto); + // 更新千里聆ID到建模表单 + rs.executeUpdate("update " + tableName + " set qllgwid = ? where id = ?", jobId, billId); + } + + // 发布职位 + client.setRobotAuthority(userId,userId,false); + client.start(); + List platformIds = resumeJobDto.getPlatformIds(); + for (Integer platformId : platformIds) { + client.releaseResumeJob(userId, jobId, platformId); + } + // 更新状态为已发布 + rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", 2, billId); + } + } + } catch (Exception e) { + new BaseBean().writeLog(e); + result.put("errmsg", e.getMessage()); + result.put("flag", "false"); + } + return result; + } + +} \ No newline at end of file diff --git a/src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java b/src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java index daa0f41..366eaeb 100644 --- a/src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java +++ b/src/weaver/formmode/recruit/modeexpand/util/ApplicantCommonInfo.java @@ -1,7 +1,11 @@ package weaver.formmode.recruit.modeexpand.util; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import java.util.ArrayList; +import java.util.List; + /** * @author:dxfeng * @createTime: 2023/09/27 @@ -40,7 +44,7 @@ public class ApplicantCommonInfo { /** - * 获取取消理由 + * 获取表单下拉框展示文本 * * @param formId 表单ID * @param fieldName 字段明湖曾 @@ -56,4 +60,27 @@ public class ApplicantCommonInfo { } return cancelReason; } + + + /** + * 获取招聘通用浏览按钮展示内容 + * + * @param id 浏览按钮ID + * @return 浏览按钮展示文本 + */ + public static String getRecruitCommonBrowserValue(String id) { + if (StringUtils.isBlank(id)) { + return ""; + } + List value = new ArrayList<>(); + RecordSet rs = new RecordSet(); + String[] split = id.split(","); + for (String s : split) { + rs.executeQuery("select xxnr from uf_sjzd where id = ?", id); + if (rs.next()) { + value.add(rs.getString("xxnr")); + } + } + return StringUtils.join(value, ","); + } } diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java new file mode 100644 index 0000000..d0ef547 --- /dev/null +++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java @@ -0,0 +1,191 @@ +package weaver.formmode.recruit.modeexpand.util; + +import cn.hutool.core.convert.Convert; +import com.alibaba.fastjson.JSON; +import com.engine.recruit.enums.PositionThirdChannelEnum; +import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient; +import com.weaver.rpa.sdk.clients.application.resume.common.ResumePlatform; +import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobDto; +import com.weaver.rpa.sdk.utils.HttpClientUtils; +import weaver.general.BaseBean; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 招聘职位工具类 + * + * @author:dxfeng + * @createTime: 2023/10/08 + * @version: 1.0 + */ +public class RecruitPositionUtil { + + /** + * 将Map转换成ResumeJobDto对象 + * + * @param map 数据集合 + * @return ResumeJobDto对象 + */ + public static ResumeJobDto convertMap2ResumeJobDto(Map map) { + String positionName = Convert.toStr(map.get("zpzwmc"));//职位名称 + String positionDuty = Convert.toStr(map.get("gwzz"));//职位职责 + String finishTime = Convert.toStr(map.get("zpjzrq"));//完成时间 + String education = ApplicantCommonInfo.getRecruitCommonBrowserValue(Convert.toStr(map.get("zdxlyq")));//学历要求 + String workYears = ApplicantCommonInfo.getRecruitCommonBrowserValue(Convert.toStr(map.get("gznx")));//工作年限 + String positionNature = ApplicantCommonInfo.getRecruitCommonBrowserValue(Convert.toStr(map.get("zwxz")));//职位性质 + Integer salaryMin = Convert.toInt(map.get("zdxzk"), 0);//最低薪酬 + Integer salaryMax = Convert.toInt(map.get("zgxzk"), 0);// 最高薪酬 + Integer xcyfs = Convert.toInt(map.get("xzyfs"), 12);// 薪酬月份数 + Integer workingDays = Convert.toInt(map.get("sxmzdgts"), 1);// 实习每周到岗天数 + Integer internshipDuration = Convert.toInt(map.get("sxscy"), 1);// 实习时长(月) + String jobCategory = "不限";//职位类别 + + int experienceValue = -1;//不限 + if ("应届毕业生".equals(workYears)) { + experienceValue = 1; + } else if ("一年以内".equals(workYears)) { + experienceValue = 1; + } else if ("1-3年".equals(workYears)) { + experienceValue = 2; + } else if ("3-5年".equals(workYears)) { + experienceValue = 3; + } else if ("5-10年".equals(workYears)) { + experienceValue = 5; + } else if ("10年以上".equals(workYears)) { + experienceValue = 6; + } + + + int educationValue = -1; //不限 + if ("博士".equals(education)) { + educationValue = 8; + } else if ("MBA/EMBA".equals(education)) { + educationValue = 7; + } else if ("硕士".equals(education)) { + educationValue = 6; + } else if ("本科".equals(education)) { + educationValue = 5; + } else if ("大专".equals(education)) { + educationValue = 4; + } else if ("中专/中技".equals(education)) { + educationValue = 3; + } else if ("高中".equals(education)) { + educationValue = 2; + } else if ("初中及以下".equals(education)) { + educationValue = 1; + } + + int resumeType = 1;// 兼职、全职 + if ("实习".equals(positionNature)) { + resumeType = 3; + } else if ("校招".equals(positionNature)) { + resumeType = 2; + } + + + // 招聘职位类型与特殊设置字段 + ResumeJobDto resumeJobDto = new ResumeJobDto(); + resumeJobDto.setResumeType(resumeType); // (必填,默认社招)招聘类型 1:社招 2:校招 3:实习 + resumeJobDto.setStopReumeTimeLong(stringTurnLong(finishTime));// (校招必填)仅校招: 招聘截止时间(时间戳) + resumeJobDto.setRequirementsTime(internshipDuration); // (实习必填,默认1个月)仅实习: 实习时长 1~12 单位:(月) + resumeJobDto.setWorkDate(workingDays); // (实习必填,默认1天)仅实习: 每周到岗天数 1~7 单位:(天) + + // 招聘职位基本描述 + resumeJobDto.setJobname(positionName); // 配置职位名称 + resumeJobDto.setJobdesc(positionDuty); // 配置职位描述 + resumeJobDto.setJobType(jobCategory); // 配置职位类别 + + // 招聘职位条件 + //resumeJobDto.setKeywordStr(Lists.newArrayList("java")); // 职位关键词 + resumeJobDto.setExperience(experienceValue); // (必填,默认不限)经验要求(实习无此字段) -1:不限 1:一年以下 2:1~3年 3:3~5年 5:5~10年 6:10年以上 + resumeJobDto.setEducation(educationValue); // (必填,默认不限)学历要求 -1:不限 1:初中及以下 2:高中 3:中专/中技 4:大专 5:本科 6:硕士 7:MBA/EMBA 8:博士 + + //薪资福利 + resumeJobDto.setExpectSalaryStart(salaryMin); // (必填)薪资范围开始 单位:(社招/校招: 千元/月 实习:元/日) + resumeJobDto.setExpectSalaryStop(salaryMax); // (必填)薪资范围截止 单位:(社招/校招: 千元/月 实习:元/日) + resumeJobDto.setExpectSalaryMonth(xcyfs); // (必填,默认12个月)薪资月份数(实习无此字段) 12~24 + + // (必填)要发布的渠道(平台)Id + List platformIds = matchPlatform(Convert.toStr(map.get("dsfqd"))); + resumeJobDto.setPlatformIds(platformIds); + + // 简历匹配度设置 + resumeJobDto.setMappingageStart(-1); // (必填,默认不限)匹配年龄age开始 -1:不限 + resumeJobDto.setMappingageStop(-1);// (必填,默认不限)匹配年龄age开始 -1:不限 + resumeJobDto.setMappingSex(-1);// (必填,默认不限)匹配性别 -1:不限 0:女 1:男 + resumeJobDto.setMappingeducationStr(Collections.singletonList(-1));// (必填,默认不限)匹配学历 -1:不限 1:初中及以下 2:高中 3:中专/中技 4:大专 5:本科 6:硕士 7:MBA/EMBA 8:博士 + resumeJobDto.setMappingexperienceStr(Collections.singletonList(-1));// (必填,默认不限)匹配经验 -1:不限 1:1年内 2:1~3年 3:3~5年 4:5~10年 5:10年以上 +// resumeJobDto.setMappingKeywordStr(Lists.newArrayList()); // 匹配关键词内容 + resumeJobDto.setMappingStatus(1); // (必填,默认任一命中)匹配模式 1:任一命中 2:全部命中 + + return resumeJobDto; + } + + /** + * 将字符串形式的时间转换为长整型时间戳 + * + * @param timeString 字符串形式的时间 + * @return 长整型时间戳 + */ + private static long stringTurnLong(String timeString) { + try { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date date = dateFormat.parse(timeString); + return date.getTime(); + } catch (ParseException e) { + //e.printStackTrace(); + new BaseBean().writeLog(e); + } + return 0; + } + + /** + * 匹配三方发布平台 + * + * @param platformIds 发布平台ids + * @return 发布平台 + */ + private static List matchPlatform(String platformIds) { + String[] split = platformIds.split(","); + List platformIdList = new ArrayList<>(); + for (String platformId : split) { + if (platformId == null) { + continue; + } + PositionThirdChannelEnum channelEnum = PositionThirdChannelEnum.getEnum(platformId); + switch (channelEnum) { + case BOSS: + platformIdList.add(ResumePlatform.BOSSZHIPIN); + break; + case LIE_PIN: + platformIdList.add(ResumePlatform.LIEPIN); + break; + case LA_GOU: + platformIdList.add(ResumePlatform.LAGO); + break; + case D51_JOB: + platformIdList.add(ResumePlatform.QIANCHENGWUYOU); + break; + case ZHI_LIAN: + platformIdList.add(ResumePlatform.ZHILIANZHAOPIN); + break; + default: + break; + } + } + return platformIdList; + } + + public static boolean checkAvailable(ERPAResumeSDKClient client) { + HttpClientUtils.setTimeout(10000);//默认10秒 + if (client == null || !client.available()) { + new BaseBean().writeLog("checkAvailable!client=" + JSON.toJSONString(client)); + return false; + } else { + return true; + } + } + +} From 490b71d5dffc241bd62d7aab293085c22d121ea0 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 10 Oct 2023 09:27:46 +0800 Subject: [PATCH 27/36] =?UTF-8?q?=E7=AE=80=E5=8E=86=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=EF=BC=8C=E5=8E=9F=E5=A7=8B=E7=AE=80=E5=8E=86=E5=8F=8D=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApplicantResumeController.java | 9 ++ .../service/ApplicantResumeService.java | 9 ++ .../impl/ApplicantResumeServiceImpl.java | 94 ++++++++++++++++++- .../wrapper/ApplicantResumeWrapper.java | 8 +- 4 files changed, 118 insertions(+), 2 deletions(-) diff --git a/src/com/engine/recruit/controller/ApplicantResumeController.java b/src/com/engine/recruit/controller/ApplicantResumeController.java index 7ae878a..f6d85d0 100644 --- a/src/com/engine/recruit/controller/ApplicantResumeController.java +++ b/src/com/engine/recruit/controller/ApplicantResumeController.java @@ -72,4 +72,13 @@ public class ApplicantResumeController { Map params = ParamUtil.request2Map(request); return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::updateApplicantsInfo, params); } + + @POST + @Path("/fullOriginalResumeId") + @Produces(MediaType.APPLICATION_JSON) + public String fullOriginalResumeId(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map param = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::fullOriginalResumeId, param); + } } diff --git a/src/com/engine/recruit/service/ApplicantResumeService.java b/src/com/engine/recruit/service/ApplicantResumeService.java index 1a40444..ab0cb8e 100644 --- a/src/com/engine/recruit/service/ApplicantResumeService.java +++ b/src/com/engine/recruit/service/ApplicantResumeService.java @@ -53,4 +53,13 @@ public interface ApplicantResumeService { * @return */ Map updateApplicantsInfo(Map params); + + + /** + * 完善OCR导入的简历,原始简历字段 + * + * @param params + * @return + */ + Map fullOriginalResumeId(Map params); } diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index 622c736..54d833b 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -1,12 +1,20 @@ package com.engine.recruit.service.impl; +import cn.hutool.core.convert.Convert; import com.engine.core.impl.Service; import com.engine.recruit.enums.ApplicantOperateEnum; import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.service.ApplicantResumeService; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import weaver.docs.docs.DocCoder; +import weaver.docs.docs.DocComInfo; +import weaver.docs.docs.DocImageManager; +import weaver.docs.docs.DocManager; +import weaver.file.ImageFileManager; +import weaver.general.TimeUtil; import weaver.general.Util; +import weaver.hrm.User; import weaver.hrm.resource.ResourceComInfo; import java.util.ArrayList; @@ -147,7 +155,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu RecordSet rs = new RecordSet(); if (ApplicantOperateEnum.ELIMINATE.getOperateType().equals(operateType)) { String ids = Util.null2String(params.get("ids")); - rs.executeUpdate("update uf_jcl_yppc set zt = ? where id in (?)", ApplicationStatusEnum.OBSOLETE.getValue(), ids); + rs.executeUpdate("update uf_jcl_yppc set zt = ? where id in (" + ids + ")", ApplicationStatusEnum.OBSOLETE.getValue()); } if (ApplicantOperateEnum.TRANSFER.getOperateType().equals(operateType)) { String dqypjd = Util.null2String(params.get("dqypjd")); @@ -157,6 +165,23 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu return returnMap; } + @Override + public Map fullOriginalResumeId(Map params) { + int imageFileId = Convert.toInt(params.get("imageFileId")); + int resumeId = Convert.toInt(params.get("resumeId")); + int secCategory = Convert.toInt(params.get("secCategory")); + RecordSet rs = new RecordSet(); + try { + int docId = createDocId(secCategory, imageFileId, user); + rs.executeUpdate("update uf_jcl_yppc set ysjl=? where id = ?", docId, resumeId); + + } catch (Exception e) { + throw new RuntimeException(e); + } + + return new HashMap<>(); + } + /** * 构建普通数据格式 * @@ -248,4 +273,71 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu return browserMap; } + + /** + * 原始简历imageFieldId生成docId + * @param secCategory + * @param imageFieldId + * @param user + * @return + * @throws Exception + */ + public int createDocId(int secCategory, int imageFieldId, User user) throws Exception { + ImageFileManager manager = new ImageFileManager(); + manager.getImageFileInfoById(imageFieldId); + String filenameqc = manager.getImageFileName(); + String filenamebc = filenameqc.substring(0, filenameqc.lastIndexOf(".")); + RecordSet rs = new RecordSet(); + DocManager dm = new DocManager(); + DocImageManager imgManger = new DocImageManager(); + + imgManger.setDocfiletype("2"); + + int docId = dm.getNextDocId(rs); + imgManger.setDocid(docId); + imgManger.setImagefileid(imageFieldId); + imgManger.setImagefilename(filenameqc); + imgManger.setIsextfile("1"); + imgManger.AddDocImageInfo(); + + String date = TimeUtil.getCurrentDateString(); + String time = TimeUtil.getOnlyCurrentTimeString(); + dm.setId(docId); + dm.setMaincategory(0); + dm.setSubcategory(0); + dm.setSeccategory(secCategory); + dm.setLanguageid(user.getLanguage()); + + dm.setDocstatus("1"); + dm.setDocsubject(filenamebc); + dm.setDoccreaterid(user.getUID()); + dm.setDocCreaterType(user.getLogintype()); + dm.setUsertype(user.getLogintype()); + dm.setOwnerid(user.getUID()); + dm.setOwnerType(user.getLogintype()); + dm.setDoclastmoduserid(user.getUID()); + dm.setDocLastModUserType(user.getLogintype()); + dm.setDoccreatedate(date); + dm.setDoclastmoddate(date); + dm.setDoccreatetime(time); + dm.setDoclastmodtime(time); + dm.setDoclangurage(user.getLanguage()); + dm.setKeyword(filenameqc); + dm.setIsapprover("0"); + dm.setIsreply(""); + dm.setDocdepartmentid(user.getUserDepartment()); + dm.setDocreplyable("1"); + dm.setAccessorycount(1); + dm.setParentids("" + docId); + dm.setUserid(user.getUID()); + DocCoder docCoder = new DocCoder(); + dm.setDocCode(docCoder.getDocCoder(""+secCategory)); + dm.setDocEditionId(dm.getNextEditionId(rs)); + dm.setDocEdition(1); + dm.AddDocInfo(); + dm.AddShareInfo(); + DocComInfo dc = new DocComInfo(); + dc.addDocInfoCache("" + docId); + return docId; + } } diff --git a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java index 3d3a54a..1c52ab4 100644 --- a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java +++ b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java @@ -29,10 +29,16 @@ public class ApplicantResumeWrapper extends Service { public Map getDisplayLayoutId(Map params) { return getApplicantResumeService(user).getDisplayLayoutId(params); } + public Map getTabCount(Map params) { return getApplicantResumeService(user).getTabCount(params); } - public Map updateApplicantsInfo(Map params) { + + public Map updateApplicantsInfo(Map params) { return getApplicantResumeService(user).updateApplicantsInfo(params); } + + public Map fullOriginalResumeId(Map params) { + return getApplicantResumeService(user).fullOriginalResumeId(params); + } } From 82d4edb3e095cda6d31d2691d82cd86bea41141e Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 10 Oct 2023 09:28:06 +0800 Subject: [PATCH 28/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E8=81=8C=E4=BD=8D?= =?UTF-8?q?=EF=BC=8C=E6=89=B9=E9=87=8F=E7=A7=BB=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RecruitPositionController.java | 12 ++++++ .../controller/RecruitPositionController.java | 37 +++++++++++++++++++ .../service/RecruitPositionService.java | 20 ++++++++++ .../impl/RecruitPositionServiceImpl.java | 37 +++++++++++++++++++ .../wrapper/RecruitPositionWrapper.java | 24 ++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 src/com/api/recruit/controller/RecruitPositionController.java create mode 100644 src/com/engine/recruit/controller/RecruitPositionController.java create mode 100644 src/com/engine/recruit/service/RecruitPositionService.java create mode 100644 src/com/engine/recruit/service/impl/RecruitPositionServiceImpl.java create mode 100644 src/com/engine/recruit/wrapper/RecruitPositionWrapper.java diff --git a/src/com/api/recruit/controller/RecruitPositionController.java b/src/com/api/recruit/controller/RecruitPositionController.java new file mode 100644 index 0000000..d8ccf49 --- /dev/null +++ b/src/com/api/recruit/controller/RecruitPositionController.java @@ -0,0 +1,12 @@ +package com.api.recruit.controller; + +import javax.ws.rs.Path; + +/** + * @author:dxfeng + * @createTime: 2023/10/09 + * @version: 1.0 + */ +@Path("/jcl/recruit/position") +public class RecruitPositionController extends com.engine.recruit.controller.RecruitPositionController{ +} diff --git a/src/com/engine/recruit/controller/RecruitPositionController.java b/src/com/engine/recruit/controller/RecruitPositionController.java new file mode 100644 index 0000000..e2e1c49 --- /dev/null +++ b/src/com/engine/recruit/controller/RecruitPositionController.java @@ -0,0 +1,37 @@ +package com.engine.recruit.controller; + +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.recruit.util.ResponseResult; +import com.engine.recruit.wrapper.RecruitPositionWrapper; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/09 + * @version: 1.0 + */ +public class RecruitPositionController { + public RecruitPositionWrapper getRecruitPositionWrapper(User user) { + return ServiceUtil.getService(RecruitPositionWrapper.class, user); + } + + @POST + @Path("/updatePostInfo") + @Produces(MediaType.APPLICATION_JSON) + public String updatePostInfo(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map param = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getRecruitPositionWrapper(user)::updatePostInfo, param); + } +} diff --git a/src/com/engine/recruit/service/RecruitPositionService.java b/src/com/engine/recruit/service/RecruitPositionService.java new file mode 100644 index 0000000..f7d9540 --- /dev/null +++ b/src/com/engine/recruit/service/RecruitPositionService.java @@ -0,0 +1,20 @@ +package com.engine.recruit.service; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/09 + * @version: 1.0 + */ +public interface RecruitPositionService { + + /** + * 更新职位信息 + * + * @param param + * @return + */ + Map updatePostInfo(Map param); + +} diff --git a/src/com/engine/recruit/service/impl/RecruitPositionServiceImpl.java b/src/com/engine/recruit/service/impl/RecruitPositionServiceImpl.java new file mode 100644 index 0000000..96f1a80 --- /dev/null +++ b/src/com/engine/recruit/service/impl/RecruitPositionServiceImpl.java @@ -0,0 +1,37 @@ +package com.engine.recruit.service.impl; + +import com.engine.core.impl.Service; +import com.engine.recruit.exception.CustomizeRunTimeException; +import com.engine.recruit.service.RecruitPositionService; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/09 + * @version: 1.0 + */ +public class RecruitPositionServiceImpl extends Service implements RecruitPositionService { + /** + * 招聘职位建模表 + */ + private static final String MODE_TABLE_NAME = "uf_jcl_zp_zpzw"; + + @Override + public Map updatePostInfo(Map param) { + Map returnMap = new HashMap<>(); + String zpzwfzr = Util.null2String(param.get("zpzwfzr")); + String zpxzr = Util.null2String(param.get("zpxzr")); + String ids = Util.null2String(param.get("ids")); + if (StringUtils.isBlank(ids)) { + throw new CustomizeRunTimeException("数据有误,请重试"); + } + RecordSet rs = new RecordSet(); + rs.executeUpdate(" update " + MODE_TABLE_NAME + " set zpzwfzr = ? ,zpxzr = ? where id in (" + ids + ")", zpzwfzr, zpxzr); + return returnMap; + } +} diff --git a/src/com/engine/recruit/wrapper/RecruitPositionWrapper.java b/src/com/engine/recruit/wrapper/RecruitPositionWrapper.java new file mode 100644 index 0000000..3b837af --- /dev/null +++ b/src/com/engine/recruit/wrapper/RecruitPositionWrapper.java @@ -0,0 +1,24 @@ +package com.engine.recruit.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.recruit.service.RecruitPositionService; +import com.engine.recruit.service.impl.RecruitPositionServiceImpl; +import weaver.hrm.User; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/09 + * @version: 1.0 + */ +public class RecruitPositionWrapper extends Service { + private RecruitPositionService getRecruitPositionService(User user) { + return ServiceUtil.getService(RecruitPositionServiceImpl.class, user); + } + + public Map updatePostInfo(Map param) { + return getRecruitPositionService(user).updatePostInfo(param); + } +} From 0f69915b09e9fe772f0666ff5fb40e4cf5d89613 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 10 Oct 2023 09:28:13 +0800 Subject: [PATCH 29/36] =?UTF-8?q?=E5=8D=83=E9=87=8C=E8=81=86=E8=81=8C?= =?UTF-8?q?=E4=BD=8D=E5=8F=91=E5=B8=83=E3=80=81=E8=81=8C=E4=BD=8D=E4=B8=8B?= =?UTF-8?q?=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../position/ClosePositionModeExpand.java | 10 ++++++++- .../position/ReleasePositionModeExpand.java | 22 +++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java b/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java index 64660ad..cd0baf2 100644 --- a/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java @@ -2,6 +2,7 @@ package weaver.formmode.recruit.modeexpand.position; import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient; import com.weaver.rpa.sdk.clients.core.ERPASDKClients; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; import weaver.general.BaseBean; @@ -36,7 +37,14 @@ public class ClosePositionModeExpand extends AbstractModeExpandJavaCodeNew { RecordSet rs = new RecordSet(); rs.executeQuery("select qllgwid from " + tableName + " where id = ?", billId); if (rs.next()) { - long jobId = Long.parseLong(rs.getString("qllgwid")); + String qllgwid = rs.getString("qllgwid"); + if (StringUtils.isBlank(qllgwid)) { + new BaseBean().writeLog("billId=" + billId + ",当前职位暂未发布,无需进行下架操作"); + result.put("errmsg", "当前职位暂未发布,无需进行下架操作"); + result.put("flag", "false"); + return result; + } + long jobId = Long.parseLong(qllgwid); ERPAResumeSDKClient client = ERPASDKClients.getResumeSDKClient(); client.start(); String userId = String.valueOf(user.getUID()); diff --git a/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java index d370b42..a574f76 100644 --- a/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java @@ -3,6 +3,7 @@ package weaver.formmode.recruit.modeexpand.position; import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient; import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobDto; import com.weaver.rpa.sdk.clients.core.ERPASDKClients; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; import weaver.formmode.recruit.modeexpand.util.RecruitPositionUtil; @@ -28,7 +29,7 @@ public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { public Map doModeExpand(Map param) { String tableName = "uf_jcl_zp_zpzw"; - Map result = new HashMap<>(16); + Map resultMap = new HashMap<>(16); try { User user = (User) param.get("user"); int billId; @@ -42,7 +43,10 @@ public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { RecordSet rs = new RecordSet(); rs.executeQuery("select qllgwid from " + tableName + " where id = ?", billId); if (rs.next()) { - jobId = Long.parseLong(rs.getString("qllgwid")); + String qllgwid = rs.getString("qllgwid"); + if (StringUtils.isNotBlank(qllgwid)) { + jobId = Long.parseLong(qllgwid); + } } ERPAResumeSDKClient client = ERPASDKClients.getResumeSDKClient(); Map map = new HashMap<>(16); @@ -55,11 +59,11 @@ public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { // 发布千里聆职位 if (!RecruitPositionUtil.checkAvailable(client)) { new BaseBean().writeLog("千里聆未开通简历应用。"); - result.put("errmsg", "千里聆未开通简历应用。"); - result.put("flag", "false"); + resultMap.put("errmsg", "千里聆未开通简历应用。"); + resultMap.put("flag", "false"); + return resultMap; } String userId = String.valueOf(user.getUID()); - // TODO 测试数据 userId = "26"; // 未创建职位,则先创建职位 if (jobId == -1) { // 创建千里聆职位 @@ -69,7 +73,7 @@ public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { } // 发布职位 - client.setRobotAuthority(userId,userId,false); + client.setRobotAuthority(userId, userId, false); client.start(); List platformIds = resumeJobDto.getPlatformIds(); for (Integer platformId : platformIds) { @@ -81,10 +85,10 @@ public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { } } catch (Exception e) { new BaseBean().writeLog(e); - result.put("errmsg", e.getMessage()); - result.put("flag", "false"); + resultMap.put("errmsg", e.getMessage()); + resultMap.put("flag", "false"); } - return result; + return resultMap; } } \ No newline at end of file From 3b0f62a3c0987bff05c1bd1587ce15a065d3b46b Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 10 Oct 2023 11:06:09 +0800 Subject: [PATCH 30/36] =?UTF-8?q?=E5=85=A5=E8=81=8C=E7=AE=A1=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E8=BA=AB=E4=BB=BD=E8=AF=81=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/recruit/enums/EntryStatusEnum.java | 41 +++++++++++++++++++ .../entrymanager/AddEntryModeExpand.java | 33 +++++++++++++-- 2 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 src/com/engine/recruit/enums/EntryStatusEnum.java diff --git a/src/com/engine/recruit/enums/EntryStatusEnum.java b/src/com/engine/recruit/enums/EntryStatusEnum.java new file mode 100644 index 0000000..f17783d --- /dev/null +++ b/src/com/engine/recruit/enums/EntryStatusEnum.java @@ -0,0 +1,41 @@ +package com.engine.recruit.enums; + +/** + * 入职状态枚举类 + * + * @author:dxfeng + * @createTime: 2023/10/10 + * @version: 1.0 + */ +public enum EntryStatusEnum { + /** + * 入职状态 + */ + PENDING("0", "待入职"), + EMPLOYED("0", "已入职"), + CANCEL("0", "取消入职"); + + EntryStatusEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } + + private String value; + private String desc; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java b/src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java index de3a2f2..f46c27a 100644 --- a/src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/entrymanager/AddEntryModeExpand.java @@ -1,8 +1,12 @@ package weaver.formmode.recruit.modeexpand.entrymanager; +import com.engine.recruit.enums.EntryStatusEnum; +import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; 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; @@ -25,11 +29,34 @@ public class AddEntryModeExpand extends AbstractModeExpandJavaCodeNew { billId = Util.getIntValue(requestInfo.getRequestid()); modeId = Util.getIntValue(requestInfo.getWorkflowid()); if (billId > 0 && modeId > 0) { - String dqypjd = Util.null2String(param.get("dqypjd")); - String pcid = Util.null2String(param.get("pcid")); + 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(); + String pcid = mainDataMap.get("pcid"); + String sfzh = mainDataMap.get("sfzh"); + String rzzt = mainDataMap.get("rzzt"); + // 根据身份证号,判定,只能有一个状态为待入职的数据 + if (EntryStatusEnum.PENDING.getValue().equals(rzzt)) { + rs.executeQuery("select count(id) as num from uf_jcl_rzgl where sfzh = ? and id != ? and rzzt = ? ", sfzh, billId, rzzt); + int countNum = 0; + if (rs.next()) { + countNum = rs.getInt("num"); + } + if (countNum > 0) { + result.put("errmsg", "当前身份证号已存在待入职状态数据"); + result.put("flag", "false"); + return result; + } + } // 更新应聘者当前应聘阶段 - rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, pcid); + String dqypjd = Util.null2String(param.get("dqypjd")); + if (StringUtils.isNotBlank(dqypjd)) { + rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, pcid); + } } } } catch (Exception e) { From 247011b46879181b087471036f8d9dda06b078e4 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 10 Oct 2023 11:06:31 +0800 Subject: [PATCH 31/36] =?UTF-8?q?=E5=8D=83=E9=87=8C=E8=81=86=E8=81=8C?= =?UTF-8?q?=E4=BD=8D=E5=8F=91=E5=B8=83=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/enums/PositionThirdChannelEnum.java | 4 +++- .../position/ReleasePositionModeExpand.java | 8 ++++++-- .../recruit/modeexpand/util/RecruitPositionUtil.java | 12 ++++++++++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/com/engine/recruit/enums/PositionThirdChannelEnum.java b/src/com/engine/recruit/enums/PositionThirdChannelEnum.java index 443f235..2f86fc6 100644 --- a/src/com/engine/recruit/enums/PositionThirdChannelEnum.java +++ b/src/com/engine/recruit/enums/PositionThirdChannelEnum.java @@ -1,5 +1,7 @@ package com.engine.recruit.enums; +import com.engine.recruit.exception.CustomizeRunTimeException; + /** * 发布渠道枚举类 * @@ -37,6 +39,6 @@ public enum PositionThirdChannelEnum { return item; } } - throw new RuntimeException("不支持的发布渠道"); + throw new CustomizeRunTimeException("不支持的发布渠道"); } } diff --git a/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java index a574f76..00db3b3 100644 --- a/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java @@ -1,5 +1,6 @@ package weaver.formmode.recruit.modeexpand.position; +import com.alibaba.fastjson.JSON; import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient; import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobDto; import com.weaver.rpa.sdk.clients.core.ERPASDKClients; @@ -72,8 +73,11 @@ public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { rs.executeUpdate("update " + tableName + " set qllgwid = ? where id = ?", jobId, billId); } - // 发布职位 - client.setRobotAuthority(userId, userId, false); + // 在启动监听前需要配置好简历接收回调 + client.addResumeSavedListener(resumeMqMessage -> { + new BaseBean().writeLog(JSON.toJSONString(resumeMqMessage)); + }); + client.start(); List platformIds = resumeJobDto.getPlatformIds(); for (Integer platformId : platformIds) { diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java index d0ef547..430da67 100644 --- a/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java +++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java @@ -3,10 +3,12 @@ package weaver.formmode.recruit.modeexpand.util; import cn.hutool.core.convert.Convert; import com.alibaba.fastjson.JSON; import com.engine.recruit.enums.PositionThirdChannelEnum; +import com.engine.recruit.exception.CustomizeRunTimeException; import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient; import com.weaver.rpa.sdk.clients.application.resume.common.ResumePlatform; import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobDto; import com.weaver.rpa.sdk.utils.HttpClientUtils; +import org.apache.commons.lang3.StringUtils; import weaver.general.BaseBean; import java.text.ParseException; @@ -88,6 +90,9 @@ public class RecruitPositionUtil { // 招聘职位类型与特殊设置字段 ResumeJobDto resumeJobDto = new ResumeJobDto(); resumeJobDto.setResumeType(resumeType); // (必填,默认社招)招聘类型 1:社招 2:校招 3:实习 + if (2 == resumeType && StringUtils.isBlank(finishTime)) { + throw new CustomizeRunTimeException("校招招聘截止时间必填"); + } resumeJobDto.setStopReumeTimeLong(stringTurnLong(finishTime));// (校招必填)仅校招: 招聘截止时间(时间戳) resumeJobDto.setRequirementsTime(internshipDuration); // (实习必填,默认1个月)仅实习: 实习时长 1~12 单位:(月) resumeJobDto.setWorkDate(workingDays); // (实习必填,默认1天)仅实习: 每周到岗天数 1~7 单位:(天) @@ -129,7 +134,10 @@ public class RecruitPositionUtil { * @param timeString 字符串形式的时间 * @return 长整型时间戳 */ - private static long stringTurnLong(String timeString) { + private static Long stringTurnLong(String timeString) { + if (StringUtils.isBlank(timeString)) { + return null; + } try { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = dateFormat.parse(timeString); @@ -138,7 +146,7 @@ public class RecruitPositionUtil { //e.printStackTrace(); new BaseBean().writeLog(e); } - return 0; + return 0L; } /** From 5a816dc1498495c6f6e454b06b68402123ac8415 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 10 Oct 2023 16:14:49 +0800 Subject: [PATCH 32/36] =?UTF-8?q?=E5=8D=83=E9=87=8C=E8=81=86=E8=81=8C?= =?UTF-8?q?=E4=BD=8D=E5=8F=91=E5=B8=83=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/PositionThirdChannelEnum.java | 22 ++++++++--- .../position/ClosePositionModeExpand.java | 2 +- .../position/ReleasePositionModeExpand.java | 38 ++++++++++++++++++- .../modeexpand/util/RecruitPositionUtil.java | 23 +++++++---- 4 files changed, 69 insertions(+), 16 deletions(-) diff --git a/src/com/engine/recruit/enums/PositionThirdChannelEnum.java b/src/com/engine/recruit/enums/PositionThirdChannelEnum.java index 2f86fc6..dc7276a 100644 --- a/src/com/engine/recruit/enums/PositionThirdChannelEnum.java +++ b/src/com/engine/recruit/enums/PositionThirdChannelEnum.java @@ -13,17 +13,19 @@ public enum PositionThirdChannelEnum { /** * 发布渠道 */ - BOSS("0"), - ZHI_LIAN("1"), - D51_JOB("2"), - LA_GOU("3"), - LIE_PIN("4"); + BOSSZHIPIN("0", "BOSS直聘"), + ZHILIANZHAOPIN("1", "智联"), + QIANCHENGWUYOU("2", "前程无忧"), + LAGO("3", "拉勾"), + LIEPIN("4", "猎聘"); - PositionThirdChannelEnum(String value) { + PositionThirdChannelEnum(String value, String desc) { this.value = value; + this.desc = desc; } private String value; + private String desc; public String getValue() { return value; @@ -33,6 +35,14 @@ public enum PositionThirdChannelEnum { this.value = value; } + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + public static PositionThirdChannelEnum getEnum(String value) { for (PositionThirdChannelEnum item : PositionThirdChannelEnum.values()) { if (item.value.equalsIgnoreCase(value)) { diff --git a/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java b/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java index cd0baf2..9d67b04 100644 --- a/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/position/ClosePositionModeExpand.java @@ -49,7 +49,7 @@ public class ClosePositionModeExpand extends AbstractModeExpandJavaCodeNew { client.start(); String userId = String.valueOf(user.getUID()); client.closeResumeJob(userId, jobId); - rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", jobId, 5, billId); + rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", 5, billId); } } } diff --git a/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java index 00db3b3..7ebdcd1 100644 --- a/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/position/ReleasePositionModeExpand.java @@ -6,6 +6,8 @@ import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobDto; import com.weaver.rpa.sdk.clients.core.ERPASDKClients; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import weaver.erpa.apps.entity.application.resume.dto.ResumeTaskResult; +import weaver.erpa.apps.entity.application.resume.enums.TaskResult; import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; import weaver.formmode.recruit.modeexpand.util.RecruitPositionUtil; import weaver.general.BaseBean; @@ -79,9 +81,41 @@ public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew { }); client.start(); - List platformIds = resumeJobDto.getPlatformIds(); + List platformIds; + platformIds = resumeJobDto.getPlatformIds(); + String errorMsg = ""; for (Integer platformId : platformIds) { - client.releaseResumeJob(userId, jobId, platformId); + ResumeTaskResult result = client.releaseResumeJob(userId, jobId, platformId); + // 直接查看结果,正在执行中会返回PENGING,成功后会返回SUCCEED,失败后会返回FAILED + TaskResult current = result.getResult(); + new BaseBean().writeLog(current); + // 使用回调函数获取成功或者失败时的消息 + result.onResult(() -> { + new BaseBean().writeLog("执行成功回调"); + }, (reason) -> { + new BaseBean().writeLog("执行失败回调,原因:" + reason); + }); + + // 等待直到状态不再是PENDING + TaskResult taskResult = result.waitResult(); + new BaseBean().writeLog(taskResult); + if (taskResult == TaskResult.SUCCEED) { + new BaseBean().writeLog("执行成功"); + } else { + errorMsg = "执行失败,原因:" + result.getFailReason(); + new BaseBean().writeLog(errorMsg); + break; + } + } + if (StringUtils.isNotBlank(errorMsg)) { + // 发布失败,下架职位 + client.closeResumeJob(userId, jobId); + // 更新状态为发布失败 + rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", 3, billId); + resultMap.put("errmsg", errorMsg); + resultMap.put("flag", "false"); + return resultMap; + } // 更新状态为已发布 rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", 2, billId); diff --git a/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java b/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java index 430da67..55b9960 100644 --- a/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java +++ b/src/weaver/formmode/recruit/modeexpand/util/RecruitPositionUtil.java @@ -24,6 +24,16 @@ import java.util.*; */ public class RecruitPositionUtil { + static Map thirdChannelMap = new HashMap<>(); + + static { + thirdChannelMap.put(ResumePlatform.LAGO, PositionThirdChannelEnum.LAGO); + thirdChannelMap.put(ResumePlatform.BOSSZHIPIN, PositionThirdChannelEnum.BOSSZHIPIN); + thirdChannelMap.put(ResumePlatform.ZHILIANZHAOPIN, PositionThirdChannelEnum.ZHILIANZHAOPIN); + thirdChannelMap.put(ResumePlatform.QIANCHENGWUYOU, PositionThirdChannelEnum.QIANCHENGWUYOU); + thirdChannelMap.put(ResumePlatform.LIEPIN, PositionThirdChannelEnum.LIEPIN); + } + /** * 将Map转换成ResumeJobDto对象 * @@ -143,10 +153,9 @@ public class RecruitPositionUtil { Date date = dateFormat.parse(timeString); return date.getTime(); } catch (ParseException e) { - //e.printStackTrace(); new BaseBean().writeLog(e); } - return 0L; + return null; } /** @@ -164,19 +173,19 @@ public class RecruitPositionUtil { } PositionThirdChannelEnum channelEnum = PositionThirdChannelEnum.getEnum(platformId); switch (channelEnum) { - case BOSS: + case BOSSZHIPIN: platformIdList.add(ResumePlatform.BOSSZHIPIN); break; - case LIE_PIN: + case LIEPIN: platformIdList.add(ResumePlatform.LIEPIN); break; - case LA_GOU: + case LAGO: platformIdList.add(ResumePlatform.LAGO); break; - case D51_JOB: + case QIANCHENGWUYOU: platformIdList.add(ResumePlatform.QIANCHENGWUYOU); break; - case ZHI_LIAN: + case ZHILIANZHAOPIN: platformIdList.add(ResumePlatform.ZHILIANZHAOPIN); break; default: From 16fe39b7420444be1c78df7f5a6f2c65ea62f525 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Wed, 11 Oct 2023 15:50:18 +0800 Subject: [PATCH 33/36] =?UTF-8?q?=E7=AE=80=E5=8E=86=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=BD=95=E5=85=A5=EF=BC=8C=E5=BE=85=E5=88=86=E9=85=8D=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/service/impl/ApplicantResumeServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index 54d833b..1d2c889 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -173,7 +173,8 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu RecordSet rs = new RecordSet(); try { int docId = createDocId(secCategory, imageFileId, user); - rs.executeUpdate("update uf_jcl_yppc set ysjl=? where id = ?", docId, resumeId); + // 更新原始简历信息,设置应聘状态未待分配 + rs.executeUpdate("update uf_jcl_yppc set ysjl=?,zt=? where id = ?", docId, 0, resumeId); } catch (Exception e) { throw new RuntimeException(e); @@ -276,6 +277,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu /** * 原始简历imageFieldId生成docId + * * @param secCategory * @param imageFieldId * @param user @@ -331,7 +333,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu dm.setParentids("" + docId); dm.setUserid(user.getUID()); DocCoder docCoder = new DocCoder(); - dm.setDocCode(docCoder.getDocCoder(""+secCategory)); + dm.setDocCode(docCoder.getDocCoder("" + secCategory)); dm.setDocEditionId(dm.getNextEditionId(rs)); dm.setDocEdition(1); dm.AddDocInfo(); From fee1614a53a0d29b51576ba79db97d62ca1cace5 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 12 Oct 2023 13:33:49 +0800 Subject: [PATCH 34/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E9=A1=B5=E9=9D=A2=E5=B8=83=E5=B1=80=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/RecruitFlowController.java | 13 ++- .../entity/recruitflow/po/RecruitButton.java | 1 + .../entity/recruitflow/po/RecruitStepPo.java | 20 ++++ .../entity/recruitflow/po/RecruitTabPo.java | 60 ++++++++++++ .../recruit/service/RecruitFlowService.java | 12 ++- .../service/impl/RecruitFlowServiceImpl.java | 91 ++++++++++++++++--- .../engine/recruit/util/RecruitFlowUtil.java | 46 ++++++++++ .../recruit/wrapper/RecruitFlowWrapper.java | 8 +- 8 files changed, 232 insertions(+), 19 deletions(-) create mode 100644 src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java create mode 100644 src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java create mode 100644 src/com/engine/recruit/util/RecruitFlowUtil.java diff --git a/src/com/engine/recruit/controller/RecruitFlowController.java b/src/com/engine/recruit/controller/RecruitFlowController.java index 3342856..0d0c5d7 100644 --- a/src/com/engine/recruit/controller/RecruitFlowController.java +++ b/src/com/engine/recruit/controller/RecruitFlowController.java @@ -9,7 +9,7 @@ import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.POST; +import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; @@ -26,7 +26,7 @@ public class RecruitFlowController { return ServiceUtil.getService(RecruitFlowWrapper.class, user); } - @POST + @GET @Path("/getButtonList") @Produces(MediaType.APPLICATION_JSON) public String getButtonList(@Context HttpServletRequest request, @Context HttpServletResponse response) { @@ -34,4 +34,13 @@ public class RecruitFlowController { Map params = ParamUtil.request2Map(request); return new ResponseResult, Map>(user).run(getRecruitFlowWrapper(user)::getButtonList, params); } + + @GET + @Path("/getRecruitStepList") + @Produces(MediaType.APPLICATION_JSON) + public String getRecruitStepList(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return new ResponseResult, Map>(user).run(getRecruitFlowWrapper(user)::getRecruitStepList, params); + } } diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java index 1556f2a..f776839 100644 --- a/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java @@ -17,6 +17,7 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @Builder public class RecruitButton { + private String key; private String buttonName; private String tabName; private String tabLink; diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java new file mode 100644 index 0000000..0e15e28 --- /dev/null +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java @@ -0,0 +1,20 @@ +package com.engine.recruit.entity.recruitflow.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2023/10/12 + * @version: 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class RecruitStepPo { + private int key; + private String description; +} diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java new file mode 100644 index 0000000..77074ae --- /dev/null +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java @@ -0,0 +1,60 @@ +package com.engine.recruit.entity.recruitflow.po; + +import com.engine.recruit.util.RecruitFlowUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/11 + * @version: 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class RecruitTabPo { + private static final String SEARCH_URL = "/main/cube/search"; + private String key; + private String title; + private String url; + private String viewcondition; + + private String billId; + + public String getUrl() { + if (StringUtils.isNotBlank(url)) { + url = url.replaceAll("\\$parentid\\$", billId); + } + return url; + } + + public String getTitle() { + if (StringUtils.isNotBlank(url) && url.contains(SEARCH_URL)) { + Map paramMap = RecruitFlowUtil.parseURL(getUrl()); + String customId = paramMap.get("customid"); + if (StringUtils.isBlank(customId)) { + return title; + } + // 查询对应查询列表的表名 + RecordSet rs = new RecordSet(); + rs.executeQuery("select tablename from workflow_bill where id = (select formid from mode_customsearch where id = ?)", customId); + if (rs.next()) { + String tableName = rs.getString("tablename"); + String tabCount = "0"; + rs.executeQuery("select count(1) as num from " + tableName + " where pcid = ?", billId); + if (rs.next()) { + tabCount = rs.getString("num"); + } + title += "(" + tabCount + ")"; + } + } + return title; + } +} diff --git a/src/com/engine/recruit/service/RecruitFlowService.java b/src/com/engine/recruit/service/RecruitFlowService.java index 0463e0f..63a7ec9 100644 --- a/src/com/engine/recruit/service/RecruitFlowService.java +++ b/src/com/engine/recruit/service/RecruitFlowService.java @@ -14,8 +14,16 @@ public interface RecruitFlowService { /** * 获取当前阶段操作按钮 * - * @param params 参数 + * @param param 参数 * @return 操作按钮 */ - Map getButtonList(Map params); + Map getButtonList(Map param); + + /** + * 获取招聘阶段信息 + * + * @param param 参数 + * @return 招聘阶段 + */ + Map getRecruitStepList(Map param); } diff --git a/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java index 94f5830..b56dac8 100644 --- a/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java +++ b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java @@ -2,6 +2,9 @@ package com.engine.recruit.service.impl; import com.engine.core.impl.Service; import com.engine.recruit.entity.recruitflow.po.RecruitButton; +import com.engine.recruit.entity.recruitflow.po.RecruitStepPo; +import com.engine.recruit.entity.recruitflow.po.RecruitTabPo; +import com.engine.recruit.exception.CustomizeRunTimeException; import com.engine.recruit.service.RecruitFlowService; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; @@ -19,22 +22,29 @@ import java.util.Map; */ public class RecruitFlowServiceImpl extends Service implements RecruitFlowService { @Override - public Map getButtonList(Map params) { + public Map getButtonList(Map param) { Map returnMap = new HashMap<>(); - String modeId = Util.null2String(params.get("modeId")); - String formId = Util.null2String(params.get("formId")); - String billId = Util.null2String(params.get("billId")); + String billId = Util.null2String(param.get("billId")); - // 当前阶段 - String stageId = Util.null2String(params.get("stageId")); + // 招聘阶段ID + String stageId = ""; + // 招聘流程ID + int recruitFlowId = -1; - //TODO 查询对应的招聘流程 - int zplcId = 3; - List buttonList = new ArrayList<>(); RecordSet rs = new RecordSet(); + rs.executeQuery("select zplc,zpjd from uf_jcl_yppc where id = ?", billId); + if (rs.next()) { + recruitFlowId = rs.getInt("zplc"); + stageId = rs.getString("zpjd"); + } + if (-1 == recruitFlowId) { + throw new CustomizeRunTimeException("未设置对应招聘流程"); + } + + if (StringUtils.isBlank(stageId)) { // 查询开始环节 - rs.executeQuery("select id from uf_jcl_zpjdsz where zplc = ? and hj = 0", zplcId); + rs.executeQuery("select id from uf_jcl_zpjdsz where zplc = ? and hj = 0", recruitFlowId); if (rs.next()) { stageId = rs.getString("id"); } @@ -42,20 +52,75 @@ public class RecruitFlowServiceImpl extends Service implements RecruitFlowServic throw new RuntimeException("未找到对应招聘阶段"); } } - rs.executeQuery("select a.zdyxsmc as buttonName, a.tzymbt as tabName, a.tzymdz as tabLink, a.zssx as orderNum, b.anbs as buttonKey, b.andz as buttonAction from uf_jcl_zpjdsz_dt1 a inner join uf_jcl_lcczan b on a.czan = b.id where a.sfqy = 0 and mainid = ? order by zssx", stageId); + rs.executeQuery("select a.id,a.zdyxsmc as buttonName, a.tzymbt as tabName, a.tzymdz as tabLink, a.zssx as orderNum, b.anbs as buttonKey, b.andz as buttonAction from uf_jcl_zpjdsz_dt1 a inner join uf_jcl_lcczan b on a.czan = b.id where a.sfqy = 0 and mainid = ? order by zssx", stageId); + + List buttonList = new ArrayList<>(); + List tabList = new ArrayList<>(); while (rs.next()) { buttonList.add(RecruitButton.builder() + .key(rs.getString("id")) .buttonName(rs.getString("buttonName")) - .tabName(rs.getString("tabName")) - .tabLink(rs.getString("tabLink")) .buttonKey(rs.getString("buttonKey")) .buttonAction(rs.getString("buttonAction")) .orderNum(rs.getInt("orderNum")) .build()); } + rs.executeQuery("select tzymbt as title,tzymdz as url,zssx as orderNum from uf_jcl_zpjdsz_dt1 where sfqy = 0 and tzymbt !='' and tzymdz !='' and mainid = ? " + + " union " + + "select ymbt as title,ymdz as url,zssx as orderNum from uf_jcl_zpjdsz_dt2 where mainid = ? order by orderNum", stageId, stageId); + int tabIndex = 0; + while (rs.next()) { + tabList.add(RecruitTabPo.builder() + .key(String.valueOf(tabIndex)) + .viewcondition(String.valueOf(tabIndex)) + .title(rs.getString("title")) + .url(rs.getString("url")) + .billId(billId) + .build()); + tabIndex++; + } + + // 当前阶段所有按钮信息 returnMap.put("buttonList", buttonList); + returnMap.put("tabList", tabList); + return returnMap; + } + + @Override + public Map getRecruitStepList(Map param) { + Map returnMap = new HashMap<>(); + + String billId = Util.null2String(param.get("billId")); + // 招聘阶段ID + String stageId = "0"; + int currentStageId = 0; + // 招聘流程ID + int recruitFlowId = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery("select zplc,zpjd from uf_jcl_yppc where id = ?", billId); + if (rs.next()) { + recruitFlowId = rs.getInt("zplc"); + stageId = rs.getString("zpjd"); + } + if (-1 == recruitFlowId) { + throw new CustomizeRunTimeException("未设置对应招聘流程"); + } + rs.executeQuery("select id,jdmc from uf_jcl_zpjdsz where sfqy = 0 and zplc = ? order by zssx", recruitFlowId); + int stepIndex = 0; + List stepList = new ArrayList<>(); + while (rs.next()) { + String id = rs.getString("id"); + if (stageId.equals(id)) { + currentStageId = stepIndex; + } + stepList.add(RecruitStepPo.builder().key(stepIndex).description(rs.getString("jdmc")).build()); + stepIndex++; + } + + returnMap.put("stepList", stepList); + returnMap.put("currentStageId", currentStageId); return returnMap; } } diff --git a/src/com/engine/recruit/util/RecruitFlowUtil.java b/src/com/engine/recruit/util/RecruitFlowUtil.java new file mode 100644 index 0000000..cbdb0a7 --- /dev/null +++ b/src/com/engine/recruit/util/RecruitFlowUtil.java @@ -0,0 +1,46 @@ +package com.engine.recruit.util; + +import com.engine.recruit.exception.CustomizeRunTimeException; +import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; + +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/12 + * @version: 1.0 + */ +public class RecruitFlowUtil { + + /** + * 解析url中参数信息 + * + * @param urlString url地址 + * @return + */ + public static Map parseURL(String urlString) { + Map params = new HashMap<>(); + try { + if (StringUtils.isNotBlank(urlString)) { + if (urlString.contains("?")) { + urlString = urlString.split("\\?")[1]; + } + String[] paramPairs = urlString.split("&"); + for (String paramPair : paramPairs) { + String[] keyValue = paramPair.split("="); + String key = URLDecoder.decode(keyValue[0], "UTF-8"); + String value = URLDecoder.decode(keyValue[1], "UTF-8"); + params.put(key, value); + } + } + } catch (Exception e) { + new BaseBean().writeLog(e); + throw new CustomizeRunTimeException(urlString + "解析失败"); + } + + return params; + } +} diff --git a/src/com/engine/recruit/wrapper/RecruitFlowWrapper.java b/src/com/engine/recruit/wrapper/RecruitFlowWrapper.java index 7393ca3..e6ae5c9 100644 --- a/src/com/engine/recruit/wrapper/RecruitFlowWrapper.java +++ b/src/com/engine/recruit/wrapper/RecruitFlowWrapper.java @@ -18,7 +18,11 @@ public class RecruitFlowWrapper extends Service { return ServiceUtil.getService(RecruitFlowServiceImpl.class, user); } - public Map getButtonList(Map params) { - return getRecruitFlowService(user).getButtonList(params); + public Map getButtonList(Map param) { + return getRecruitFlowService(user).getButtonList(param); + } + + public Map getRecruitStepList(Map param) { + return getRecruitFlowService(user).getRecruitStepList(param); } } From 95c755a0cea876059a7f8effb867b7e0d8b1f149 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 12 Oct 2023 16:57:35 +0800 Subject: [PATCH 35/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E9=A1=B5=E9=9D=A2=E5=B8=83=E5=B1=80,=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=AE=9E=E8=B7=B5=E6=8E=A5=E5=8F=A3=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/recruitflow/po/RecruitStepPo.java | 1 + .../entity/recruitflow/po/RecruitTabPo.java | 3 -- .../service/impl/EliminateServiceImpl.java | 6 +++ .../service/impl/NextStageServiceImpl.java | 54 ++++++++++++++++++- .../service/impl/RecruitFlowServiceImpl.java | 18 ++++--- .../engine/recruit/util/RecruitFlowUtil.java | 11 ++++ .../recruit/wrapper/RecruitButtonWrapper.java | 4 +- 7 files changed, 84 insertions(+), 13 deletions(-) diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java index 0e15e28..2750544 100644 --- a/src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitStepPo.java @@ -17,4 +17,5 @@ import lombok.NoArgsConstructor; public class RecruitStepPo { private int key; private String description; + private String type; } diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java index 77074ae..b45d5a4 100644 --- a/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java @@ -29,9 +29,6 @@ public class RecruitTabPo { private String billId; public String getUrl() { - if (StringUtils.isNotBlank(url)) { - url = url.replaceAll("\\$parentid\\$", billId); - } return url; } diff --git a/src/com/engine/recruit/service/impl/EliminateServiceImpl.java b/src/com/engine/recruit/service/impl/EliminateServiceImpl.java index 26df3fc..6bd3bb9 100644 --- a/src/com/engine/recruit/service/impl/EliminateServiceImpl.java +++ b/src/com/engine/recruit/service/impl/EliminateServiceImpl.java @@ -1,7 +1,10 @@ package com.engine.recruit.service.impl; import com.engine.core.impl.Service; +import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.service.RecruitButtonService; +import weaver.conn.RecordSet; +import weaver.general.Util; import java.util.Map; @@ -16,6 +19,9 @@ import java.util.Map; public class EliminateServiceImpl extends Service implements RecruitButtonService { @Override public Map execute(Map params) { + String billId = Util.null2String(params.get("billId")); + RecordSet rs = new RecordSet(); + rs.executeUpdate("update uf_jcl_yppc set zt = ? where id = ? ", ApplicationStatusEnum.OBSOLETE.getValue(), billId); return null; } } diff --git a/src/com/engine/recruit/service/impl/NextStageServiceImpl.java b/src/com/engine/recruit/service/impl/NextStageServiceImpl.java index d7e9252..85d575c 100644 --- a/src/com/engine/recruit/service/impl/NextStageServiceImpl.java +++ b/src/com/engine/recruit/service/impl/NextStageServiceImpl.java @@ -1,8 +1,16 @@ package com.engine.recruit.service.impl; import com.engine.core.impl.Service; +import com.engine.recruit.entity.recruitflow.po.RecruitStepPo; +import com.engine.recruit.exception.CustomizeRunTimeException; import com.engine.recruit.service.RecruitButtonService; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -16,6 +24,50 @@ import java.util.Map; public class NextStageServiceImpl extends Service implements RecruitButtonService { @Override public Map execute(Map params) { - return null; + Map returnMap = new HashMap<>(); + String billId = Util.null2String(params.get("billId")); + // 招聘阶段ID + String stageId = null; + // 招聘流程ID + int recruitFlowId = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery("select zplc,zpjd from uf_jcl_yppc where id = ?", billId); + if (rs.next()) { + recruitFlowId = rs.getInt("zplc"); + stageId = rs.getString("zpjd"); + } + if (-1 == recruitFlowId) { + throw new CustomizeRunTimeException("未设置对应招聘流程"); + } + rs.executeQuery("select id,jdmc,hj from uf_jcl_zpjdsz where sfqy = 0 and zplc = ? order by zssx", recruitFlowId); + List stepList = new ArrayList<>(); + while (rs.next()) { + stepList.add(RecruitStepPo.builder().key(rs.getInt("id")).description(rs.getString("jdmc")).type(rs.getString("hj")).build()); + } + boolean found = false; + Integer target = null; + if (StringUtils.isBlank(stageId)) { + stageId = String.valueOf(stepList.get(0).getKey()); + } + for (RecruitStepPo recruitStepPo : stepList) { + if (found) { + target = recruitStepPo.getKey(); + break; + } + + if (recruitStepPo.getKey() == Integer.parseInt(stageId)) { + found = true; + if ("2".equals(recruitStepPo.getType())) { + target = -1; + } + } + } + + + // 更新应聘者简历为下一阶段 + rs.executeUpdate("update uf_jcl_yppc set zpjd = ? where id = ?", target, billId); + + + return returnMap; } } diff --git a/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java index b56dac8..5a3f84b 100644 --- a/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java +++ b/src/com/engine/recruit/service/impl/RecruitFlowServiceImpl.java @@ -6,6 +6,7 @@ import com.engine.recruit.entity.recruitflow.po.RecruitStepPo; import com.engine.recruit.entity.recruitflow.po.RecruitTabPo; import com.engine.recruit.exception.CustomizeRunTimeException; import com.engine.recruit.service.RecruitFlowService; +import com.engine.recruit.util.RecruitFlowUtil; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.Util; @@ -52,7 +53,7 @@ public class RecruitFlowServiceImpl extends Service implements RecruitFlowServic throw new RuntimeException("未找到对应招聘阶段"); } } - rs.executeQuery("select a.id,a.zdyxsmc as buttonName, a.tzymbt as tabName, a.tzymdz as tabLink, a.zssx as orderNum, b.anbs as buttonKey, b.andz as buttonAction from uf_jcl_zpjdsz_dt1 a inner join uf_jcl_lcczan b on a.czan = b.id where a.sfqy = 0 and mainid = ? order by zssx", stageId); + rs.executeQuery("select a.id,a.zdyxsmc as buttonName, a.tzymbt as tabName, a.tzymdz as tabLink, a.zssx as orderNum, b.anbs as buttonKey, b.andz as buttonType from uf_jcl_zpjdsz_dt1 a inner join uf_jcl_lcczan b on a.czan = b.id where a.sfqy = 0 and mainid = ? order by zssx", stageId); List buttonList = new ArrayList<>(); List tabList = new ArrayList<>(); @@ -61,21 +62,21 @@ public class RecruitFlowServiceImpl extends Service implements RecruitFlowServic .key(rs.getString("id")) .buttonName(rs.getString("buttonName")) .buttonKey(rs.getString("buttonKey")) - .buttonAction(rs.getString("buttonAction")) + .tabName(rs.getString("tabName")) + .tabLink(RecruitFlowUtil.replaceURL(rs.getString("tabLink"), billId)) + .buttonType(rs.getString("buttonType")) .orderNum(rs.getInt("orderNum")) .build()); } - rs.executeQuery("select tzymbt as title,tzymdz as url,zssx as orderNum from uf_jcl_zpjdsz_dt1 where sfqy = 0 and tzymbt !='' and tzymdz !='' and mainid = ? " + - " union " + - "select ymbt as title,ymdz as url,zssx as orderNum from uf_jcl_zpjdsz_dt2 where mainid = ? order by orderNum", stageId, stageId); + rs.executeQuery("select ymbt as title,ymdz as url,zssx as orderNum from uf_jcl_zpjdsz_dt2 where mainid = ? order by orderNum", stageId); int tabIndex = 0; while (rs.next()) { tabList.add(RecruitTabPo.builder() .key(String.valueOf(tabIndex)) .viewcondition(String.valueOf(tabIndex)) .title(rs.getString("title")) - .url(rs.getString("url")) + .url(RecruitFlowUtil.replaceURL(rs.getString("url"), billId)) .billId(billId) .build()); tabIndex++; @@ -94,7 +95,7 @@ public class RecruitFlowServiceImpl extends Service implements RecruitFlowServic String billId = Util.null2String(param.get("billId")); // 招聘阶段ID - String stageId = "0"; + String stageId = ""; int currentStageId = 0; // 招聘流程ID int recruitFlowId = -1; @@ -118,6 +119,9 @@ public class RecruitFlowServiceImpl extends Service implements RecruitFlowServic stepList.add(RecruitStepPo.builder().key(stepIndex).description(rs.getString("jdmc")).build()); stepIndex++; } + if ("-1".equals(stageId)) { + currentStageId = stepList.size(); + } returnMap.put("stepList", stepList); returnMap.put("currentStageId", currentStageId); diff --git a/src/com/engine/recruit/util/RecruitFlowUtil.java b/src/com/engine/recruit/util/RecruitFlowUtil.java index cbdb0a7..5eaed3e 100644 --- a/src/com/engine/recruit/util/RecruitFlowUtil.java +++ b/src/com/engine/recruit/util/RecruitFlowUtil.java @@ -43,4 +43,15 @@ public class RecruitFlowUtil { return params; } + + /** + * 替换URL中Id字段 + * + * @param urlString + * @param billId + * @return + */ + public static String replaceURL(String urlString, String billId) { + return urlString.replaceAll("\\$parentid\\$", billId); + } } diff --git a/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java b/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java index f44659b..27ed00d 100644 --- a/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java +++ b/src/com/engine/recruit/wrapper/RecruitButtonWrapper.java @@ -37,7 +37,7 @@ public class RecruitButtonWrapper extends Service { */ public Map execute(Map params) { // 获取实现类全路径 - String classPath = Util.null2String(params.get("classPath")); - return getRecruitButtonService(user, classPath).execute(params); + String buttonKey = Util.null2String(params.get("buttonKey")); + return getRecruitButtonService(user, buttonKey).execute(params); } } From 409688724d24d7cf8274e5a01f9e1b95f713ca6c Mon Sep 17 00:00:00 2001 From: dxfeng Date: Mon, 16 Oct 2023 09:14:38 +0800 Subject: [PATCH 36/36] =?UTF-8?q?=E6=8B=9B=E8=81=98=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E9=A1=B5=E9=9D=A2=E5=B8=83=E5=B1=80,=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=BA=8B=E4=BB=B6BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/recruitflow/po/RecruitButton.java | 2 +- .../entity/recruitflow/po/RecruitTabPo.java | 9 +++++- .../recruit/util/RecruitMessageUtils.java | 27 ++++++++++++++++ .../process/RelatedStageModeExpand.java | 32 ++++++++----------- 4 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 src/com/engine/recruit/util/RecruitMessageUtils.java diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java index f776839..2b6b11e 100644 --- a/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitButton.java @@ -22,6 +22,6 @@ public class RecruitButton { private String tabName; private String tabLink; private String buttonKey; - private String buttonAction; + private String buttonType; private Integer orderNum; } diff --git a/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java b/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java index b45d5a4..dd37999 100644 --- a/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java +++ b/src/com/engine/recruit/entity/recruitflow/po/RecruitTabPo.java @@ -45,7 +45,14 @@ public class RecruitTabPo { if (rs.next()) { String tableName = rs.getString("tablename"); String tabCount = "0"; - rs.executeQuery("select count(1) as num from " + tableName + " where pcid = ?", billId); + if ("uf_jcl_yppc".equalsIgnoreCase(tableName)) { + rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", billId); + if (rs.next()) { + rs.executeQuery("select count(id) as num from uf_jcl_yppc where xm=? and sjhm =?", rs.getString("xm"), rs.getString("sjhm")); + } + } else { + rs.executeQuery("select count(1) as num from " + tableName + " where ypz = ? ", billId); + } if (rs.next()) { tabCount = rs.getString("num"); } diff --git a/src/com/engine/recruit/util/RecruitMessageUtils.java b/src/com/engine/recruit/util/RecruitMessageUtils.java new file mode 100644 index 0000000..52f1553 --- /dev/null +++ b/src/com/engine/recruit/util/RecruitMessageUtils.java @@ -0,0 +1,27 @@ +package com.engine.recruit.util; + +import weaver.common.MessageUtil; +import weaver.general.Util; + +import java.util.Map; + +/** + * @author:dxfeng + * @createTime: 2023/10/13 + * @version: 1.0 + */ +public class RecruitMessageUtils { + public static boolean SendEmail(Map param) { + String sendTo = Util.null2String(param.get("sendTo")); + String emailTitle = Util.null2String(param.get("emailTitle")); + String emailContent = Util.null2String(param.get("emailContent")); + //EmailWorkRunnable.threadModeReminder(sendTo, emailTitle, emailContent); + return MessageUtil.sendEmail(sendTo, emailTitle, emailContent); + } + + public static boolean sendSMS(Map param) { + String receiver = Util.null2String(param.get("receiver")); + String content = Util.null2String(param.get("content")); + return MessageUtil.sendSMS(receiver, content); + } +} diff --git a/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java index 8c75874..8c5a459 100644 --- a/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java +++ b/src/weaver/formmode/recruit/modeexpand/process/RelatedStageModeExpand.java @@ -56,7 +56,6 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { } } catch (Exception e) { new BaseBean().writeLog(e); - ; result.put("errmsg", "完成需求操作失败"); result.put("flag", "false"); } @@ -90,29 +89,26 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { String processIdsStr = StringUtils.join(Arrays.asList(processIds), ","); String insertSql = "insert into " + MODE_TABLE_NAME + " (modeuuid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, modedatacreatertype, formmodeid, jdmc, jdms, jdlx, hj, sfqy, zssx, zpjd, zplc) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - for (String processId : processIdsStr.split(",")) { - if (StringUtils.isBlank(processId)) { - continue; - } - insertMainTableData(billId, processId, insertSql, paramsList); + if (StringUtils.isNotBlank(processIdsStr)) { + insertMainTableData(billId, processIdsStr, insertSql, paramsList); } } /** * 插入主表数据 * - * @param billId 招聘流程表单ID - * @param processId 招聘阶段ID - * @param insertSql 插入SQL语句 - * @param paramsList 待插入参数集合 + * @param billId 招聘流程表单ID + * @param processIdsStr 招聘阶段ID + * @param insertSql 插入SQL语句 + * @param paramsList 待插入参数集合 */ - private void insertMainTableData(String billId, String processId, String insertSql, List paramsList) { - String uuid = UUID.randomUUID().toString(); - ArrayList insertList = new ArrayList<>(paramsList); - insertList.add(0, uuid); + private void insertMainTableData(String billId, String processIdsStr, String insertSql, List paramsList) { RecordSet rs = new RecordSet(); - rs.executeQuery("select * from uf_jcl_zpjdsz where id = ?", processId); - if (rs.next()) { + rs.executeQuery("select * from uf_jcl_zpjdsz where id in (" + processIdsStr + ") order by hj,zssx"); + while (rs.next()) { + String uuid = UUID.randomUUID().toString(); + ArrayList insertList = new ArrayList<>(paramsList); + insertList.add(0, uuid); String formModeId = rs.getString("formmodeid"); insertList.add(formModeId); insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jdmc"))); @@ -122,12 +118,12 @@ public class RelatedStageModeExpand extends AbstractModeExpandJavaCodeNew { insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("sfqy"))); insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zssx"))); // zpjd - insertList.add(RecruitModeUtil.parseBlankToNull(processId)); + insertList.add(RecruitModeUtil.parseBlankToNull(rs.getString("id"))); // zplc insertList.add(RecruitModeUtil.parseBlankToNull(billId)); // 插入主表数据 rs.executeUpdate(insertSql, insertList); - refreshRight(uuid, formModeId, processId); + refreshRight(uuid, formModeId, rs.getString("id")); } }