From e20d1d57ce32fc78bf929075416f519f71fcd992 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Tue, 31 Jan 2023 17:14:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E6=BA=AF=E4=BA=BA=E5=91=98=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E5=9B=BE=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/danikor/param/ChartParam.java | 26 ++++++++++ .../manager/DanikorOrgChartManager.java | 5 +- .../service/DanikorResourceBackService.java | 10 ++++ .../impl/DanikorResourceBackServiceImpl.java | 51 +++++++++++++++++-- .../web/DanikorResourceBackController.java | 16 +++++- .../wrapper/DanikorResourceBackWrapper.java | 4 ++ 6 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 src/com/engine/organization/entity/danikor/param/ChartParam.java diff --git a/src/com/engine/organization/entity/danikor/param/ChartParam.java b/src/com/engine/organization/entity/danikor/param/ChartParam.java new file mode 100644 index 00000000..10db9255 --- /dev/null +++ b/src/com/engine/organization/entity/danikor/param/ChartParam.java @@ -0,0 +1,26 @@ +package com.engine.organization.entity.danikor.param; + +import lombok.Data; + +/** + * @author:dxfeng + * @createTime: 2023/01/31 + * @version: 1.0 + */ +@Data +public class ChartParam { + private String id; + private String pid; + private String type; + private String name; + private String title; + private String num; + private String nTitle; + private String oDisplay; + private String subRCount; + private String subTitle; + private String hasChild; + private String needPlus; + private String cOnclick; + private String sOnclick; +} diff --git a/src/com/engine/organization/manager/DanikorOrgChartManager.java b/src/com/engine/organization/manager/DanikorOrgChartManager.java index a9071c21..87fb691c 100644 --- a/src/com/engine/organization/manager/DanikorOrgChartManager.java +++ b/src/com/engine/organization/manager/DanikorOrgChartManager.java @@ -74,7 +74,7 @@ public class DanikorOrgChartManager { this.cmd = StringUtil.vString(this.request.getParameter("cmd")); String sorgid = StringUtil.vString(this.request.getParameter("sorgid")); - String syncDate = Util.null2String(this.request.getParameter("syncDate")); + String syncDate = Util.null2String(this.request.getParameter("date")); if (StringUtils.isNotBlank(syncDate) && !DateUtil.getDate(new Date()).equals(syncDate)) { isCurrentDate = false; syncSearchSql = " and sync_date ='" + syncDate + "'"; @@ -221,7 +221,6 @@ public class DanikorOrgChartManager { "(case when t.supdepid != 0 and (select COUNT(id) from " + departmentTableName + " where id = t.supdepid)=0 then 0 else 1 end) as isExist" + hasNextSql + ",t.tlevel from " + departmentTableName + " t where " + checkSupdepid + appendSql + " and (t.canceled IS NULL OR t.canceled !='1') and (t.canceled IS NULL OR t.canceled !='1') " + syncSearchSql + " order by t.subcompanyid1 asc , t.supdepid asc , t.showorder asc, t.departmentname asc"; this.rs.execute(this.sql); - System.err.println(sql); rs.writeLog("appendDepartment:this.sql:" + this.sql); List dList = new ArrayList<>(); MOrgChart bean; @@ -367,7 +366,7 @@ public class DanikorOrgChartManager { StringBuilder ids = new StringBuilder(); - StringBuffer sql = new StringBuffer(); + StringBuilder sql = new StringBuilder(); if ("oracle".equals(rs.getDBType())) { sql.append(" WITH allSub AS ( SELECT ID FROM "); sql.append(arg1).append(" start with id=").append(arg0).append(" connect by PRIOR id=").append(arg2); diff --git a/src/com/engine/organization/service/DanikorResourceBackService.java b/src/com/engine/organization/service/DanikorResourceBackService.java index 90d04591..9676d850 100644 --- a/src/com/engine/organization/service/DanikorResourceBackService.java +++ b/src/com/engine/organization/service/DanikorResourceBackService.java @@ -44,8 +44,18 @@ public interface DanikorResourceBackService { Map getSummaryData(Map params); /** + * 组织架构图 + * * @param params * @return */ String getOrgChartData(HttpServletRequest request, Map params); + + /** + * 人员架构图 + * + * @param params + * @return + */ + String getResourceChartData(Map params); } diff --git a/src/com/engine/organization/service/impl/DanikorResourceBackServiceImpl.java b/src/com/engine/organization/service/impl/DanikorResourceBackServiceImpl.java index 3cbc836a..d9d7138f 100644 --- a/src/com/engine/organization/service/impl/DanikorResourceBackServiceImpl.java +++ b/src/com/engine/organization/service/impl/DanikorResourceBackServiceImpl.java @@ -1,5 +1,6 @@ package com.engine.organization.service.impl; +import com.alibaba.fastjson.JSON; import com.api.browser.bean.SearchConditionGroup; import com.api.browser.bean.SearchConditionItem; import com.cloudstore.eccom.constant.WeaBoolAttr; @@ -10,6 +11,7 @@ import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.organization.component.OrganizationWeaTable; import com.engine.organization.entity.column.TableColumnPO; +import com.engine.organization.entity.danikor.param.ChartParam; import com.engine.organization.entity.danikor.vo.ResourceBackVO; import com.engine.organization.manager.DanikorOrgChartManager; import com.engine.organization.mapper.danikor.DanikorResourceMapper; @@ -21,6 +23,7 @@ import com.engine.organization.util.db.MapperProxyFactory; import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; import weaver.common.StringUtil; +import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.appdetach.AppDetachComInfo; import weaver.hrm.chart.domain.HrmChartSet; @@ -234,9 +237,49 @@ public class DanikorResourceBackServiceImpl extends Service implements DanikorRe String showTitle = showName + SystemEnv.getHtmlLabelNames(chartManager.getLabelIndex() + ",523", user.getLanguage()) + showCount; String defaultHref = weaver.general.GCONST.getContextPath() + "/spa/hrm/index_mobx.html#/main/hrm/orgStaff?_fromURL=HrmResourceSearchResult&from=hrmorg&virtualtype=" + sorgid; - StringBuffer data = new StringBuffer("["); - data.append("{\"id\":\"0\", \"pid\":\"\", \"type\":\"company\", \"name\":\"").append(StringUtil.vString(showName, 12)).append("\", \"title\":\"").append(showName).append("\", \"num\":\"" + showCount + "\", \"nTitle\":\"" + showTitle + "\", \"oDisplay\":\"none\", \"subRCount\":\"0\", \"subTitle\":\"\", \"cOnclick\":\"" + defaultHref + "\", \"sOnclick\":\"\"}").append(chartManager.getData()); - data.append("]"); - return data.toString(); + return "[" + "{\"id\":\"0\", \"pid\":\"\", \"type\":\"company\", \"name\":\"" + StringUtil.vString(showName, 12) + "\", \"title\":\"" + showName + + "\", \"num\":\"" + showCount + "\", \"nTitle\":\"" + showTitle + "\", \"oDisplay\":\"none\", \"subRCount\":\"0\", \"subTitle\":\"\", \"cOnclick\":\"" + defaultHref + "\", \"sOnclick\":\"\"}" + chartManager.getData() + + "]"; + } + + @Override + public String getResourceChartData(Map params) { + String syncDate = Util.null2String(params.get("date")); + List chartParamList = new ArrayList<>(); + // 查询安全级别大于等于40的人员 + String sql; + if (StringUtils.isNotBlank(syncDate) && !DateUtil.getDate(new Date()).equals(syncDate)) { + sql = "select a.id, a.managerid , a.lastname , b.jobtitlename, ( select count(1) from HrmResource_back where managerid = a.id and sync_date = '" + syncDate + "') subordinate from HrmResource_back a left join HrmJobTitles b on a.jobtitle = b.id where sync_date = '" + syncDate + "'"; + } else { + sql = "select a.id, a.managerid , a.lastname , b.jobtitlename, ( select count(1) from HrmResource where managerid = a.id) subordinate from HrmResource a left join HrmJobTitles b on a.jobtitle = b.id"; + } + + RecordSet rs = new RecordSet(); + rs.execute(sql); + while (rs.next()) { + String lastName = rs.getString("lastname"); + String jobTitleName = rs.getString("jobtitlename"); + int subordinate = rs.getInt("subordinate"); + String managerId = rs.getString("managerid"); + ChartParam chartParam = new ChartParam(); + chartParam.setId(rs.getString("id")); + chartParam.setPid(managerId); + chartParam.setType(StringUtils.isBlank(managerId) ? "company" : "subcompany"); + chartParam.setName(StringUtils.isBlank(jobTitleName) ? lastName : lastName + "(" + jobTitleName + ")"); + chartParam.setTitle(chartParam.getName()); + chartParam.setNum("0"); + chartParam.setNTitle(""); + chartParam.setODisplay("none"); + chartParam.setSubRCount("0"); + chartParam.setSubTitle(""); + chartParam.setHasChild(subordinate > 0 ? "true" : "false"); + chartParam.setNeedPlus("false"); + chartParam.setCOnclick("/spa/hrm/index_mobx.html#/main/hrm/card/cardInfo/" + chartParam.getId()); + chartParam.setSOnclick(""); + chartParamList.add(chartParam); + } + + return JSON.toJSONString(chartParamList); + } } diff --git a/src/com/engine/organization/web/DanikorResourceBackController.java b/src/com/engine/organization/web/DanikorResourceBackController.java index 20cd7633..9a0a3daa 100644 --- a/src/com/engine/organization/web/DanikorResourceBackController.java +++ b/src/com/engine/organization/web/DanikorResourceBackController.java @@ -10,6 +10,7 @@ import weaver.hrm.User; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; @@ -84,7 +85,7 @@ public class DanikorResourceBackController { } } - @GET + @POST @Path("/getOrgChartData") @Produces(MediaType.APPLICATION_JSON) public ReturnResult getOrgChartData(@Context HttpServletRequest request, @Context HttpServletResponse response) { @@ -96,4 +97,17 @@ public class DanikorResourceBackController { return ReturnResult.exceptionHandle(e); } } + + @POST + @Path("/getResourceChartData") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getResourceChartData(@Context HttpServletRequest request, @Context HttpServletResponse response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map map = ParamUtil.request2Map(request); + return ReturnResult.successed(getDanikorResourceBackWrapper(user).getResourceChartData(map)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } } diff --git a/src/com/engine/organization/wrapper/DanikorResourceBackWrapper.java b/src/com/engine/organization/wrapper/DanikorResourceBackWrapper.java index 4925ab9d..d6aec89b 100644 --- a/src/com/engine/organization/wrapper/DanikorResourceBackWrapper.java +++ b/src/com/engine/organization/wrapper/DanikorResourceBackWrapper.java @@ -41,4 +41,8 @@ public class DanikorResourceBackWrapper extends OrganizationWrapper { public String getOrgChartData(HttpServletRequest request, Map params) { return getDanikorResourceBackService(user).getOrgChartData(request, params); } + + public String getResourceChartData(Map params) { + return getDanikorResourceBackService(user).getResourceChartData(params); + } }