diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index 31a66e46..3611298c 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -24,9 +24,11 @@ import com.engine.organization.entity.extend.po.ExtendTitlePO; import com.engine.organization.entity.job.bo.JobBO; import com.engine.organization.entity.job.po.JobPO; import com.engine.organization.entity.job.vo.SingleJobTreeVO; +import com.engine.organization.entity.map.JclOrgMap; import com.engine.organization.entity.searchtree.SearchTree; import com.engine.organization.entity.searchtree.SearchTreeParams; import com.engine.organization.enums.LogModuleNameEnum; +import com.engine.organization.enums.ModuleTypeEnum; import com.engine.organization.enums.OperateTypeEnum; import com.engine.organization.mapper.codesetting.CodeRuleMapper; import com.engine.organization.mapper.comp.CompMapper; @@ -35,6 +37,7 @@ import com.engine.organization.mapper.extend.ExtDTMapper; import com.engine.organization.mapper.extend.ExtMapper; import com.engine.organization.mapper.extend.ExtendTitleMapper; import com.engine.organization.mapper.hrmresource.SystemDataMapper; +import com.engine.organization.mapper.jclorgmap.JclOrgMapper; import com.engine.organization.mapper.job.JobMapper; import com.engine.organization.service.DepartmentService; import com.engine.organization.service.ExtService; @@ -595,6 +598,18 @@ public class DepartmentServiceImpl extends Service implements DepartmentService // 被合并部门 Long ecParamDepartment = mergeParam.getDepartment(); DepartmentPO targetDepartment = EcHrmRelationUtil.getJclDepartmentId(Util.null2String(ecParamDepartment)); + // map表中合并部门parentID + Long oldParamDepartment = mergeParam.getId(); + DepartmentPO oldDepartment = EcHrmRelationUtil.getJclDepartmentId(Util.null2String(oldParamDepartment)); + String 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(); + } + } + // 断言判断 OrganizationAssert.isFalse(null == targetDepartment, "被合并部门数据有误,暂时无法合并"); @@ -660,14 +675,14 @@ public class DepartmentServiceImpl extends Service implements DepartmentService MapperProxyFactory.getProxy(ExtDTMapper.class).deleteByMainID("jcl_org_deptext_dt1", mergeParam.getId()); getDepartmentMapper().deleteByIds(DeleteParam.builder().ids(mergeParam.getId().toString()).build().getIds()); // 更新组织架构图 - new Thread(new DepartmentTriggerRunnable(mergeDepartment)).start(); + new Thread(new DepartmentTriggerRunnable(mergeDepartment)).run(); // 更新部门合并后名称 targetDepartment.setDeptName(mergeParam.getMergeName()); targetDepartment.setDeptNameShort(mergeParam.getMergeName()); updateEcDepartment(targetDepartment); getDepartmentMapper().updateBaseDept(targetDepartment); // 更新组织架构图 - new Thread(new DepartmentTriggerRunnable(targetDepartment.getId())).start(); + new Thread(new DepartmentTriggerRunnable(oldFParentId,targetDepartment.getId())).run(); return 0; } diff --git a/src/com/engine/organization/thread/DepartmentTriggerRunnable.java b/src/com/engine/organization/thread/DepartmentTriggerRunnable.java index 2e8ee8cf..81afb89d 100644 --- a/src/com/engine/organization/thread/DepartmentTriggerRunnable.java +++ b/src/com/engine/organization/thread/DepartmentTriggerRunnable.java @@ -27,9 +27,9 @@ import java.util.List; */ public class DepartmentTriggerRunnable implements Runnable { - private final DepartmentPO oldDepartment; + private DepartmentPO oldDepartment; private final DepartmentPO newDepartment; - private Long oldDepartmentID; + private String oldFparentId; private CompTriggerMapper getCompTriggerMapper() { return MapperProxyFactory.getProxy(CompTriggerMapper.class); @@ -44,14 +44,18 @@ public class DepartmentTriggerRunnable implements Runnable { this.newDepartment = newDepartment; } - public DepartmentTriggerRunnable(Long departmentId) { + public DepartmentTriggerRunnable(Long departmentId) { this.oldDepartment = new DepartmentPO(); this.newDepartment = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(departmentId); } - public DepartmentTriggerRunnable(Long oldDepartmentID,Long departmentId) { - this.oldDepartment = new DepartmentPO(); + + 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; this.newDepartment = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(departmentId); - this.oldDepartmentID = oldDepartmentID; } public DepartmentTriggerRunnable(DepartmentPO newDepartment) { @@ -113,10 +117,10 @@ public class DepartmentTriggerRunnable implements Runnable { // 取出部门下级在编、在岗数 JclOrgMap jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, jclMap.getId().toString()); if (null != jclOrgMapByObjID) { - if(null != jclOrgMap) { + if (null != jclOrgMap) { jclMap.setFPlan(jclOrgMapByObjID.getFPlan() + jclOrgMap.getFPlan()); jclMap.setFOnJob(jclOrgMapByObjID.getFOnJob() + jclOrgMap.getFOnJob()); - }else{ + } else { jclMap.setFPlan(jclOrgMapByObjID.getFPlan()); jclMap.setFOnJob(jclOrgMapByObjID.getFOnJob()); } @@ -136,20 +140,31 @@ public class DepartmentTriggerRunnable implements Runnable { if (1 != newDepartment.getDeleteType() && 1 != newDepartment.getForbiddenTag()) { MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(jclMap); - updateParentPlanAndJob(currentDate,jclOrgMapByObjID.getFParentId().toString()); + if(null != jclOrgMapByObjID.getFParentId()) { + updateParentPlanAndJob(currentDate, jclOrgMapByObjID.getFParentId().toString()); + } + if (null != oldFparentId) { + updateParentPlanAndJob(currentDate, oldFparentId); + } } } } - private void updateParentPlanAndJob(String currentDate,String parentId){ + private void updateParentPlanAndJob(String currentDate, String parentId) { // 获取上级部门 JclOrgMap parentJclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapById(currentDate, parentId); - if(null != parentJclOrgMap){ + if (null != parentJclOrgMap) { // 上级部门当前在编、在岗数 JclOrgMap jclOrgMapSum = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, parentJclOrgMap.getId().toString()); - parentJclOrgMap.setFPlan(jclOrgMapSum.getFPlan()); - parentJclOrgMap.setFOnJob(jclOrgMapSum.getFOnJob()); + // 编制表jcl_org_staff中的编制数+下级编制数,工具类判断 + 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())); @@ -160,39 +175,8 @@ public class DepartmentTriggerRunnable implements Runnable { getCompTriggerMapper().deleteMap(parentJclOrgMap.getFType(), parentJclOrgMap.getFObjId(), parentJclOrgMap.getFDateBegin()); getCompTriggerMapper().updateMap(parentJclOrgMap.getFType(), parentJclOrgMap.getFObjId(), parentJclOrgMap.getFDateBegin(), time); MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(parentJclOrgMap); - if(-1 != parentJclOrgMap.getFParentId() && null != parentJclOrgMap.getFParentId()){ - updateParentPlanAndJob(currentDate,parentJclOrgMap.getFParentId().toString()); - } - } - } - - /** - * 更新原本部门的在编、在岗数 - * @param - * @return - */ - private void updatePrimaryPlanAndJob(String currentDate, Long oldDepartmentID) { - - DepartmentPO oldDepartmentPO = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptById(oldDepartmentID); - - JclOrgMap jclOrgMap = MapperProxyFactory.getProxy(JclOrgMapper.class).getJclOrgMapById(currentDate, Util.null2String(oldDepartmentPO.getId())); - if (null != jclOrgMap) { - JclOrgMap jclOrgMapSum = MapperProxyFactory.getProxy(JclOrgMapper.class).getSumPlanAndJobByFParentId(currentDate, jclOrgMap.getId().toString()); - jclOrgMap.setFPlan(jclOrgMapSum.getFPlan()); - jclOrgMap.setFOnJob(jclOrgMapSum.getFOnJob()); - jclOrgMap.setFDateBegin(new Date(OrganizationDateUtil.stringToDate(currentDate).getTime())); - jclOrgMap.setFDateEnd(new Date(OrganizationDateUtil.stringToDate("2099-12-31").getTime())); - - Calendar cal = Calendar.getInstance(); - cal.setTime(jclOrgMap.getFDateBegin()); - Calendar calendar = DateUtil.addDay(cal, -1); - Date time = new Date(calendar.getTime().getTime()); - getCompTriggerMapper().deleteMap(jclOrgMap.getFType(), jclOrgMap.getFObjId(), jclOrgMap.getFDateBegin()); - getCompTriggerMapper().updateMap(jclOrgMap.getFType(), jclOrgMap.getFObjId(), jclOrgMap.getFDateBegin(), time); - MapperProxyFactory.getProxy(JclOrgMapper.class).insertMap(jclOrgMap); - - if(1 != jclOrgMap.getFType()){ - updateParentPlanAndJob(currentDate,jclOrgMap.getFParentId().toString()); + if (null != parentJclOrgMap.getFParentId() && -1 != parentJclOrgMap.getFParentId()) { + updateParentPlanAndJob(currentDate, parentJclOrgMap.getFParentId().toString()); } } } diff --git a/src/com/engine/organization/thread/StaffTriggerRunnable.java b/src/com/engine/organization/thread/StaffTriggerRunnable.java index f4523d0f..4e95e6be 100644 --- a/src/com/engine/organization/thread/StaffTriggerRunnable.java +++ b/src/com/engine/organization/thread/StaffTriggerRunnable.java @@ -76,40 +76,6 @@ public class StaffTriggerRunnable implements Runnable { yesterday = DateUtil.addDate(currentDate, -1); } - public StaffTriggerRunnable(Integer fobjId,String controlDimension) { - if (null != fobjId && StringUtils.isNotBlank(controlDimension)) { - switch (controlDimension){ - case "1": - CompPO compPO = getCompMapper().listById((long) fobjId); - if (null != compPO) { - this.staffPO = StaffPO.builder().compId(compPO.getParentCompany()).build(); - this.staffPlanByID = StaffPlanPO.builder().controlDimension(controlDimension).build(); - } - break; - case "2": - DepartmentPO departmentPO = getDepartmentMapper().getDeptById((long) fobjId); - if (null != departmentPO) { - this.staffPO = StaffPO.builder().compId(departmentPO.getParentComp()).deptId(departmentPO.getParentDept()).build(); - this.staffPlanByID = StaffPlanPO.builder().controlDimension(controlDimension).build(); - }break; - case "3": - JobPO jobById = getJobMapper().getJobById((long) fobjId); - if (null != jobById) { - this.staffPO = StaffPO.builder().compId(jobById.getParentComp()).deptId(jobById.getParentDept()).jobId(jobById.getId()).build(); - this.staffPlanByID = StaffPlanPO.builder().controlDimension("3").build(); - }break; - default: - break; - } - - } - currentDate = OrganizationDateUtil.getFormatLocalDate(new java.util.Date()); - yesterday = DateUtil.addDate(currentDate, -1); - } - - - - @Override public void run() { if (null != staffPO) {