嘉兆房地产:组织架构图二次开

feature/jiazhao
Mlin 2 years ago
parent 35b50cb244
commit 069f943d9a

@ -48,4 +48,10 @@ public interface JclOrgMapper {
JclOrgMap getResInfo(@Param("level") String level, @Param("grade") String grade, @Param("id") String id); 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);
} }

@ -236,7 +236,7 @@
0,0,0,NOW(),'2099-12-31' 0,0,0,NOW(),'2099-12-31'
from from
HrmDepartment as a 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 hrmresource as c on b.BMFZR=c.ID
left join hrmjobtitles as d on c.JOBTITLE=d.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 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 left join jcl_org_grade f on d.${grade}=f.id
where a.id=#{id} where a.id=#{id}
</select> </select>
<select id="getJclOrgMapByManagerIdAndDeptId" resultType="com.engine.organization.entity.map.JclOrgMap">
</select>
<!-- 嘉兆:下级人员初始化 -->
<insert id="insertResToMapJZ" databaseId="mysql">
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 &lt; 4 and a.MANAGERID=#{managerId} and a.departmentid=#{deptId}
</insert>
<!-- 嘉兆:部门负责人初始化 -->
<insert id="insertBmfzrToMapJZ" databaseId="mysql">
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
</insert>
</mapper> </mapper>

@ -38,5 +38,6 @@ public interface ResourceMapper {
*/ */
List<Long> getIdByKeyField(@Param("keyField") String keyField, @Param("keyFieldValue") String keyFieldValue); List<Long> getIdByKeyField(@Param("keyField") String keyField, @Param("keyFieldValue") String keyFieldValue);
List<HrmResourcePO> getHrmByManagerIdAndDeptId(@Param("managerId") String managerId, @Param("deptId") String deptId);
} }

@ -155,6 +155,10 @@
AND t.last_name like '%'+#{param.lastName}+'%' AND t.last_name like '%'+#{param.lastName}+'%'
</if> </if>
</sql> </sql>
<select id="getHrmByManagerIdAndDeptId" resultType="com.engine.organization.entity.hrmresource.po.HrmResourcePO">
select
a.id,a.workcode,a.lastName,a.sex,a.accountType,a.belongTo,a.departmentId
from hrmresource a where a.MANAGERID=#{managerId} and a.DEPARTMENTID=#{deptId}
</select>
</mapper> </mapper>

@ -3,11 +3,13 @@ package com.engine.organization.service.impl;
import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.engine.core.impl.Service; 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.map.JclOrgMap;
import com.engine.organization.entity.scheme.po.GradePO; import com.engine.organization.entity.scheme.po.GradePO;
import com.engine.organization.entity.scheme.po.LevelPO; import com.engine.organization.entity.scheme.po.LevelPO;
import com.engine.organization.entity.staff.po.StaffPO; import com.engine.organization.entity.staff.po.StaffPO;
import com.engine.organization.mapper.jclorgmap.JclOrgMapper; 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.GradeMapper;
import com.engine.organization.mapper.scheme.LevelMapper; import com.engine.organization.mapper.scheme.LevelMapper;
import com.engine.organization.mapper.staff.StaffMapper; import com.engine.organization.mapper.staff.StaffMapper;
@ -550,16 +552,27 @@ public class OrgChartServiceImpl extends Service implements OrgChartService {
// 自下向上刷新 // 自下向上刷新
getJclOrgMapMapper().deleteAllMap(date); getJclOrgMapMapper().deleteAllMap(date);
getJclOrgMapMapper().updateAllMap(date,time); getJclOrgMapMapper().updateAllMap(date,time);
//同步人员信息
getJclOrgMapMapper().insertResToMap(level,grade);
//同步岗位信息
getJclOrgMapMapper().insertJobToMap();
//同步部门信息
getJclOrgMapMapper().insertDeptToMap(level,grade);
//同步分部信息
getJclOrgMapMapper().insertSubComToMap();
//同步集团信息 //同步集团信息
getJclOrgMapMapper().insertComToMap(); 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); 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<HrmResourcePO> list = getResourceMapper().getHrmByManagerIdAndDeptId(managerId, deptId);
for (HrmResourcePO hrmResourcePO : list) {
List<HrmResourcePO> 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) { private String getFieldName(String fieldabel) {
RecordSet recordSet = new RecordSet(); RecordSet recordSet = new RecordSet();
String fieldname = null; String fieldname = null;

Loading…
Cancel
Save