diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java index 12f95af8..2a1b839a 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java @@ -29,4 +29,19 @@ public interface JclOrgMapper { int updateMapById(@Param("id") Integer id,@Param("fplan") Integer fplan,@Param("fonjob") Integer fonjob,@Param("currentDate") Date currentDate); List getJclOrgMapByType(@Param("fType") String fType, @Param("currentDate") Date currentDate); + + int deleteAllMap(@Param("currentDate") Date currentDate); + + 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 ba7028af..c68bbd7b 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml @@ -74,4 +74,90 @@ + + + + + delete from jcl_org_map where fdatebegin = #{currentDate} + + + + update jcl_org_map + + fdateend=#{yesterday}, + + where fdateend > #{currentDate} + + + + 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,null,null, isnull( b.id, '' ) +200000000,b.id, + 0,convert(varchar(100),getDate(),23),'2099-12-31' + from hrmresource a + left join jcl_org_job b ON a.JOBTITLE = b.ec_jobTitle + left join HrmJobTitles c on b.ec_jobTitle = c.id + where a.status < 4 + + + + insert into jcl_org_map + (id,ftype,fobjid,uuid,fclass,fclassname,fnumber,fname, + fparentid,fobjparentid, + fplan,fonjob,fisvitual,fdatebegin,fdateend) + select a.id+200000000,3,a.id,g.uuid,0,'行政维度',a.job_no,g.jobtitlename, + ec_department+100000000, + ec_department, + isnull(e.fcnt,0),isnull(f.fcnt,0),0,convert(varchar(100),getDate(),23),'2099-12-31' + from JCL_ORG_job as a + left join (select job_id,sum(isnull(staff_num,0)) fcnt from JCL_ORG_STAFF + where plan_id in (select id from JCL_ORG_STAFFPLAN + 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.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 45ed7ed5..0a4042b0 100644 --- a/src/com/engine/organization/service/OrgChartService.java +++ b/src/com/engine/organization/service/OrgChartService.java @@ -21,4 +21,6 @@ public interface OrgChartService { Map asyncCompanyData(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 24c5cbf4..317ec6d9 100644 --- a/src/com/engine/organization/service/impl/OrgChartServiceImpl.java +++ b/src/com/engine/organization/service/impl/OrgChartServiceImpl.java @@ -3,12 +3,17 @@ 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.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.scheme.GradeMapper; import com.engine.organization.mapper.scheme.LevelMapper; +import com.engine.organization.mapper.staff.StaffMapper; import com.engine.organization.service.OrgChartService; import com.engine.organization.util.HasRightUtil; +import com.engine.organization.util.OrganizationDateUtil; import com.engine.organization.util.db.DBType; import com.engine.organization.util.db.MapperProxyFactory; import com.engine.organization.util.detach.DetachUtil; @@ -497,6 +502,68 @@ public class OrgChartServiceImpl extends Service implements OrgChartService { }); } + private JclOrgMapper getJclOrgMapMapper() { + return MapperProxyFactory.getProxy(JclOrgMapper.class); + } + private StaffMapper getStaffMapper() { + return MapperProxyFactory.getProxy(StaffMapper.class); + } + @Override + 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(); + cal.setTime(date); + Calendar calendar = weaver.common.DateUtil.addDay(cal, -1); + java.sql.Date time = new java.sql.Date(calendar.getTime().getTime()); + // 自下向上刷新 + getJclOrgMapMapper().deleteAllMap(date); + getJclOrgMapMapper().updateAllMap(date,time); + //同步人员信息 + getJclOrgMapMapper().insertResToMap(); + //同步岗位信息 + 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/service/impl/VersionManageServiceImpl.java b/src/com/engine/organization/service/impl/VersionManageServiceImpl.java index 550910f0..9b244ccd 100644 --- a/src/com/engine/organization/service/impl/VersionManageServiceImpl.java +++ b/src/com/engine/organization/service/impl/VersionManageServiceImpl.java @@ -51,17 +51,17 @@ public class VersionManageServiceImpl extends Service implements VersionManageSe case 1: paramMap = getCompanyVersionMapper().getHrmSubComp(id); saveSubComToVersion(paramMap, user); - saveSubComToMap(paramMap); +// saveSubComToMap(paramMap); break; case 2: paramMap = getCompanyVersionMapper().getHrmDepartment(id); saveDeptToVersion(paramMap, user); - saveDeptToMap(paramMap); +// saveDeptToMap(paramMap); break; case 4: paramMap = getCompanyVersionMapper().getHrmResource(id); saveHrmToVersion(paramMap, user); - saveHrmToMap(paramMap); +// saveHrmToMap(paramMap); break; } diff --git a/src/com/engine/organization/web/OrgChartController.java b/src/com/engine/organization/web/OrgChartController.java index d63eb0fc..abb3166e 100644 --- a/src/com/engine/organization/web/OrgChartController.java +++ b/src/com/engine/organization/web/OrgChartController.java @@ -3,6 +3,7 @@ package com.engine.organization.web; import com.alibaba.fastjson.JSONObject; import com.engine.common.util.ParamUtil; import com.engine.common.util.ServiceUtil; +import com.engine.organization.util.response.ReturnResult; import com.engine.organization.wrapper.OrgChartWrapper; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -143,4 +144,21 @@ public class OrgChartController { return JSONObject.toJSONString(apidatas); } + /** + * 异步组织数据 + */ + @GET + @Path("/synchronousData") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult synchronousData(@Context HttpServletRequest request, @Context HttpServletResponse + response) { + try { + User user = HrmUserVarify.getUser(request, response); + Map params = ParamUtil.request2Map(request); + return ReturnResult.successed(getOrgChartWrapper(user).synchronousData(params)); + } catch (Exception e) { + return ReturnResult.exceptionHandle(e); + } + } + } diff --git a/src/com/engine/organization/wrapper/OrgChartWrapper.java b/src/com/engine/organization/wrapper/OrgChartWrapper.java index 8ec94b5d..3cc23ad0 100644 --- a/src/com/engine/organization/wrapper/OrgChartWrapper.java +++ b/src/com/engine/organization/wrapper/OrgChartWrapper.java @@ -40,4 +40,8 @@ public class OrgChartWrapper extends Service { return getOrgChartService(user).asyncCompanyData(request2Map, user); } + public String synchronousData(Map request2Map) { + return getOrgChartService(user).synchronousData(request2Map, user); + } + }