From a0660a785747467d5e294fbd6bbee1e632228e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98ml=E2=80=99?= Date: Thu, 20 Oct 2022 17:30:34 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=86=E9=83=A8=E8=BD=AC=E7=A7=BB?= =?UTF-8?q?=E3=80=81=E9=83=A8=E9=97=A8=E8=BD=AC=E7=A7=BB=E3=80=81=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E5=90=88=E5=B9=B6=E4=BF=AE=E5=A4=8D1020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/staff/StaffMapper.java | 2 + .../organization/mapper/staff/StaffMapper.xml | 15 +++++ .../service/impl/DepartmentServiceImpl.java | 14 +++-- .../service/impl/JobServiceImpl.java | 2 +- .../thread/CompanyTriggerRunnable.java | 35 ++++++++++++ .../thread/DepartmentTriggerRunnable.java | 25 +++++--- .../thread/JobTriggerRunnable.java | 57 ++++++++++++++++++- 7 files changed, 132 insertions(+), 18 deletions(-) diff --git a/src/com/engine/organization/mapper/staff/StaffMapper.java b/src/com/engine/organization/mapper/staff/StaffMapper.java index ad5e9f57..74f3eb19 100644 --- a/src/com/engine/organization/mapper/staff/StaffMapper.java +++ b/src/com/engine/organization/mapper/staff/StaffMapper.java @@ -65,4 +65,6 @@ public interface StaffMapper { List listUsedId(); List getStaffsByIds(@Param("ids") Collection ids); + + StaffPO getStaffsByParamId(@Param("compId") String compId,@Param("deptId") String deptId,@Param("jobId") String jobId); } diff --git a/src/com/engine/organization/mapper/staff/StaffMapper.xml b/src/com/engine/organization/mapper/staff/StaffMapper.xml index dfb48d98..e19484cf 100644 --- a/src/com/engine/organization/mapper/staff/StaffMapper.xml +++ b/src/com/engine/organization/mapper/staff/StaffMapper.xml @@ -336,4 +336,19 @@ + \ No newline at end of file diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index 3611298c..626a6e8e 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -601,16 +601,15 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // map表中合并部门parentID Long oldParamDepartment = mergeParam.getId(); DepartmentPO oldDepartment = EcHrmRelationUtil.getJclDepartmentId(Util.null2String(oldParamDepartment)); - String oldFParentId = null; + Integer oldFParentId = null; if(null != oldDepartment){ String currentDate = OrganizationDateUtil.getFormatLocalDate(new java.util.Date()); JclOrgMap jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapByObjID(currentDate, ModuleTypeEnum.departmentfielddefined.getValue().toString(), oldDepartment.getId().toString()); if(null != jclOrgMap){ - oldFParentId = jclOrgMap.getFParentId().toString(); + oldFParentId = jclOrgMap.getFParentId(); } } - // 断言判断 OrganizationAssert.isFalse(null == targetDepartment, "被合并部门数据有误,暂时无法合并"); OrganizationAssert.isFalse(mergeParam.getId().equals(targetDepartment.getId()), "所选部门与待合并部门一致,无需操作"); @@ -723,6 +722,9 @@ public class DepartmentServiceImpl extends Service implements DepartmentService deptById.setParentComp(Objects.requireNonNull(EcHrmRelationUtil.getJclCompanyId(Util.null2String(company))).getId()); deptById.setParentDept(null); deptById.setEcDepartment(null); + + // 更新组织架构图 + new Thread(new DepartmentTriggerRunnable(company.toString(),deptById)).run(); } else if ("1".equals(moveParam.getMoveType())) { Long department = moveParam.getDepartment(); Long departmentId = Objects.requireNonNull(EcHrmRelationUtil.getJclDepartmentId(Util.null2String(department))).getId(); @@ -739,12 +741,14 @@ public class DepartmentServiceImpl extends Service implements DepartmentService DepartmentPO parentDepartment = getDepartmentMapper().getDeptById(departmentId); deptById.setParentComp(parentDepartment.getParentComp()); deptById.setEcCompany(parentDepartment.getEcCompany()); + + // 更新组织架构图 + new Thread(new DepartmentTriggerRunnable(Integer.toString(100000000+department.intValue()),deptById)).run(); } // 更新EC部门 updateEcDepartment(deptById); int updateBaseDept = getDepartmentMapper().updateBaseDept(deptById); - // 更新组织架构图 - new Thread(new DepartmentTriggerRunnable(deptById.getId())).start(); + // 刷新岗位分部 refreshJobComp(deptById.getId(), deptById.getParentComp()); List deptList = getDepartmentMapper().getDeptListByPId(deptById.getId()); diff --git a/src/com/engine/organization/service/impl/JobServiceImpl.java b/src/com/engine/organization/service/impl/JobServiceImpl.java index d727b342..7caac4cb 100644 --- a/src/com/engine/organization/service/impl/JobServiceImpl.java +++ b/src/com/engine/organization/service/impl/JobServiceImpl.java @@ -576,7 +576,7 @@ public class JobServiceImpl extends Service implements JobService { targetJob.setJobName(mergeParam.getMergeName()); getJobMapper().updateBaseJob(targetJob); - new Thread(new JobTriggerRunnable(targetJob.getId())).start(); + new Thread(new JobTriggerRunnable(jobById.getId(),targetJob.getId())).start(); // 原岗位删除 new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, jobById).sync(); getJobMapper().deleteByIds(Collections.singletonList(jobById.getId())); diff --git a/src/com/engine/organization/thread/CompanyTriggerRunnable.java b/src/com/engine/organization/thread/CompanyTriggerRunnable.java index 955acf13..c63476e9 100644 --- a/src/com/engine/organization/thread/CompanyTriggerRunnable.java +++ b/src/com/engine/organization/thread/CompanyTriggerRunnable.java @@ -115,9 +115,44 @@ public class CompanyTriggerRunnable implements Runnable { if (1 != newCompany.getDeleteType() && 1 != newCompany.getForbiddenTag()) { MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(jclMap); + if(null != jclOrgMapByObjID.getFParentId()){ + updateParentPlanAndJob(currentDate,jclOrgMapByObjID.getFParentId().toString()); + } + if(null!=oldCompany){ + updateParentPlanAndJob(currentDate,oldCompany.getId().toString()); + } } + } + } + /** + * 更新上级部门在编、在岗数 + */ + void updateParentPlanAndJob(String currentDate, String parentId) { + JclOrgMap parentJclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapById(currentDate, parentId); + if (null != parentJclOrgMap) { + // 上级部门当前在编、在岗数 + JclOrgMap jclOrgMapSum = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, parentJclOrgMap.getId().toString()); + if (null != jclOrgMapSum) { + parentJclOrgMap.setFPlan(jclOrgMapSum.getFPlan()); + parentJclOrgMap.setFOnJob(jclOrgMapSum.getFOnJob()); + } else { + parentJclOrgMap.setFPlan(0); + parentJclOrgMap.setFOnJob(0); + } + parentJclOrgMap.setFDateBegin(new Date(OrganizationDateUtil.stringToDate(currentDate).getTime())); + parentJclOrgMap.setFDateEnd(new Date(OrganizationDateUtil.stringToDate("2099-12-31").getTime())); + Calendar cal = Calendar.getInstance(); + cal.setTime(parentJclOrgMap.getFDateBegin()); + Calendar calendar = DateUtil.addDay(cal, -1); + Date time = new Date(calendar.getTime().getTime()); + getCompTriggerMapper().deleteMap(parentJclOrgMap.getFType(), parentJclOrgMap.getFObjId(), parentJclOrgMap.getFDateBegin()); + getCompTriggerMapper().updateMap(parentJclOrgMap.getFType(), parentJclOrgMap.getFObjId(), parentJclOrgMap.getFDateBegin(), time); + MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(parentJclOrgMap); + if (null != parentJclOrgMap.getFParentId() && -1 != parentJclOrgMap.getFParentId()) { + updateParentPlanAndJob(currentDate, parentJclOrgMap.getFParentId().toString()); + } } } } diff --git a/src/com/engine/organization/thread/DepartmentTriggerRunnable.java b/src/com/engine/organization/thread/DepartmentTriggerRunnable.java index 81afb89d..ea1d6040 100644 --- a/src/com/engine/organization/thread/DepartmentTriggerRunnable.java +++ b/src/com/engine/organization/thread/DepartmentTriggerRunnable.java @@ -30,6 +30,7 @@ public class DepartmentTriggerRunnable implements Runnable { private DepartmentPO oldDepartment; private final DepartmentPO newDepartment; private String oldFparentId; + private String moveTarget; private CompTriggerMapper getCompTriggerMapper() { return MapperProxyFactory.getProxy(CompTriggerMapper.class); @@ -48,13 +49,14 @@ public class DepartmentTriggerRunnable implements Runnable { this.oldDepartment = new DepartmentPO(); this.newDepartment = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(departmentId); } + public DepartmentTriggerRunnable(String moveTarget,DepartmentPO newDepartment) { + this.oldDepartment = new DepartmentPO(); + this.newDepartment = newDepartment; + this.moveTarget = moveTarget; + } - public DepartmentTriggerRunnable(String oldFparentId, Long departmentId) { -// this.oldDepartment = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(oldDepartmentID); -// if (null == oldDepartment) { -// this.oldDepartment = DepartmentPO.builder().id(oldDepartmentID).build(); -// } - this.oldFparentId = oldFparentId; + public DepartmentTriggerRunnable(Integer oldFparentId, Long departmentId) { + this.oldFparentId = oldFparentId.toString(); this.newDepartment = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(departmentId); } @@ -94,7 +96,6 @@ public class DepartmentTriggerRunnable implements Runnable { jclMap.setFClassName("行政维度"); HrmResource hrmResourceById = getCompTriggerMapper().getHrmResourceById(jclMap.getFLeader()); - if (null != hrmResourceById) { jclMap.setFLeaderImg(hrmResourceById.getMessagerurl()); jclMap.setFLeaderName(hrmResourceById.getLastname()); @@ -112,10 +113,14 @@ public class DepartmentTriggerRunnable implements Runnable { jclMap.setFDateBegin(new Date(OrganizationDateUtil.stringToDate(currentDate).getTime())); jclMap.setFDateEnd(new Date(OrganizationDateUtil.stringToDate("2099-12-31").getTime())); + // 获取当前生效的本部门map记录 JclOrgMap jclOrgMapByObjID = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapByObjID(currentDate, ModuleTypeEnum.departmentfielddefined.getValue().toString(), jclMap.getFObjId().toString()); - // 取出部门下级在编、在岗数 + // 取出以该部门为上级部门的在编、在岗数,转移无需计算 JclOrgMap jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, jclMap.getId().toString()); + if (null != moveTarget) { + jclOrgMap = null; + } if (null != jclOrgMapByObjID) { if (null != jclOrgMap) { jclMap.setFPlan(jclOrgMapByObjID.getFPlan() + jclOrgMap.getFPlan()); @@ -124,7 +129,6 @@ public class DepartmentTriggerRunnable implements Runnable { jclMap.setFPlan(jclOrgMapByObjID.getFPlan()); jclMap.setFOnJob(jclOrgMapByObjID.getFOnJob()); } - } else { jclMap.setFPlan(0); jclMap.setFOnJob(0); @@ -143,6 +147,9 @@ public class DepartmentTriggerRunnable implements Runnable { if(null != jclOrgMapByObjID.getFParentId()) { updateParentPlanAndJob(currentDate, jclOrgMapByObjID.getFParentId().toString()); } + if(null != moveTarget){ + updateParentPlanAndJob(currentDate, moveTarget); + } if (null != oldFparentId) { updateParentPlanAndJob(currentDate, oldFparentId); } diff --git a/src/com/engine/organization/thread/JobTriggerRunnable.java b/src/com/engine/organization/thread/JobTriggerRunnable.java index 79fb9dd7..fdeec454 100644 --- a/src/com/engine/organization/thread/JobTriggerRunnable.java +++ b/src/com/engine/organization/thread/JobTriggerRunnable.java @@ -3,9 +3,11 @@ package com.engine.organization.thread; import com.engine.organization.entity.job.po.JobPO; import com.engine.organization.entity.logview.bo.FieldBaseEquator; import com.engine.organization.entity.map.JclOrgMap; +import com.engine.organization.entity.staff.po.StaffPO; import com.engine.organization.enums.ModuleTypeEnum; import com.engine.organization.mapper.jclorgmap.JclOrgMapper; import com.engine.organization.mapper.job.JobMapper; +import com.engine.organization.mapper.staff.StaffMapper; import com.engine.organization.mapper.trigger.CompTriggerMapper; import com.engine.organization.mapper.trigger.JobTriggerMapper; import com.engine.organization.util.OrganizationDateUtil; @@ -44,6 +46,10 @@ public class JobTriggerRunnable implements Runnable { this.oldJob = new JobPO(); this.newJob = MapperProxyFactory.getProxy(JobMapper.class).getJobById(jobId); } + public JobTriggerRunnable(Long oldJobId,Long newJobId) { + this.oldJob = MapperProxyFactory.getProxy(JobMapper.class).getJobById(oldJobId); + this.newJob = MapperProxyFactory.getProxy(JobMapper.class).getJobById(newJobId); + } public JobTriggerRunnable(JobPO newJob) { this.oldJob = new JobPO(); @@ -81,9 +87,19 @@ public class JobTriggerRunnable implements Runnable { jclMap.setFDateEnd(new Date(OrganizationDateUtil.stringToDate("2099-12-31").getTime())); JclOrgMap jclOrgMapByObjID = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapByObjID(currentDate, ModuleTypeEnum.jobfielddefined.getValue().toString(), jclMap.getFObjId().toString()); + + StaffPO staffPO = MapperProxyFactory.getProxy(StaffMapper.class).getStaffsByParamId(null,null,jclOrgMapByObjID.getFObjId().toString()); + // 该岗位有下级岗位时,查询 + JclOrgMap jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, jclMap.getId().toString()); + if (null != jclOrgMapByObjID) { - jclMap.setFPlan(jclOrgMapByObjID.getFPlan()); - jclMap.setFOnJob(jclOrgMapByObjID.getFOnJob()); + if (null != jclOrgMap) { + jclMap.setFPlan(staffPO.getStaffNum() + jclOrgMap.getFPlan()); + jclMap.setFOnJob(jclOrgMapByObjID.getFOnJob() + jclOrgMap.getFOnJob()); + } else { + jclMap.setFPlan(jclOrgMapByObjID.getFPlan()); + jclMap.setFOnJob(jclOrgMapByObjID.getFOnJob()); + } } else { jclMap.setFPlan(0); jclMap.setFOnJob(0); @@ -97,12 +113,47 @@ public class JobTriggerRunnable implements Runnable { getCompTriggerMapper().deleteMap(jclMap.getFType(), jclMap.getFObjId(), jclMap.getFDateBegin()); getCompTriggerMapper().updateMap(jclMap.getFType(), jclMap.getFObjId(), jclMap.getFDateBegin(), time); - if (1 != newJob.getDeleteType() && 1 != newJob.getForbiddenTag()) { MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(jclMap); + if (null != jclOrgMapByObjID.getFParentId()) { + updateParentPlanAndJob(currentDate, jclOrgMapByObjID.getFParentId().toString()); + } + if (null != oldJob) { + updateParentPlanAndJob(currentDate, oldJob.getId().toString()); + } } + } + } + /** + * 更新上级部门在编、在岗数 + */ + void updateParentPlanAndJob(String currentDate, String parentId) { + JclOrgMap parentJclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapById(currentDate, parentId); + if (null != parentJclOrgMap) { + // 上级部门当前在编、在岗数 + JclOrgMap jclOrgMapSum = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, parentJclOrgMap.getId().toString()); + StaffPO staffPO = MapperProxyFactory.getProxy(StaffMapper.class).getStaffsByParamId(null,null,parentJclOrgMap.getFObjId().toString()); + if (null != jclOrgMapSum) { + parentJclOrgMap.setFPlan(staffPO.getStaffNum() + jclOrgMapSum.getFPlan()); + parentJclOrgMap.setFOnJob(jclOrgMapSum.getFOnJob()); + } else { + parentJclOrgMap.setFPlan(0); + parentJclOrgMap.setFOnJob(0); + } + parentJclOrgMap.setFDateBegin(new Date(OrganizationDateUtil.stringToDate(currentDate).getTime())); + parentJclOrgMap.setFDateEnd(new Date(OrganizationDateUtil.stringToDate("2099-12-31").getTime())); + Calendar cal = Calendar.getInstance(); + cal.setTime(parentJclOrgMap.getFDateBegin()); + Calendar calendar = DateUtil.addDay(cal, -1); + Date time = new Date(calendar.getTime().getTime()); + getCompTriggerMapper().deleteMap(parentJclOrgMap.getFType(), parentJclOrgMap.getFObjId(), parentJclOrgMap.getFDateBegin()); + getCompTriggerMapper().updateMap(parentJclOrgMap.getFType(), parentJclOrgMap.getFObjId(), parentJclOrgMap.getFDateBegin(), time); + MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(parentJclOrgMap); + if (null != parentJclOrgMap.getFParentId() && -1 != parentJclOrgMap.getFParentId()) { + updateParentPlanAndJob(currentDate, parentJclOrgMap.getFParentId().toString()); + } } } } From 545ec88e07cb60d172b00f692ad935d2343d341e Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Fri, 21 Oct 2022 10:01:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=BB=BA=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/表结构SQL/MySQL.sql | 14 ++++++++++++++ docs/表结构SQL/Oracle.sql | 16 ++++++++++++++++ docs/表结构SQL/SqlServer.sql | 14 ++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/docs/表结构SQL/MySQL.sql b/docs/表结构SQL/MySQL.sql index 67d1eb68..ca8be925 100644 --- a/docs/表结构SQL/MySQL.sql +++ b/docs/表结构SQL/MySQL.sql @@ -543,4 +543,18 @@ create table JCL_ORG_ITEM ( create_time date null, update_time date null, constraint JCL_ORG_ITEM_PK primary key (fid) +); + +-- JCL_ORG_DETACH +create table JCL_ORG_DETACH ( + id int auto_increment not null, + type int null, + manger text not null, + rolelevel text not null, + module text not null, + creator int null, + delete_type int null, + create_time date null, + update_time date null, + constraint JCL_ORG_DETACH_PK primary key (id) ); \ No newline at end of file diff --git a/docs/表结构SQL/Oracle.sql b/docs/表结构SQL/Oracle.sql index 0e21f185..fd026eb8 100644 --- a/docs/表结构SQL/Oracle.sql +++ b/docs/表结构SQL/Oracle.sql @@ -486,3 +486,19 @@ CREATE TABLE JCL_ORG_HRMRELATION ( UPDATE_TIME DATE NULL, CONSTRAINT JCL_ORG_HRMRELATION_PK PRIMARY KEY (ID) ); + +-- JCL_ORG_DETACH +create table JCL_ORG_DETACH ( + id number not null, + type number null, + manger clob not null, + rolelevel clob not null, + module clob not null, + creator number null, + delete_type number null, + create_time date null, + update_time date null, + constraint JCL_ORG_DETACH_PK primary key (id) +); + + diff --git a/docs/表结构SQL/SqlServer.sql b/docs/表结构SQL/SqlServer.sql index e8cb725d..0cddf6f5 100644 --- a/docs/表结构SQL/SqlServer.sql +++ b/docs/表结构SQL/SqlServer.sql @@ -516,4 +516,18 @@ CREATE TABLE JCL_ORG_MAP ( create_time date null, update_time date null, CONSTRAINT JCL_ORG_MAP_PK PRIMARY KEY (id) +); + +-- JCL_ORG_DETACH +create table JCL_ORG_DETACH ( + id int IDENTITY(1,1) not null, + type int null, + manger text not null, + rolelevel text not null, + module text not null, + creator int null, + delete_type int null, + create_time date null, + update_time date null, + constraint JCL_ORG_DETACH_PK primary key (id) ); \ No newline at end of file From 05fe14b5e1dc15ec818312fb0d893c4c4d0a67b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98ml=E2=80=99?= Date: Fri, 21 Oct 2022 15:53:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=88=86=E9=83=A8=E8=BD=AC=E7=A7=BB?= =?UTF-8?q?=E3=80=81=E9=83=A8=E9=97=A8=E8=BD=AC=E7=A7=BB=E3=80=81=E5=B2=97?= =?UTF-8?q?=E4=BD=8D=E5=90=88=E5=B9=B6=E4=BF=AE=E5=A4=8D1021?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organization/entity/staff/po/StaffPO.java | 6 ++++++ .../organization/mapper/staff/StaffMapper.xml | 8 ++++---- .../mapper/trigger/StaffTriggerMapper.xml | 2 +- .../thread/DepartmentTriggerRunnable.java | 2 +- .../organization/thread/JobTriggerRunnable.java | 17 +++++++++++------ 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/com/engine/organization/entity/staff/po/StaffPO.java b/src/com/engine/organization/entity/staff/po/StaffPO.java index bedc2ea7..82db7e65 100644 --- a/src/com/engine/organization/entity/staff/po/StaffPO.java +++ b/src/com/engine/organization/entity/staff/po/StaffPO.java @@ -74,4 +74,10 @@ public class StaffPO { private Date createTime; private Date updateTime; + public Integer getStaffNum() { + if (null == staffNum){ + staffNum = 0; + } + return staffNum; + } } diff --git a/src/com/engine/organization/mapper/staff/StaffMapper.xml b/src/com/engine/organization/mapper/staff/StaffMapper.xml index e19484cf..c6d242a7 100644 --- a/src/com/engine/organization/mapper/staff/StaffMapper.xml +++ b/src/com/engine/organization/mapper/staff/StaffMapper.xml @@ -342,13 +342,13 @@ from jcl_org_staff t WHERE t.delete_type = 0 - t.comp_id = #{compId} + and t.comp_id = #{compId} - - t.dept_id = #{deptId} + + and t.dept_id = #{deptId} - t.job_id = #{jobId} + and t.job_id = #{jobId} \ No newline at end of file diff --git a/src/com/engine/organization/mapper/trigger/StaffTriggerMapper.xml b/src/com/engine/organization/mapper/trigger/StaffTriggerMapper.xml index 59c84dd5..a74be740 100644 --- a/src/com/engine/organization/mapper/trigger/StaffTriggerMapper.xml +++ b/src/com/engine/organization/mapper/trigger/StaffTriggerMapper.xml @@ -98,6 +98,6 @@ \ No newline at end of file diff --git a/src/com/engine/organization/thread/DepartmentTriggerRunnable.java b/src/com/engine/organization/thread/DepartmentTriggerRunnable.java index 004ec4ee..9e25a326 100644 --- a/src/com/engine/organization/thread/DepartmentTriggerRunnable.java +++ b/src/com/engine/organization/thread/DepartmentTriggerRunnable.java @@ -144,7 +144,7 @@ public class DepartmentTriggerRunnable implements Runnable { if (1 != newDepartment.getDeleteType() && 1 != newDepartment.getForbiddenTag()) { MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(jclMap); - if(null != jclOrgMapByObjID.getFParentId()) { + if(null != jclOrgMapByObjID) { updateParentPlanAndJob(currentDate, jclOrgMapByObjID.getFParentId().toString()); } if(null != moveTarget){ diff --git a/src/com/engine/organization/thread/JobTriggerRunnable.java b/src/com/engine/organization/thread/JobTriggerRunnable.java index fdeec454..5d574df7 100644 --- a/src/com/engine/organization/thread/JobTriggerRunnable.java +++ b/src/com/engine/organization/thread/JobTriggerRunnable.java @@ -14,6 +14,7 @@ import com.engine.organization.util.OrganizationDateUtil; import com.engine.organization.util.db.MapperProxyFactory; import org.apache.commons.collections.CollectionUtils; import weaver.common.DateUtil; +import weaver.general.Util; import java.sql.Date; import java.util.Calendar; @@ -88,13 +89,13 @@ public class JobTriggerRunnable implements Runnable { JclOrgMap jclOrgMapByObjID = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapByObjID(currentDate, ModuleTypeEnum.jobfielddefined.getValue().toString(), jclMap.getFObjId().toString()); - StaffPO staffPO = MapperProxyFactory.getProxy(StaffMapper.class).getStaffsByParamId(null,null,jclOrgMapByObjID.getFObjId().toString()); // 该岗位有下级岗位时,查询 JclOrgMap jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, jclMap.getId().toString()); if (null != jclOrgMapByObjID) { if (null != jclOrgMap) { - jclMap.setFPlan(staffPO.getStaffNum() + jclOrgMap.getFPlan()); + StaffPO staffPO = MapperProxyFactory.getProxy(StaffMapper.class).getStaffsByParamId(null,null, jclOrgMapByObjID.getFObjId().toString()); + jclMap.setFPlan((null != staffPO ? staffPO.getStaffNum() : 0) + jclOrgMap.getFPlan()); jclMap.setFOnJob(jclOrgMapByObjID.getFOnJob() + jclOrgMap.getFOnJob()); } else { jclMap.setFPlan(jclOrgMapByObjID.getFPlan()); @@ -115,11 +116,15 @@ public class JobTriggerRunnable implements Runnable { if (1 != newJob.getDeleteType() && 1 != newJob.getForbiddenTag()) { MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(jclMap); - if (null != jclOrgMapByObjID.getFParentId()) { - updateParentPlanAndJob(currentDate, jclOrgMapByObjID.getFParentId().toString()); + if (null != jclOrgMapByObjID) { + if(null != jclOrgMapByObjID.getFParentId()){ + updateParentPlanAndJob(currentDate, jclOrgMapByObjID.getFParentId().toString()); + } } if (null != oldJob) { - updateParentPlanAndJob(currentDate, oldJob.getId().toString()); + if (null != oldJob.getId()){ + updateParentPlanAndJob(currentDate, oldJob.getId().toString()); + } } } } @@ -135,7 +140,7 @@ public class JobTriggerRunnable implements Runnable { JclOrgMap jclOrgMapSum = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, parentJclOrgMap.getId().toString()); StaffPO staffPO = MapperProxyFactory.getProxy(StaffMapper.class).getStaffsByParamId(null,null,parentJclOrgMap.getFObjId().toString()); if (null != jclOrgMapSum) { - parentJclOrgMap.setFPlan(staffPO.getStaffNum() + jclOrgMapSum.getFPlan()); + parentJclOrgMap.setFPlan((null != staffPO ? staffPO.getStaffNum() : 0) + jclOrgMapSum.getFPlan()); parentJclOrgMap.setFOnJob(jclOrgMapSum.getFOnJob()); } else { parentJclOrgMap.setFPlan(0);