diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.java b/src/com/engine/organization/mapper/department/DepartmentMapper.java index b1153840..4e205c53 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.java +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.java @@ -136,4 +136,6 @@ public interface DepartmentMapper { int checkRepeatNo(@Param("departmentNo") String departmentNo, @Param("id") Long id); List hasSubs(); + + int countUsedInJob(@Param("departmentId") Long departmentId); } diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml index 06efa124..018fd1a2 100644 --- a/src/com/engine/organization/mapper/department/DepartmentMapper.xml +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml @@ -184,6 +184,13 @@ where forbidden_tag = 0 and delete_type = 0 + and ifnull(parent_dept,0) = #{parentDepartment} diff --git a/src/com/engine/organization/mapper/job/JobMapper.java b/src/com/engine/organization/mapper/job/JobMapper.java index 23230187..728e697d 100644 --- a/src/com/engine/organization/mapper/job/JobMapper.java +++ b/src/com/engine/organization/mapper/job/JobMapper.java @@ -184,4 +184,6 @@ public interface JobMapper { * @return */ int updateJobCompany(@Param("ids") Collection ids, @Param("parentCompany") Long parentCompany, @Param("ecCompany") String ecCompany); + + int isHasResource(@Param("jobId") Long jobId); } diff --git a/src/com/engine/organization/mapper/job/JobMapper.xml b/src/com/engine/organization/mapper/job/JobMapper.xml index 24cecc1c..d45a3191 100644 --- a/src/com/engine/organization/mapper/job/JobMapper.xml +++ b/src/com/engine/organization/mapper/job/JobMapper.xml @@ -573,6 +573,13 @@ AND parent_job = #{parentJob} + and ifnull(parent_job,0) = diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java index b75c1037..417f30b4 100644 --- a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -256,6 +256,13 @@ public class DepartmentServiceImpl extends Service implements DepartmentService public int updateForbiddenTagById(DeptSearchParam params) { HasRightUtil.hasRight(user, RIGHT_NAME, false); DepartmentPO departmentPO = DepartmentPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).build(); + + if (!params.getForbiddenTag()) { + // 判断当前岗位下是否有启用岗位,如有启用岗位,部门无法禁用 + int countUsedInJob = getDepartmentMapper().countUsedInJob(params.getId()); + OrganizationAssert.isTrue(countUsedInJob == 0, "部门存在下级岗位,不能封存"); + } + Map map = new HashMap<>(); map.put("id", departmentPO.getId()); map.put("forbiddenTag", departmentPO.getForbiddenTag()); diff --git a/src/com/engine/organization/service/impl/JobServiceImpl.java b/src/com/engine/organization/service/impl/JobServiceImpl.java index a4cfb8a8..93e52444 100644 --- a/src/com/engine/organization/service/impl/JobServiceImpl.java +++ b/src/com/engine/organization/service/impl/JobServiceImpl.java @@ -454,7 +454,23 @@ public class JobServiceImpl extends Service implements JobService { @Override public int updateForbiddenTagById(JobSearchParam params) { HasRightUtil.hasRight(user, RIGHT_NAME, false); - JobPO jobPO = JobPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).jobName(getJobMapper().getJobById(params.getId()).getJobName()).build(); + JobPO jobById = getJobMapper().getJobById(params.getId()); + JobPO jobPO = JobPO.builder().id(params.getId()).forbiddenTag(params.getForbiddenTag() ? 0 : 1).jobName(jobById.getJobName()).build(); + if (params.getForbiddenTag()) { + // 启用:判断上级部门是否启用,上级部门启用,岗位才可启用 + DepartmentPO parentDepartment = getDepartmentMapper().getDeptById(jobById.getParentDept()); + OrganizationAssert.isTrue(0 == parentDepartment.getForbiddenTag(), "该岗位不能解封,请先解封上级部门"); + + // 启用:判断上级岗位是否启用,上级岗位启用,岗位才可启用 + if (null != jobById.getParentJob()) { + JobPO parentJob = getJobMapper().getJobById(jobById.getParentJob()); + OrganizationAssert.isTrue(0 == parentJob.getForbiddenTag(), "该岗位不能解封,请先解封上级岗位"); + } + } else { + //禁用:判断当前岗位下是否有人员,如有人员则不能禁用 + int hasResource = getJobMapper().isHasResource(params.getId()); + OrganizationAssert.isTrue(hasResource == 0, "该岗位存在人员,不能封存"); + } new OrganizationSyncEc(user, LogModuleNameEnum.JOB, OperateTypeEnum.CANCELED, null, jobPO).sync(); return getJobMapper().updateForbiddenTagById(jobPO.getId(), jobPO.getForbiddenTag()); }