From 069f943d9a4637743675d4432b4a96c06b91a2bf Mon Sep 17 00:00:00 2001 From: Mlin Date: Fri, 24 Feb 2023 16:17:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=98=89=E5=85=86=E6=88=BF=E5=9C=B0=E4=BA=A7?= =?UTF-8?q?=EF=BC=9A=E7=BB=84=E7=BB=87=E6=9E=B6=E6=9E=84=E5=9B=BE=E4=BA=8C?= =?UTF-8?q?=E6=AC=A1=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/jclorgmap/JclOrgMapper.java | 6 ++ .../mapper/jclorgmap/JclOrgMapper.xml | 42 ++++++++++++- .../mapper/resource/ResourceMapper.java | 1 + .../mapper/resource/ResourceMapper.xml | 6 +- .../service/impl/OrgChartServiceImpl.java | 60 ++++++++++++++++--- 5 files changed, 105 insertions(+), 10 deletions(-) diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java index 9d8e7a9f..7bfc59f1 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java @@ -48,4 +48,10 @@ public interface JclOrgMapper { JclOrgMap getResInfo(@Param("level") String level, @Param("grade") String grade, @Param("id") String id); + JclOrgMap getJclOrgMapByManagerIdAndDeptId(@Param("managerId") String managerId,@Param("deptId") String deptId); + + int insertResToMapJZ(@Param("level") String level, @Param("grade") String grade, @Param("parentField") String parentField, @Param("managerId") String managerId, @Param("deptId") String deptId); + + int insertBmfzrToMapJZ(@Param("level") String level, @Param("grade") String grade); + } diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml index 96336796..dcab7ff4 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml @@ -236,7 +236,7 @@ 0,0,0,NOW(),'2099-12-31' from HrmDepartment as a - left join hrmdepartmentdefined as b on a.id=b.deptid + left join hrmdepartmentdefined as b on a.id=b.deptid and b.zzjgxs=1 left join hrmresource as c on b.BMFZR=c.ID left join hrmjobtitles as d on c.JOBTITLE=d.id left join cus_fielddata e on c.id = e.id and e.scope='HrmCustomFieldByInfoType' and e.scopeid=3 @@ -331,4 +331,44 @@ left join jcl_org_grade f on d.${grade}=f.id where a.id=#{id} + + + + + + insert into jcl_org_map + (id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleaderimg, + fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, + fisvitual,fdatebegin,fdateend) + select a.id+300000000,4,a.id,a.uuid,0,'行政维度',a.workcode,a.LASTNAME,a.messagerurl, + c.id,c.jobtitlename,e.level_name,f.grade_name, ${parentField},a.MANAGERID, + 0,NOW(),'2099-12-31' + from hrmresource a + left join jcl_org_job b ON a.JOBTITLE = b.ec_jobTitle and a.subcompanyid1=b.ec_company and a.departmentid=b.ec_department + left join HrmJobTitles c on b.ec_jobTitle = c.id + left join cus_fielddata d on a.id = d.id and d.scope='HrmCustomFieldByInfoType' and d.scopeid=3 + left join jcl_org_level e on d.${level}=e.id + left join jcl_org_grade f on d.${grade}=f.id + where a.status < 4 and a.MANAGERID=#{managerId} and a.departmentid=#{deptId} + + + + insert into jcl_org_map + (id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleaderimg, + fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, + fisvitual,fdatebegin,fdateend,this_dept) + select c.id+200000000,3,c.id,c.uuid,0,'行政维度',c.workcode,c.LASTNAME,c.messagerurl, + e.id,e.jobtitlename,g.level_name,h.grade_name, a.id +100000000,a.id, + 0,NOW(),'2099-12-31',(case when a.id=c.departmentid then '1' else '0' end) this_dept + from hrmdepartment a + inner join hrmdepartmentdefined b on a.id=b.DEPTID and b.zzjgxs=1 + inner join hrmresource c on b.BMFZR=c.id + left join jcl_org_job d on c.jobtitle = d.ec_jobTitle and c.SUBCOMPANYID1=d.ec_company and c.DEPARTMENTID=d.ec_department + left join hrmjobtitles e on d.ec_jobTitle=e.id + left join cus_fielddata f on c.id = f.id and f.scope='HrmCustomFieldByInfoType' and f.scopeid=3 + left join jcl_org_level g on f.${level}=g.id + left join jcl_org_grade h on f.${grade}=h.id + \ No newline at end of file diff --git a/src/com/engine/organization/mapper/resource/ResourceMapper.java b/src/com/engine/organization/mapper/resource/ResourceMapper.java index 3883e6fd..87f70de8 100644 --- a/src/com/engine/organization/mapper/resource/ResourceMapper.java +++ b/src/com/engine/organization/mapper/resource/ResourceMapper.java @@ -38,5 +38,6 @@ public interface ResourceMapper { */ List getIdByKeyField(@Param("keyField") String keyField, @Param("keyFieldValue") String keyFieldValue); + List getHrmByManagerIdAndDeptId(@Param("managerId") String managerId, @Param("deptId") String deptId); } diff --git a/src/com/engine/organization/mapper/resource/ResourceMapper.xml b/src/com/engine/organization/mapper/resource/ResourceMapper.xml index 99b673da..280bd46f 100644 --- a/src/com/engine/organization/mapper/resource/ResourceMapper.xml +++ b/src/com/engine/organization/mapper/resource/ResourceMapper.xml @@ -155,6 +155,10 @@ AND t.last_name like '%'+#{param.lastName}+'%' - + \ No newline at end of file diff --git a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java index 63590b1e..70955a68 100644 --- a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java @@ -3,11 +3,13 @@ package com.engine.organization.service.impl; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; import com.engine.core.impl.Service; +import com.engine.organization.entity.hrmresource.po.HrmResourcePO; import com.engine.organization.entity.map.JclOrgMap; import com.engine.organization.entity.scheme.po.GradePO; import com.engine.organization.entity.scheme.po.LevelPO; import com.engine.organization.entity.staff.po.StaffPO; import com.engine.organization.mapper.jclorgmap.JclOrgMapper; +import com.engine.organization.mapper.resource.ResourceMapper; import com.engine.organization.mapper.scheme.GradeMapper; import com.engine.organization.mapper.scheme.LevelMapper; import com.engine.organization.mapper.staff.StaffMapper; @@ -550,16 +552,27 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { // 自下向上刷新 getJclOrgMapMapper().deleteAllMap(date); getJclOrgMapMapper().updateAllMap(date,time); - //同步人员信息 - getJclOrgMapMapper().insertResToMap(level,grade); - //同步岗位信息 - getJclOrgMapMapper().insertJobToMap(); - //同步部门信息 - getJclOrgMapMapper().insertDeptToMap(level,grade); - //同步分部信息 - getJclOrgMapMapper().insertSubComToMap(); //同步集团信息 getJclOrgMapMapper().insertComToMap(); + //同步分部信息 + getJclOrgMapMapper().insertSubComToMap(); + //同步部门信息 + getJclOrgMapMapper().insertDeptToMap(level,grade); + + + //同步岗位信息 +// getJclOrgMapMapper().insertJobToMap(); + // 同步部门负责人 + getJclOrgMapMapper().insertBmfzrToMapJZ(level,grade); + RecordSet rs = new RecordSet(); + rs.execute("select c.id as id,c.departmentid as departmentid from hrmdepartment a \n" + + "inner join hrmdepartmentdefined b on a.id=b.DEPTID\n" + + "inner join hrmresource c on b.BMFZR=c.id "); + while (rs.next()) { + //同步人员信息 + syncHrmResource(rs.getString("id"),rs.getString("departmentid"),3); + } +// getJclOrgMapMapper().insertResToMap(level,grade); //清除部门合并、转移造成的脏数据 getJclOrgMapMapper().deleteJobNull(date); //刷新在岗数、编制数(从岗位向上刷,岗位不需处理) @@ -605,6 +618,37 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { } } + + private ResourceMapper getResourceMapper() { + return MapperProxyFactory.getProxy(ResourceMapper.class); + } + + private void syncHrmResource(String managerId, String deptId,int ftype) { + String parentField = ""; + // 根据直接上级id、部门Id,确认该直接上级id在当前部门的下属 + switch (ftype) { + case 3: + parentField = "a.MANAGERID +200000000"; + break; + case 4: + parentField = "a.MANAGERID +300000000"; + break; + default: break; + } + int flag = getJclOrgMapMapper().insertResToMapJZ(level, grade,parentField, managerId, deptId); + // 下属寻找下属,直至没有下属 + List list = getResourceMapper().getHrmByManagerIdAndDeptId(managerId, deptId); + for (HrmResourcePO hrmResourcePO : list) { + List childList = getResourceMapper().getHrmByManagerIdAndDeptId(String.valueOf(hrmResourcePO.getId()), deptId); + if (childList.size() > 0) { + parentField = "a.MANAGERID +300000000"; + getJclOrgMapMapper().insertResToMapJZ(level, grade,parentField, String.valueOf(hrmResourcePO.getId()), deptId); + for (HrmResourcePO hrmResourcePOChild : childList) { + syncHrmResource(String.valueOf(hrmResourcePOChild.getId()), deptId,4); + } + } + } + } private String getFieldName(String fieldabel) { RecordSet recordSet = new RecordSet(); String fieldname = null;