From f36756e1fd6ffe23381f8412b0fe2843b2c45bf6 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 14 Oct 2022 14:56:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=83=A8=E3=80=81=E5=B2=97=E4=BD=8D?= =?UTF-8?q?=20=E7=A6=81=E7=94=A8=E5=8A=9F=E8=83=BD=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/department/DepartmentMapper.java | 2 ++ .../mapper/department/DepartmentMapper.xml | 7 +++++++ .../organization/mapper/job/JobMapper.java | 2 ++ .../organization/mapper/job/JobMapper.xml | 7 +++++++ .../service/impl/DepartmentServiceImpl.java | 7 +++++++ .../service/impl/JobServiceImpl.java | 18 +++++++++++++++++- 6 files changed, 42 insertions(+), 1 deletion(-) 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()); } -- 2.40.0.windows.1