diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java index a5f9c483..2a1b839a 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java @@ -35,4 +35,13 @@ public interface JclOrgMapper { int updateAllMap(@Param("currentDate") Date currentDate, @Param("yesterday") Date yesterday); int insertResToMap(); + + int insertJobToMap(); + + int insertDeptToMap(); + + int insertSubComToMap(); + + int insertComToMap(); + } diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml index 379e646a..c68bbd7b 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml @@ -118,11 +118,46 @@ where time_start <= convert(varchar(100),getDate(),23) and time_end > convert(varchar(100),getDate(),23)) and delete_type=0 group by job_id) e on a.id=e.job_id left join (select jobtitle,count(1) fcnt from hrmresource group by jobtitle) f - on f.JOBTITLE=a.id + on f.JOBTITLE=a.ec_jobTitle left join HrmJobTitles g on a.ec_jobTitle = g.id where isnull(a.delete_type,0) <> 1 and isnull(a.forbidden_tag,0) <> 1 - - + + + insert into jcl_org_map + (id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, + fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, + fplan,fonjob,fisvitual,fdatebegin,fdateend) + select a.id+100000000,2,a.id,a.uuid,0,'行政维度',a.DEPARTMENTCODE,a.departmentname,cast(a.BMFZR as varchar(10)),b.messagerurl, + b.lastname,b.jobtitle,c.jobtitlemark,null,null, + (case isnull(a.supdepid,0) when 0 then a.subcompanyid1 else a.supdepid+100000000 end), + (case isnull(a.supdepid,0) when 0 then a.subcompanyid1 else a.supdepid end), + 0,0,0,convert(varchar(100),getDate(),23),'2099-12-31' + from + HrmDepartment as a + left join hrmresource as b on cast(a.BMFZR as varchar(10))=cast(b.ID as varchar(10)) + left join hrmjobtitles as c on b.JOBTITLE=c.id + where isnull(a.canceled,0) <> 1 + + + + insert into jcl_org_map + (id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname,fleader,fleaderimg, + fleadername,fleaderjobid,fleaderjob,fleaderlv,fleaderst,fparentid,fobjparentid, + fplan,fonjob,fisvitual,fdatebegin,fdateend) + select a.id,1,a.id,a.uuid,0,'行政维度', '',a.subcompanyname,null,'', + '',NULL,'','','',isnull(a.supsubcomid,0),isnull(a.supsubcomid,0), + 0,0,0,convert(varchar(100),getDate(),23),'2099-12-31' from hrmsubcompany as a + where isnull(a.canceled,0) <> 1 + + + + INSERT INTO jcl_org_map ( id, ftype, fobjid, uuid,fclass, fclassname, fnumber, fname, + fleader, fleaderimg, fleadername, fleaderjobid, fleaderjob, fparentid,fobjparentid, + fplan, fonjob, fisvitual, fdatebegin, fdateend) + SELECT 0, 0, 0, uuid, 0, '行政维度', '00', companyname, + 0, NULL, NULL, 0, NULL, -1, 0, + 0, 0, 0, convert(varchar(100),getDate(),23), '2099-12-31' FROM hrmcompany + \ No newline at end of file diff --git a/src/com/engine/organization/service/OrgChartService.java b/src/com/engine/organization/service/OrgChartService.java index 48cd871a..0a4042b0 100644 --- a/src/com/engine/organization/service/OrgChartService.java +++ b/src/com/engine/organization/service/OrgChartService.java @@ -21,6 +21,6 @@ public interface OrgChartService { Map asyncCompanyData(Map request2Map, User user); - Map synchronousData(Map request2Map, User user); + String synchronousData(Map request2Map, User user); } diff --git a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java index 57e0725a..317ec6d9 100644 --- a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java @@ -509,7 +509,7 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { return MapperProxyFactory.getProxy(StaffMapper.class); } @Override - public Map synchronousData(Map request2Map, User user) { + public String synchronousData(Map request2Map, User user) { String currentDate = OrganizationDateUtil.getFormatLocalDate(new java.util.Date()); java.sql.Date date = new java.sql.Date(OrganizationDateUtil.stringToDate(currentDate).getTime()); Calendar cal = Calendar.getInstance(); @@ -522,16 +522,48 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { //同步人员信息 getJclOrgMapMapper().insertResToMap(); //同步岗位信息 - JclOrgMap jclOrgMap = new JclOrgMap(); - -// StaffPO staffPO = getStaffMapper().getStaffsByParamId(Integer.parseInt(type), null, null, String.valueOf(id)); - - - - - return null; + getJclOrgMapMapper().insertJobToMap(); + //同步部门信息 + getJclOrgMapMapper().insertDeptToMap(); + //同步分部信息 + getJclOrgMapMapper().insertSubComToMap(); + //同步集团信息 + getJclOrgMapMapper().insertComToMap(); + + //刷新在岗数、编制数(从岗位向上刷,岗位不需处理) + List jclOrgMaps = getJclOrgMapMapper().getJclOrgMapByType("3",date); + for (JclOrgMap jclOrgMap : jclOrgMaps){ + int id = jclOrgMap.getId(); + countJobAndPlans("3",id,currentDate); + } + return "同步成功"; } + /** + * 刷新在岗、编制数 + */ + void countJobAndPlans(String type,int id,String currentDate) { + java.sql.Date date = new java.sql.Date(OrganizationDateUtil.stringToDate(currentDate).getTime()); + RecordSet rs = new RecordSet(); + //处理上级 + String sql = "select fparentid from jcl_org_map where ftype=? and id=? and fdateend>?"; + String typeSql = "select ftype from jcl_org_map where id=? and fdateend>?"; + rs.executeQuery(sql, type, id, currentDate); + String fparentid = null; + String ftype = null; + if (rs.next()) { + fparentid = rs.getString("fparentid"); + rs.executeQuery(typeSql, fparentid, currentDate); + if (rs.next()) { + ftype = rs.getString("ftype"); + } + } + JclOrgMap jclOrgMap = getJclOrgMapMapper().getSumPlanAndJobByFParentId(date, fparentid); + getJclOrgMapMapper().updateMapById(Integer.parseInt(fparentid), jclOrgMap.getFPlan(), jclOrgMap.getFOnJob(), date); + if (!"-1".equals(fparentid)) { + countJobAndPlans(ftype, Integer.parseInt(fparentid), String.valueOf(currentDate)); + } + } static class OrgSelectItem { private String id; private String fnumber; diff --git a/src/com/engine/organization/wrapper/OrgChartWrapper.java b/src/com/engine/organization/wrapper/OrgChartWrapper.java index bf700a4c..3cc23ad0 100644 --- a/src/com/engine/organization/wrapper/OrgChartWrapper.java +++ b/src/com/engine/organization/wrapper/OrgChartWrapper.java @@ -40,7 +40,7 @@ public class OrgChartWrapper extends Service { return getOrgChartService(user).asyncCompanyData(request2Map, user); } - public Map synchronousData(Map request2Map) { + public String synchronousData(Map request2Map) { return getOrgChartService(user).synchronousData(request2Map, user); }