diff --git a/jcl-hrmorganization/secDevLib/weaver-common-hrm-3.5.0.RELEASE.hotfix8.jar b/jcl-hrmorganization/secDevLib/weaver-common-hrm-3.5.0.RELEASE.hotfix8.jar new file mode 100644 index 0000000..110c731 Binary files /dev/null and b/jcl-hrmorganization/secDevLib/weaver-common-hrm-3.5.0.RELEASE.hotfix8.jar differ diff --git a/jcl-hrmorganization/secDevLib/weaver-hr-client-2.25.0.RELEASE.jar b/jcl-hrmorganization/secDevLib/weaver-hr-client-2.25.0.RELEASE.jar new file mode 100644 index 0000000..247ee31 Binary files /dev/null and b/jcl-hrmorganization/secDevLib/weaver-hr-client-2.25.0.RELEASE.jar differ diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Node.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Node.java new file mode 100644 index 0000000..37189c2 --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Node.java @@ -0,0 +1,56 @@ +package com.weaver.seconddev.jcl.organization.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +@Data +@Accessors(chain = true) +public class Node implements Serializable { + + private static final long serialVersionUID = -1751343370319719157L; + + /** + * 数据id required + */ + private Long id; + /** + * 节点名称 required + */ + private String name; + /** + * 节点类型 required + */ + private String type; + /** + * 备注信息 + */ + private String remark; + /** + * 节点背景色 + */ + private String bgColor; + /** + * 节点文字颜色 + */ + private String color; + /** + * 节点边框颜色 + */ + private String borderColor; + /** + * 节点状态 + */ + private String status; + /** + * 子节点 + */ + private List children; + /** + * 人员数量 + */ + private int employeeCount; +} + diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Sheet.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Sheet.java new file mode 100644 index 0000000..49dc8ea --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Sheet.java @@ -0,0 +1,25 @@ +package com.weaver.seconddev.jcl.organization.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@Accessors(chain = true) +public class Sheet implements Serializable { + private static final long serialVersionUID = 924808037114910711L; + + /** + * sheet id required + */ + private String id; + /** + * sheet名称 required + */ + private String title; + /** + * sheet节点信息 required + */ + private Node node; +} diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/esb/cbd/SyncDepartmentChanges.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/esb/cbd/SyncDepartmentChanges.java index eaf17ce..1a7f428 100644 --- a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/esb/cbd/SyncDepartmentChanges.java +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/esb/cbd/SyncDepartmentChanges.java @@ -127,6 +127,28 @@ public class SyncDepartmentChanges implements EsbServerlessRpcRemoteInterface { List departmentId = getDepartmentId(deleteDeptCode); Map deleteMap = deleteSysDept(departmentId, apiInfo, host); log.error("SyncDepartmentChanges1111.deleteMap:{}", deleteMap); + /** + * 插入组织变更记录表(变更理由) + */ + Map map; + for (Map deletedChange : deletedChanges) { + String changed = null!=deletedChange.get("changed")?String.valueOf(deletedChange.get("changed").toString()):""; + log.error("SyncDepartmentChanges222.changed:{}", changed); + // 去掉大括号,并按逗号分割 + String[] entries = changed.substring(1, changed.length() - 1).split(", "); + // 使用 Stream 转换为 Map + map = Arrays.stream(entries) + .map(entry -> entry.split("=", 2)) // 防止值里有 "=" + .collect(Collectors.toMap( + arr -> arr[0], // key + arr -> arr.length > 1 ? arr[1] : "" // value(处理空值) + )); + log.error("SyncDepartmentChanges222.map:{}", map); + String bh = null!=map.get("bh")? map.get("bh") :""; + String czlx = null!=map.get("czlx")? map.get("czlx") :""; + String bgly = null!=map.get("bgly")? map.get("bgly") :""; + insertZzbgjl( bh, czlx, bgly, bgsxrq); + } } //修改1 if (CollectionUtils.isNotEmpty(addedChanges)) { @@ -449,6 +471,9 @@ public class SyncDepartmentChanges implements EsbServerlessRpcRemoteInterface { log.error("addSysDept.map:{}", map); //for (Map map : addList) { String bh = null!=map.get("bh")? map.get("bh") :""; + String czlx = null!=map.get("czlx")? map.get("czlx") :""; + String bgly = null!=map.get("bgly")? map.get("bgly") :""; + String bgsxrq = null!=map.get("bgsxrq")? map.get("bgsxrq") :""; String zz = null!=map.get("zz")? map.get("zz") :""; String sjzz = null!=map.get("sjzz")? map.get("sjzz") :""; String sjzzbh = null!=map.get("sjzzbh")? map.get("sjzzbh") :""; @@ -493,6 +518,10 @@ public class SyncDepartmentChanges implements EsbServerlessRpcRemoteInterface { jsonObject.put("access_token",accessToken); result = syncDataUtils.doPostHttp(jsonObject, path,host); log.error("addSysDept.result:111{}", result); + /** + * 先插入组织变更记录表(变更理由) + */ + insertZzbgjl( bh, czlx, bgly, bgsxrq); /** * 新增部门成功之后,需要同步插入部门自定义表字段信息 */ @@ -531,6 +560,32 @@ public class SyncDepartmentChanges implements EsbServerlessRpcRemoteInterface { return result; } + /** + * 插入组织变更记录表(变更理由) + */ + private void insertZzbgjl(String bh,String czlx,String bgly,String bgsxrq){ + // 生成随机 ID + long id = IdGenerator.generate(); + log.error("insertZzbgjl.id:{}", id); + // 获取当前时间 + LocalDateTime now = LocalDateTime.now(); + // 定义日期时间格式化器 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + // 格式化当前日期 + String nowData = now.format(formatter); + log.error("insertZzbgjl.nowData:{}", nowData); + String tenant_key = RecruitModuleUtils.getCurrentTenantKey(); + log.error("insertZzbgjl.tenant_key:{}", tenant_key); + String userId = "1147262704872284161"; + log.error("insertZzbgjl.userId:{}", userId); + String sql="insert into uf_zzbgjl(ID, FORM_DATA_ID, DATA_INDEX, CREATE_TIME, UPDATE_TIME, TENANT_KEY, " + + " IS_DELETE, CREATOR, UPDATER, DELETE_TYPE, FT_STATUS, bgzzbh,czlx,bgly,bgsxrq)" + + " values('" + id + "','" + id + "','0','"+nowData+"','" + nowData + "','" + tenant_key + "','0'," + + " '"+userId+"','"+userId+"','0','0','" + bh + "','" + czlx + "','" + bgly + "','" + bgsxrq + "')"; + log.error("insertZzbgjl.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + } /** * 更新部门 @@ -542,6 +597,9 @@ public class SyncDepartmentChanges implements EsbServerlessRpcRemoteInterface { Map result = new HashMap<>(); //for (Map map : updateList) { String bh = null!=map.get("bh")? map.get("bh") :""; + String czlx = null!=map.get("czlx")? map.get("czlx") :""; + String bgly = null!=map.get("bgly")? map.get("bgly") :""; + String bgsxrq = null!=map.get("bgsxrq")? map.get("bgsxrq") :""; String zz = null!=map.get("zz")? map.get("zz") :""; String sjzz = null!=map.get("sjzz")? map.get("sjzz") :""; String sjzzbh = null!=map.get("sjzzbh")? map.get("sjzzbh") :""; @@ -581,6 +639,10 @@ public class SyncDepartmentChanges implements EsbServerlessRpcRemoteInterface { jsonObject.put("access_token", accessToken); result = syncDataUtils.doPostHttp(jsonObject, path, host); log.error("updateSysDept.result:111{}", result); + /** + * 先插入组织变更记录表(变更理由) + */ + insertZzbgjl( bh, czlx, bgly, bgsxrq); /** * 新增部门成功之后,需要同步插入部门自定义表字段信息 */ @@ -849,7 +911,7 @@ public class SyncDepartmentChanges implements EsbServerlessRpcRemoteInterface { log.error("getOriginalTree.bgsxrq:{}", bgsxrq); String sql = ""; if("0".equals(flag)){ - sql = "select a.bgzz,b.* from uf_organization_zzsj b \n" + + sql = "select a.bgzz,a.bgly,a.bgsxrq,b.* from uf_organization_zzsj b \n" + "left join uf_organizational_changes a on a.id = b.form_data_id where a.delete_type = 0 and b.delete_type = 0 "; }else if("1".equals(flag)){ sql = "select a.bgzz,b.* from uf_organization_bghzzsj b \n" + diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/esb/cbd/XmindDataFilterCmd.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/esb/cbd/XmindDataFilterCmd.java new file mode 100644 index 0000000..c3f01a3 --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/esb/cbd/XmindDataFilterCmd.java @@ -0,0 +1,465 @@ +package com.weaver.seconddev.jcl.organization.esb.cbd; + +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.framework.rpc.annotation.RpcReference; +import com.weaver.loom.context.annotation.WeaHookReg; +import com.weaver.loom.context.domain.AppInfo; +import com.weaver.loom.context.domain.WeaHookRequest; +import com.weaver.loom.context.domain.WeaHookResponse; +import com.weaver.loom.context.register.RegHookEvent; +import com.weaver.seconddev.jcl.common.service.CommonService; +import com.weaver.seconddev.jcl.organization.entity.Deft; +import com.weaver.seconddev.jcl.organization.entity.Node; +import com.weaver.seconddev.jcl.organization.entity.Sheet; +import com.weaver.seconddev.jcl.organization.util.DatabaseUtils; +import com.weaver.seconddev.jcl.organization.util.RecruitModuleUtils; +import com.weaver.teams.hrapp.dto.est.HrComEstCfgInfoDto; +import com.weaver.teams.hrapp.dto.est.param.HrComEstCfgInfoParam; +import com.weaver.teams.hrapp.rest.HrRemoteApiService; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.*; +import java.util.stream.Collectors; + +@WeaHookReg(code = "HRM_XMIND_DATA_FILTER_001") +public class XmindDataFilterCmd extends RegHookEvent { + + private static final Logger log = LoggerFactory.getLogger(XmindDataFilterCmd.class); + private static String tenant_key = RecruitModuleUtils.getCurrentTenantKey(); + + @Autowired + private DatabaseUtils databaseUtils; + @RpcReference + private HrRemoteApiService hrRemoteApiService; + @Autowired + private CommonService commonService; + + @Override + public WeaHookResponse handle(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) throws Exception { + //入参,修改入参并不会影响到埋点的原始数据 + Map param = request.getParams(); + + //创建Sheet数据 + List sheets = new ArrayList<>(); + Sheet allDataSheet = new Sheet().setId("1").setTitle("组织架构"); + //Sheet orgDataSheet = new Sheet().setId("2").setTitle("组织详情"); + sheets.add(allDataSheet); + //sheets.add(orgDataSheet); + //1.查询获取所有部门信息 + List> allDepartments = getAllDepartments(); + //2.组装部门数据 + List defts = new ArrayList<>(); + for (Map allDepartment : allDepartments) { + Deft deft = new Deft(); + String id = String.valueOf(allDepartment.get("id")); + deft.setId(id); + deft.setName(String.valueOf(allDepartment.get("name"))); + deft.setParent_id(String.valueOf(allDepartment.get("parent"))); + //这里要根据部门id查询 + HrComEstCfgInfoDto cfgInfoDto = getPreparationsByBm(id); + //编制数 + int estCount = cfgInfoDto.getEstCount(); + //缺编数 + Integer estLackCount = cfgInfoDto.getEstLackCount(); + //超编数 + Integer estOverCount = cfgInfoDto.getEstOverCount(); + //查询在岗人数 + int positionCount = getPositionCount(id); + //查询部门岗位名称 + List> positionByDept = getPositionByDept(id); + //遍历部门岗位,查询岗位编制等相关信息 + StringJoiner joiner = new StringJoiner(","); + for (Map map : positionByDept) { + String gwId = String.valueOf(map.get("id")); + String gwName = String.valueOf(map.get("name")); + //查询岗位编制数/缺编数 + List> personYdzqMonthList = getListDatasBySourceName(gwId); + // 处理数据(增加空列表校验) + int estCountGw = 0; + int estLackCountGw = 0; + if (!personYdzqMonthList.isEmpty()) { + Map data = personYdzqMonthList.get(0); + estCountGw = Integer.parseInt(String.valueOf(data.getOrDefault("estCount", 0))); + estLackCountGw = Integer.parseInt(String.valueOf(data.getOrDefault("estLackCount", 0))); + } + //查询岗位人数 + int countGw = getPositionCountGw(gwId); + String gwInfo = String.format("岗位名称:%s、编制数:%d、在岗人数:%d、缺编数:%d", + gwName, estCountGw, countGw, estLackCountGw); + joiner.add(gwInfo); + } + //查询人员:姓名/职级/职位 + StringBuilder sb = new StringBuilder(); + List> userNameByDept = getUserNameByDept(id); + for (Map map : userNameByDept) { + String userId = String.valueOf(map.get("id")); + String userName = String.valueOf(map.get("username")); + String jobset_level = String.valueOf(map.get("jobset_level")); + //职级 + String jobsetLevel = getJobsetLevel(jobset_level); + //职位 + String zw = getZw(userId); + // 格式化当前人员信息 + String personInfo = String.format("姓名:%s、职级:%s、职位:%s", + userName, jobsetLevel, zw); + + // 非首条数据添加分隔符 + if (sb.length() > 0) { + sb.append(","); + } + sb.append(personInfo); + } + // 计算remark + String remark = String.format("部门编制数:%d\n部门在岗人数:%d\n部门缺编数:%d\n岗位:%s\n人员:%s", + estCount, + positionCount, + estLackCount, + joiner.toString(), + sb.toString()); + if (null!=estLackCount&&estLackCount >0) { + remark += "\n缺编:" + (estLackCount); + } + if (null!=estOverCount&&estOverCount >0) { + remark += "\n超编:" + (estOverCount); + } + deft.setRemark(remark); + if((null!=estLackCount&&estLackCount >0) || (null!=estOverCount&&estOverCount >0)){ + deft.setBgColor("#F1F1F1"); + } + defts.add(deft); + } + //3.组装 + Node root = buildDepartmentTree(defts); + //4.塞入节点 + allDataSheet.setNode(root); + //独立部门 + List> getsfdcdlzzjgBm = getsfdcdlzzjgBm(); + //2.组装部门数据2 + List defts2 = new ArrayList<>(); + for (int i = 0; i < getsfdcdlzzjgBm.size(); i++) { + String id = String.valueOf(getsfdcdlzzjgBm.get(i).get("id")); + String name = String.valueOf(getsfdcdlzzjgBm.get(i).get("name")); + Sheet orgDataSheet = new Sheet().setId(String.valueOf(i+2)).setTitle(name); + //这里先要根据部门id分别查询其所有下级部门(包含自身) + List> allLinkDept = getAllLinkDept(id); + for (Map objectMap : allLinkDept) { + Deft deft = new Deft(); + deft.setId(String.valueOf(objectMap.get("id"))); + deft.setName(String.valueOf(objectMap.get("name"))); + deft.setParent_id(String.valueOf(objectMap.get("parent"))); + //这里要根据部门id查询 + HrComEstCfgInfoDto cfgInfoDto = getPreparationsByBm(id); + //编制数 + int estCount = cfgInfoDto.getEstCount(); + //缺编数 + Integer estLackCount = cfgInfoDto.getEstLackCount(); + //超编数 + Integer estOverCount = cfgInfoDto.getEstOverCount(); + //查询在岗人数 + int positionCount = getPositionCount(id); + //查询部门岗位名称 + List> positionByDept = getPositionByDept(id); + //遍历部门岗位,查询岗位编制等相关信息 + StringJoiner joiner = new StringJoiner(","); + for (Map map : positionByDept) { + String gwId = String.valueOf(map.get("id")); + String gwName = String.valueOf(map.get("name")); + //查询岗位编制数/缺编数 + List> personYdzqMonthList = getListDatasBySourceName(gwId); + // 处理数据(增加空列表校验) + int estCountGw = 0; + int estLackCountGw = 0; + if (!personYdzqMonthList.isEmpty()) { + Map data = personYdzqMonthList.get(0); + estCountGw = Integer.parseInt(String.valueOf(data.getOrDefault("estCount", 0))); + estLackCountGw = Integer.parseInt(String.valueOf(data.getOrDefault("estLackCount", 0))); + } + //查询岗位人数 + int countGw = getPositionCountGw(gwId); + String gwInfo = String.format("岗位名称:%s、编制数:%d、在岗人数:%d、缺编数:%d", + gwName, estCountGw, countGw, estLackCountGw); + joiner.add(gwInfo); + } + //查询人员:姓名/职级/职位 + StringBuilder sb = new StringBuilder(); + List> userNameByDept = getUserNameByDept(id); + for (Map map : userNameByDept) { + String userId = String.valueOf(map.get("id")); + String userName = String.valueOf(map.get("username")); + String jobset_level = String.valueOf(map.get("jobset_level")); + //职级 + String jobsetLevel = getJobsetLevel(jobset_level); + //职位 + String zw = getZw(userId); + // 格式化当前人员信息 + String personInfo = String.format("姓名:%s、职级:%s、职位:%s", + userName, jobsetLevel, zw); + + // 非首条数据添加分隔符 + if (sb.length() > 0) { + sb.append(","); + } + sb.append(personInfo); + } + // 计算remark + String remark = String.format("部门编制数:%d\n部门在岗人数:%d\n部门缺编数:%d\n岗位:%s\n人员:%s", + estCount, + positionCount, + estLackCount, + joiner.toString(), + sb.toString()); + if (null!=estLackCount&&estLackCount >0) { + remark += "\n缺编:" + (estLackCount); + } + if (null!=estOverCount&&estOverCount >0) { + remark += "\n超编:" + (estOverCount); + } + deft.setRemark(remark); + if((null!=estLackCount&&estLackCount >0) || (null!=estOverCount&&estOverCount >0)){ + deft.setBgColor("#F1F1F1"); + } + defts2.add(deft); + } + //3.组装 + Node root2 = buildDepartmentTree(defts2); + //4.塞入节点 + orgDataSheet.setNode(root2); + sheets.add(orgDataSheet); + } + //返回 + Map result = new HashMap(); + result.put("data", sheets); + //Map result = ImmutableMapUtil.of("data", sheets); + //设置出参 + response.setResult(result); + return response; + } + + @Override + public void rollBack(WeaHookRequest request, WeaHookResponse response, AppInfo appInfo) throws Exception { + + } + + /** + * 塞入节点 + * @param departments + * @return + */ + public Node buildDepartmentTree(List departments) { + // 创建ID到Node的映射 + Map nodeMap = new HashMap<>(); + + // 第一步:创建所有节点 + for (Deft dept : departments) { + Node node = new Node() + .setId(Long.parseLong(dept.getId())) + .setName(dept.getName()) + .setType("department") + .setRemark(dept.getRemark()) + .setBgColor(dept.getBgColor()); + + nodeMap.put(dept.getId(), node); + } + + // 第二步:建立父子关系 + Node root = null; + for (Deft dept : departments) { + Node node = nodeMap.get(dept.getId()); + String parentId = dept.getParent_id(); + + if (parentId == null || parentId.equals("null") || StringUtils.isBlank(parentId)) { + root = node; // 找到根节点 + } else { + Node parent = nodeMap.get(parentId); + if (parent != null) { + parent.getChildren().add(node); + } + } + } + + return root; + } + + /** + * 查询所有部门 + */ + private List> getAllDepartments(){ + String sql="select id,name,parent from eteams.department where 1=1 "; + log.error("getAllDept.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getAllDept.recordList:{}", recordList); + return recordList; + } + /** + * 查询部门在岗人数 + */ + private int getPositionCount(String dept){ + int num = 0; + String sql="select count(*) as num from eteams.employee where department = '"+dept+"' "; + log.error("getPositionCount.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getPositionCount.recordList:{}", recordList); + if(CollectionUtils.isNotEmpty(recordList)){ + num = Integer.parseInt(String.valueOf(recordList.get(0).get("num"))); + } + return num; + } + + /** + * 查询所有部门 + */ + private List> getListDatasBySourceName(String gwId){ + List> personYdzqMonthList = commonService.getListDatasBySourceName("人员编制控编维度统计数据","LOGIC","weaver-hr-service"); + log.error("getListDatasBySourceName.personYdzqMonthList:{}", personYdzqMonthList); + return personYdzqMonthList.stream().filter(e->e.get("position").equals(gwId)).collect(Collectors.toList()); + } + + /** + * 查询岗位在岗人数 + */ + private int getPositionCountGw(String position){ + int num = 0; + String sql="select count(*) as num from eteams.employee where position = '"+position+"' "; + log.error("getPositionCountGw.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getPositionCountGw.recordList:{}", recordList); + if(CollectionUtils.isNotEmpty(recordList)){ + num = Integer.parseInt(String.valueOf(recordList.get(0).get("num"))); + } + return num; + } + + /** + * 查询部门人员姓名 + */ + private List> getUserNameByDept(String dept){ + String sql="select id,username,jobset_level from eteams.employee where department = '"+dept+"' "; + log.error("getUserNameByDept.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getUserNameByDept.recordList:{}", recordList); + return recordList; + } + + /** + * 查询人员职级 + */ + private String getJobsetLevel(String levelId){ + String jobset_level = ""; + String sql="select jobset_level from eteams.hrm_jobset_level where id = '"+levelId+"' "; + log.error("getJobsetLevel.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getJobsetLevel.recordList:{}", recordList); + if(CollectionUtils.isNotEmpty(recordList)){ + jobset_level = String.valueOf(recordList.get(0).get("jobset_level")); + } + return jobset_level; + } + + /** + * 查询人员职位 + */ + private String getZw(String userId){ + String zw = ""; + String sql="select zw from eteams.ft_1152026012537184302 where form_data_id = '"+userId+"' "; + log.error("getZw.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getZw.recordList:{}", recordList); + if(CollectionUtils.isNotEmpty(recordList)){ + zw = String.valueOf(recordList.get(0).get("zw")); + } + return zw; + } + + /** + * 根据部门查岗位 + */ + private List> getPositionByDept(String deptId){ + String sql="select p.id,p.name\n" + + "from eteams.position p\n" + + "left join eteams.hrm_pos_dep_link pdl on p.id = pdl.position_id\n" + + "where p.TENANT_KEY = '"+tenant_key+"'\n"+ + "AND p.is_delete = '0'\n" + + "AND (\n" + + " p.delete_type = '0'\n" + + " OR p.delete_type IS NULL\n" + + ")\n" + + "AND p.is_canceled = '0'\n" + + "and pdl.delete_type = 0\n" + + "and pdl.department_id = '"+deptId+"'"; + log.error("getPositionByDept.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getPositionByDept.recordList:{}", recordList); + return recordList; + } + + /** + * 根据岗位查职级 + */ + private List> getRankByPosition(String positionId){ + String sql="select * from grade g\n" + + "left join position p on g.ID = p.grade_id \n" + + "where p.ID = '"+positionId+"'\n" + + "and g.TENANT_KEY = '"+tenant_key+"'\n" + + "and g.ISDELETE = 0 "; + log.error("getRankByPosition.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getRankByPosition.recordList:{}", recordList); + return recordList; + } + + /** + * 查询独立导出组织架构 + */ + private List> getsfdcdlzzjgBm(){ + String sql=" select id,name,parent from department where formdata in(\n" + + " select form_data_id from eteams.ft_1154218872715993098 where sfdcdlzzjg=1)"; + log.error("getsfdcdlzzjgBm.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getsfdcdlzzjgBm.recordList:{}", recordList); + return recordList; + } + + /** + * 查询所有下级部门(包含自身) + */ + private List> getAllLinkDept(String deptId){ + String sql=" select id,name,parent from department where id='"+deptId+"' union all\n" + + "(SELECT id,name,parent FROM department\n" + + "WHERE id IN (SELECT cid FROM depart_link WHERE pid='"+deptId+"')\n" + + "AND is_delete = 0 AND status = 1)"; + log.error("getAllLinkDept.sql:{}", sql); + Map rs = databaseUtils.execute("LOGIC", "weaver-ebuilder-form-service", sql); + List> recordList = databaseUtils.getDataSourceList(rs); + log.error("getAllLinkDept.recordList:{}", recordList); + return recordList; + } + + /** + * 部门编制数查询 + */ + private HrComEstCfgInfoDto getPreparationsByBm(String deptId){ + HrComEstCfgInfoParam hrComEstCfgInfoParam = new HrComEstCfgInfoParam(); + hrComEstCfgInfoParam.setFindLatestParent(false); + hrComEstCfgInfoParam.setOrgId(Long.parseLong(deptId)); + WeaResult estCfgInfo = hrRemoteApiService.getEstCfgInfo(tenant_key, 1167276462243069953L, hrComEstCfgInfoParam); + log.error("getPreparations.estCfgInfo:{}", estCfgInfo); + HrComEstCfgInfoDto data = new HrComEstCfgInfoDto(); + if (estCfgInfo != null && estCfgInfo.isStatus()) { + data = estCfgInfo.getData(); + } + return data; + } +} +