From 8d78af3e14da22c1b58db9ed1ec0462d916c54f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98ml=E2=80=99?= Date: Wed, 2 Nov 2022 13:47:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=99=9A=E6=8B=9F=E7=BB=84=E7=BB=87=E5=BB=BA?= =?UTF-8?q?=E6=A8=A1=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=86=99=E5=85=A5map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/OrgChartServiceImpl.java | 273 ++++++++++++------ .../modeexpand/VirOrgServiceImpl.java | 75 +++++ 2 files changed, 263 insertions(+), 85 deletions(-) create mode 100644 src/weaver/formmode/customjavacode/modeexpand/VirOrgServiceImpl.java diff --git a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java index 470983b6..446a9ea8 100644 --- a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java @@ -109,41 +109,70 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { if (StringUtils.isBlank(level)) { level = "3"; } - String whereSql = companyDateWhereSql(request2Map); - - String whereItemSql = " "; - if ("0".equals(root)) { // 集团的情况 - whereItemSql += " and ftype = 0 "; - } else { - whereItemSql += " and id = '" + root + "' "; - } - - // 获取根节点 - RecordSet rs = new RecordSet(); - rs.executeQuery("select id, fname, ftype, fparentid, fnumber, fobjid from jcl_org_map " + whereSql + whereItemSql); + // 虚拟组织切换 + String fisvitual = (String) request2Map.get("fisvitual"); // 是否虚拟组织 0否1是 List> list = new ArrayList<>(); - String id = null; - if (rs.next()) { - Map item = new HashMap<>(); - id = rs.getString("id"); - item.put("id", rs.getString("id")); - item.put("fname", rs.getString("fname")); - item.put("ftype", rs.getString("ftype")); - item.put("fnumber", rs.getString("fnumber")); - item.put("fobjid",rs.getString("fobjid")); - item.put("parentId", null); - item.put("expand", "1"); - item.put("hasChildren", hasChildren(rs.getString("id"), true)); - list.add(item); + if (StringUtils.isBlank(fisvitual)) { + fisvitual = "0"; } + if(fisvitual.equals("1")){ + String whereSql = "where fid='0'"; + // 获取根节点 + RecordSet rs = new RecordSet(); + rs.executeQuery("select fid, fname, forder, fparentid, ftype from uf_jcl_vo " + whereSql); + + String fid = null; + if (rs.next()) { + Map item = new HashMap<>(); + fid = rs.getString("fid"); + item.put("id", rs.getString("fid")); + item.put("fname", rs.getString("fname")); + item.put("forder", rs.getString("forder")); + item.put("parentId", null); + item.put("ftype", rs.getString("ftype")); + item.put("expand", "1"); + item.put("hasChildren", hasVOChildren(rs.getString("fid"))); + list.add(item); + } + if (null != fid) { + findVoItemByParantId(fid, rs, list, true); + } + }else { + String whereSql = companyDateWhereSql(request2Map); + + String whereItemSql = " "; + if ("0".equals(root)) { // 集团的情况 + whereItemSql += " and ftype = 0 "; + } else { + whereItemSql += " and id = '" + root + "' "; + } - int currentLevel = 1; - if (currentLevel + 1 <= Integer.parseInt(level)) { - findCompanyItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, true); - } else { - findCompanyItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, false); - } + // 获取根节点 + RecordSet rs = new RecordSet(); + rs.executeQuery("select id, fname, ftype, fparentid, fnumber, fobjid from jcl_org_map " + whereSql + whereItemSql); +// List> list = new ArrayList<>(); + String id = null; + if (rs.next()) { + Map item = new HashMap<>(); + id = rs.getString("id"); + item.put("id", rs.getString("id")); + item.put("fname", rs.getString("fname")); + item.put("ftype", rs.getString("ftype")); + item.put("fnumber", rs.getString("fnumber")); + item.put("fobjid",rs.getString("fobjid")); + item.put("parentId", null); + item.put("expand", "1"); + item.put("hasChildren", hasChildren(rs.getString("id"), true)); + list.add(item); + } + int currentLevel = 1; + if (currentLevel + 1 <= Integer.parseInt(level)) { + findCompanyItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, true); + } else { + findCompanyItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, false); + } + } result.put("api_status", true); result.put("data", list); return result; @@ -178,6 +207,29 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { } + private void findVoItemByParantId(String id, RecordSet rs, List> list, boolean expand) { + rs.executeQuery("select fid, fname, forder, fparentid, ftype from uf_jcl_vo where fparentid = '" + id + "'"); + List> currentList = new ArrayList<>(); + while (rs.next()) { + Map item = new HashMap<>(); + item.put("id", rs.getString("fid")); + item.put("fname", rs.getString("fname")); + item.put("forder", rs.getString("forder")); + item.put("parentId", rs.getString("fparentid")); + item.put("ftype", rs.getString("ftype")); + item.put("expand", expand ? "1" : "0"); + item.put("hasChildren", hasVOChildren(rs.getString("fid"))); + currentList.add(item); + } + + list.addAll(currentList); + + for (Map stringObjectMap : currentList) { + findVoItemByParantId((String) stringObjectMap.get("id"), rs, list, true); + } + + } + private String userWhereSql(Map request2Map) { String date = (String) request2Map.get("date"); // 数据日期 if (StringUtils.isBlank(date)) { @@ -217,53 +269,71 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { } String root = (String) request2Map.get("root"); // 根节点 String level = (String) request2Map.get("level"); // 显示层级 + String fisvitual = (String) request2Map.get("fisvitual"); // 虚拟组织 if (StringUtils.isBlank(level)) { level = "3"; } + if (StringUtils.isBlank(fisvitual)) { + fisvitual = "0"; + } - String whereSql = userWhereSql(request2Map); + List> list = new ArrayList<>(); + if (fisvitual.equals("0")) { + String whereSql = userWhereSql(request2Map); + + String whereItemSql = " "; + if ("0".equals(root)) { // 集团的情况 + whereItemSql += " and t.ftype = 0 "; + } else { + whereItemSql += " and t.id = '" + root + "' "; + } + + // 获取根节点 + RecordSet rs = new RecordSet(); + rs.executeQuery("select t.id, t.fname, t.ftype, t.fparentid, t.fleadername,t.fobjid,t.fecid, t.fleaderimg, t.fleaderjob, t.fplan, t.fonjob, t.fnumber, t.fleader, t.fleaderlv, t.fleaderst,t.fecid from jcl_org_map t " + whereSql + whereItemSql); + String id = null; + if (rs.next()) { + Map item = new HashMap<>(); + id = rs.getString("id"); + item.put("id", rs.getString("id")); + item.put("fname", rs.getString("fname")); + item.put("ftype", rs.getString("ftype")); + item.put("parentId", null); + item.put("fleadername", rs.getString("fleadername")); + item.put("fleaderimg", rs.getString("fleaderimg")); + item.put("fleaderjob", rs.getString("fleaderjob")); + item.put("fplan", rs.getString("fplan")); + item.put("fonjob", rs.getString("fonjob")); + item.put("hasChildren", hasChildren(rs.getString("id"), false)); + item.put("expand", "1"); + item.put("fnumber", rs.getString("fnumber")); + item.put("fleader", rs.getString("fleader")); + item.put("fobjid",rs.getString("fobjid")); + item.put("fleaderlv",convertLevel(rs.getString("fleaderlv"))); + item.put("fleaderst",convertGrade(rs.getString("fleaderst"))); + item.put("fecid",rs.getString("fecid")); + list.add(item); + } + + int currentLevel = 1; + if (currentLevel + 1 <= Integer.parseInt(level)) { + findUserItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, true); + }else{ + findUserItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, false); + } - String whereItemSql = " "; - if ("0".equals(root)) { // 集团的情况 - whereItemSql += " and t.ftype = 0 "; } else { - whereItemSql += " and t.id = '" + root + "' "; - } + String whereSql = "where fid='0'"; + // 获取根节点 + RecordSet rs = new RecordSet(); + rs.executeQuery("select fid, fname, forder, fparentid, ftype from uf_jcl_vo " + whereSql); + String fid = null; + if (rs.next()) { + Map item = new HashMap<>(); + } - // 获取根节点 - RecordSet rs = new RecordSet(); - rs.executeQuery("select t.id, t.fname, t.ftype, t.fparentid, t.fleadername,t.fobjid,t.fecid, t.fleaderimg, t.fleaderjob, t.fplan, t.fonjob, t.fnumber, t.fleader, t.fleaderlv, t.fleaderst,t.fecid from jcl_org_map t " + whereSql + whereItemSql); - List> list = new ArrayList<>(); - String id = null; - if (rs.next()) { - Map item = new HashMap<>(); - id = rs.getString("id"); - item.put("id", rs.getString("id")); - item.put("fname", rs.getString("fname")); - item.put("ftype", rs.getString("ftype")); - item.put("parentId", null); - item.put("fleadername", rs.getString("fleadername")); - item.put("fleaderimg", rs.getString("fleaderimg")); - item.put("fleaderjob", rs.getString("fleaderjob")); - item.put("fplan", rs.getString("fplan")); - item.put("fonjob", rs.getString("fonjob")); - item.put("hasChildren", hasChildren(rs.getString("id"), false)); - item.put("expand", "1"); - item.put("fnumber", rs.getString("fnumber")); - item.put("fleader", rs.getString("fleader")); - item.put("fobjid",rs.getString("fobjid")); - item.put("fleaderlv",convertLevel(rs.getString("fleaderlv"))); - item.put("fleaderst",convertGrade(rs.getString("fleaderst"))); - item.put("fecid",rs.getString("fecid")); - list.add(item); } - int currentLevel = 1; - if (currentLevel + 1 <= Integer.parseInt(level)) { - findUserItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, true); - }else{ - findUserItemByParantId(id, currentLevel + 1, level, rs, list, whereSql, false); - } result.put("api_status", true); result.put("data", list); @@ -327,23 +397,42 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { @Override public Map asyncCompanyData(Map request2Map, User user) { String ids = (String) request2Map.get("ids"); - String whereSql = companyDateWhereSql(request2Map); - - whereSql += " and fparentid in (" + ids + ") "; - - RecordSet rs = new RecordSet(); - rs.executeQuery("select id, fname, ftype, fparentid, fnumber,fobjid from jcl_org_map " + whereSql); + String fisvitual = (String) request2Map.get("fisvitual"); List> currentList = new ArrayList<>(); - while (rs.next()) { - Map item = new HashMap<>(); - item.put("id", rs.getString("id")); - item.put("fname", rs.getString("fname")); - item.put("ftype", rs.getString("ftype")); - item.put("parentId", rs.getString("fparentid")); - item.put("fnumber", rs.getString("fnumber")); - item.put("fobjid", rs.getString("fobjid")); - item.put("hasChildren", hasChildren(rs.getString("id"), true)); - currentList.add(item); + if (fisvitual.equals("0")) { + String whereSql = companyDateWhereSql(request2Map); + + whereSql += " and fparentid in (" + ids + ") "; + + RecordSet rs = new RecordSet(); + rs.executeQuery("select id, fname, ftype, fparentid, fnumber,fobjid from jcl_org_map " + whereSql); +// List> currentList = new ArrayList<>(); + while (rs.next()) { + Map item = new HashMap<>(); + item.put("id", rs.getString("id")); + item.put("fname", rs.getString("fname")); + item.put("ftype", rs.getString("ftype")); + item.put("parentId", rs.getString("fparentid")); + item.put("fnumber", rs.getString("fnumber")); + item.put("fobjid", rs.getString("fobjid")); + item.put("hasChildren", hasChildren(rs.getString("id"), true)); + currentList.add(item); + } + } else { + String whereSql = "where fparentid in (" + ids + ") "; + + RecordSet rs = new RecordSet(); + rs.executeQuery("select fid, fname, forder, fparentid, ftype from uf_jcl_vo " + whereSql); + while (rs.next()) { + Map item = new HashMap<>(); + item.put("id", rs.getString("fid")); + item.put("fname", rs.getString("fname")); + item.put("ftype", rs.getString("ftype")); + item.put("parentId", rs.getString("fparentid")); + item.put("forder", rs.getString("forder")); + item.put("hasChildren", hasVOChildren(rs.getString("fid"))); + currentList.add(item); + } } Map result = new HashMap<>(); @@ -417,6 +506,20 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { return !"0".equals(count); } + /** + * 虚拟组织下级部门判断 + * @return + */ + private boolean hasVOChildren(String fid) { + String whereSql = " where fparentid = " + fid + " "; + grs.executeQuery("select count(1) as count from uf_jcl_vo " + whereSql); + String count = "0"; + if (grs.next()) { + count = grs.getString("count"); + } + return !"0".equals(count); + } + private String convertLevel(String fLeaderLv) { String jobLevelName = ""; if (StringUtils.isBlank(fLeaderLv)) { diff --git a/src/weaver/formmode/customjavacode/modeexpand/VirOrgServiceImpl.java b/src/weaver/formmode/customjavacode/modeexpand/VirOrgServiceImpl.java new file mode 100644 index 00000000..7bdbbbfa --- /dev/null +++ b/src/weaver/formmode/customjavacode/modeexpand/VirOrgServiceImpl.java @@ -0,0 +1,75 @@ +package weaver.formmode.customjavacode.modeexpand; + +import com.alibaba.fastjson.JSONObject; +import com.engine.organization.entity.map.JclOrgMap; +import com.engine.organization.mapper.jclorgmap.JclOrgMapper; +import com.engine.organization.util.OrganizationDateUtil; +import com.engine.organization.util.db.MapperProxyFactory; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; + +import java.sql.Date; +import java.util.HashMap; +import java.util.Map; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.soa.workflow.request.RequestInfo; + +public class VirOrgServiceImpl extends AbstractModeExpandJavaCodeNew { + + public Map doModeExpand(Map param) { + Map result = new HashMap(); + try { + User user = (User)param.get("user"); + int billid = -1;//数据id + int modeid = -1;//模块id + RequestInfo requestInfo = (RequestInfo)param.get("RequestInfo"); + if(requestInfo!=null){ + billid = Util.getIntValue(requestInfo.getRequestid()); + modeid = Util.getIntValue(requestInfo.getWorkflowid()); + if(billid>0&&modeid>0){ + //------请在下面编写业务逻辑代码------ + // 获取字段field + RecordSet rs = new RecordSet(); + rs.executeQuery("select b.id from workflow_bill a \n" + + "INNER JOIN workflow_billfield b on a.id=b.billid\n" + + "where a.tablename='uf_jcl_org_vir' and b.fieldname='fid'"); + String field = "field"; + if (rs.next()) { + field += rs.getString("id"); + } + //JSON转换,获取虚拟组织表的fid + String JSONStr = (String) param.get("JSONStr"); + JSONObject jsonObject = (JSONObject) JSONObject.parse(JSONStr); + String fid = jsonObject.getString(field); + JclOrgMap jclOrgMap = new JclOrgMap(); + //查询虚拟组织表中的新增记录 + RecordSet recordSet = new RecordSet(); + recordSet.executeQuery("select id, fid, fname, ftype, forder, fparentid, fdate from uf_jcl_org_vir where fid = '" + fid + "'"); + if(recordSet.next()){ + Integer ftype = Integer.valueOf(recordSet.getString("ftype")); + jclOrgMap.setFType(ftype); + jclOrgMap.setFIsVitual(1);//虚拟组织标记 + jclOrgMap.setFClass(-1);//-1,虚拟组织 + jclOrgMap.setFClassName("虚拟组织"); + jclOrgMap.setFDateBegin(new Date(OrganizationDateUtil.stringToDate(recordSet.getString("fdate")).getTime())); + jclOrgMap.setFDateEnd(new Date(OrganizationDateUtil.stringToDate("2099-12-31").getTime())); + jclOrgMap.setFNumber(String.valueOf(modeid));//模块的数据编号 + jclOrgMap.setId(Integer.valueOf(recordSet.getString("id"))); + jclOrgMap.setFName(recordSet.getString("fname")); + if ("1".equals(recordSet.getString("ftype"))) { + jclOrgMap.setFParentId(0); + }else { + jclOrgMap.setFParentId(Integer.valueOf(recordSet.getString("fparentid"))); + } + MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(jclOrgMap); + } + } + } + } catch (Exception e) { + result.put("errmsg","自定义出错信息"); + result.put("flag", "false"); + } + return result; + } +}