From fee1614a53a0d29b51576ba79db97d62ca1cace5 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Thu, 12 Oct 2023 13:33:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9B=E8=81=98=E6=B5=81=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=B8=83=E5=B1=80=E7=9B=B8=E5=85=B3=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/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); } }