From 981ea3ad4a4f1646fc8eb9c19f03ab65c0804b68 Mon Sep 17 00:00:00 2001 From: Mlin Date: Fri, 16 Dec 2022 14:25:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AD=98=E4=B8=BA=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=AD=98=E5=85=A5map=E8=A1=A8=EF=BC=8C?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/jclorgmap/JclOrgMapper.java | 6 +++ .../mapper/jclorgmap/JclOrgMapper.xml | 51 +++++++++++++++++++ .../organization/service/OrgChartService.java | 2 + .../service/impl/OrgChartServiceImpl.java | 35 +++++++++++++ .../impl/VersionManageServiceImpl.java | 6 +-- .../organization/web/OrgChartController.java | 18 +++++++ .../organization/wrapper/OrgChartWrapper.java | 4 ++ 7 files changed, 119 insertions(+), 3 deletions(-) diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java index 12f95af8..a5f9c483 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.java @@ -29,4 +29,10 @@ 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(); } diff --git a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml index ba7028af..379e646a 100644 --- a/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml +++ b/src/com/engine/organization/mapper/jclorgmap/JclOrgMapper.xml @@ -74,4 +74,55 @@ + + + + + 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.id + left join HrmJobTitles g on a.ec_jobTitle = g.id + where isnull(a.delete_type,0) <> 1 and isnull(a.forbidden_tag,0) <> 1 + + + + \ 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..48cd871a 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); + Map 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..57e0725a 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,36 @@ 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 Map 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(); + //同步岗位信息 + JclOrgMap jclOrgMap = new JclOrgMap(); + +// StaffPO staffPO = getStaffMapper().getStaffsByParamId(Integer.parseInt(type), null, null, String.valueOf(id)); + + + + + return null; + } + 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..bf700a4c 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 Map synchronousData(Map request2Map) { + return getOrgChartService(user).synchronousData(request2Map, user); + } + } From 78dfc87f6114cab2baefc665f0f399b6ce1fb3da Mon Sep 17 00:00:00 2001 From: Mlin Date: Fri, 16 Dec 2022 15:58:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/jclorgmap/JclOrgMapper.java | 9 ++++ .../mapper/jclorgmap/JclOrgMapper.xml | 41 ++++++++++++++-- .../organization/service/OrgChartService.java | 2 +- .../service/impl/OrgChartServiceImpl.java | 48 +++++++++++++++---- .../organization/wrapper/OrgChartWrapper.java | 2 +- 5 files changed, 89 insertions(+), 13 deletions(-) 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(); + getJclOrgMapMapper().insertJobToMap(); + //同步部门信息 + getJclOrgMapMapper().insertDeptToMap(); + //同步分部信息 + getJclOrgMapMapper().insertSubComToMap(); + //同步集团信息 + getJclOrgMapMapper().insertComToMap(); -// StaffPO staffPO = getStaffMapper().getStaffsByParamId(Integer.parseInt(type), null, null, String.valueOf(id)); - - - - - return null; + //刷新在岗数、编制数(从岗位向上刷,岗位不需处理) + 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); }