diff --git a/src/main/java/com/ccsens/carbasics/bean/dto/ManagementDto.java b/src/main/java/com/ccsens/carbasics/bean/dto/ManagementDto.java index 29b968f..a4a99b2 100644 --- a/src/main/java/com/ccsens/carbasics/bean/dto/ManagementDto.java +++ b/src/main/java/com/ccsens/carbasics/bean/dto/ManagementDto.java @@ -99,6 +99,9 @@ public class ManagementDto { private String departmentName; @ApiModelProperty("部门id") private Long did; + @NotNull(message = "机构id不能为空") + @ApiModelProperty("机构id") + private Long oid; } @Data @@ -136,6 +139,9 @@ public class ManagementDto { @NotBlank(message = "职位名称不能为空") @ApiModelProperty("职位名称") private String positionName; + @NotNull(message = "部门id不能为空") + @ApiModelProperty("部门id") + private Long departmentId; } @Data diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDepartmentDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDepartmentDao.java index c71125d..6147aa5 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDepartmentDao.java +++ b/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationDepartmentDao.java @@ -30,4 +30,21 @@ public interface OrganizationDepartmentDao extends OrganizationDepartmentMapper * @return 机构下所有一级部门 */ List queryAllByOid(@Param("oid") Long oid); + + /** + *查询同级下部门名称是否重复 + * @param parentId 父id + * @param departmentName 部门名称 + * @param oid 机构id + * @return >1 重复 + */ + Integer queryNameRepeat(@Param("parentId") Long parentId,@Param("departmentName") String departmentName,@Param("oid") Long oid); + /** + *查询同级下部门名称是否重复(修改部门时) + * @param did 部门id + * @param departmentName 部门名称 + * @param oid 机构id + * @return >1 重复 + */ + Integer queryNameRepeatUpdate(@Param("did") Long did,@Param("departmentName") String departmentName,@Param("oid") Long oid); } diff --git a/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationPositionDao.java b/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationPositionDao.java index 7f0fbbd..5c96667 100644 --- a/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationPositionDao.java +++ b/src/main/java/com/ccsens/carbasics/persist/dao/OrganizationPositionDao.java @@ -38,4 +38,12 @@ public interface OrganizationPositionDao extends OrganizationPositionMapper { * @return 职位信息 */ OrganizationPosition queryIsExist(@Param("positionName") String positionName,@Param("positionCode") String positionCode,@Param("did") Long did); + + /** + * 查询同级下职位名称是否有重复 + * @param departmentId 部门id + * @param positionName 职位名称 + * @return >=1 重复 + */ + Integer queryNameRepeat(@Param("departmentId") Long departmentId,@Param("positionName") String positionName); } diff --git a/src/main/java/com/ccsens/carbasics/service/ManagementService.java b/src/main/java/com/ccsens/carbasics/service/ManagementService.java index 6139647..9a5b5ce 100644 --- a/src/main/java/com/ccsens/carbasics/service/ManagementService.java +++ b/src/main/java/com/ccsens/carbasics/service/ManagementService.java @@ -188,6 +188,11 @@ public class ManagementService implements IManagementService { @Override public void addDepartment(ManagementDto.AddDepartment param, Long userId) { + //同级之下部门名称不可重复 + Integer repeat = departmentDao.queryNameRepeat(param.getParentId(),param.getDepartmentName(),param.getOid()); + if (1 <= repeat) { + throw new BaseException(DefaultCodeError.DEPARTMENT_NAME_REPEAT); + } OrganizationDepartment department = new OrganizationDepartment(); department.setId(snowflake.nextId()); department.setName(param.getDepartmentName()); @@ -206,6 +211,11 @@ public class ManagementService implements IManagementService { @Override public void updateDepartment(ManagementDto.UpdateDepartment param, Long userId) { + //同级之下部门名称不可重复 + Integer repeat = departmentDao.queryNameRepeatUpdate(param.getDid(),param.getDepartmentName(),param.getOid()); + if (1 <= repeat) { + throw new BaseException(DefaultCodeError.DEPARTMENT_NAME_REPEAT); + } OrganizationDepartment department = new OrganizationDepartment(); department.setId(param.getDid()); department.setName(param.getDepartmentName()); @@ -241,6 +251,11 @@ public class ManagementService implements IManagementService { @Override public void addPosition(ManagementDto.AddPosition param, Long userId) { + //同级之下 职位名称不可重复 + Integer repeat = positionDao.queryNameRepeat(param.getDepartmentId(),param.getPositionName()); + if (1 <= repeat) { + throw new BaseException(DefaultCodeError.POSITION_NAME_REPEAT); + } OrganizationPosition position = new OrganizationPosition(); position.setId(snowflake.nextId()); position.setName(param.getPositionName()); @@ -267,6 +282,12 @@ public class ManagementService implements IManagementService { @Override public void updatePosition(ManagementDto.UpdatePosition param, Long userId) { + //同级之下 职位名称不可重复 + Integer repeat = positionDao.queryNameRepeat(param.getDepartmentId(),param.getPositionName()); + if (1 <= repeat) { + throw new BaseException(DefaultCodeError.POSITION_NAME_REPEAT); + } + OrganizationPosition position = new OrganizationPosition(); position.setId(param.getPositionId()); position.setRoleName(param.getPositionName()); @@ -317,6 +338,12 @@ public class ManagementService implements IManagementService { positionTypeRelationList.add(positionTypeRelation); } positionTypeRelationDao.bindRole(positionTypeRelationList); + }else { + OrganizationPositionTypeRelationExample positionTypeRelationExample = new OrganizationPositionTypeRelationExample(); + positionTypeRelationExample.createCriteria().andPositionIdEqualTo(param.getPositionId()); + OrganizationPositionTypeRelation positionTypeRelation = new OrganizationPositionTypeRelation(); + positionTypeRelation.setRecStatus((byte) 2); + positionTypeRelationDao.updateByExampleSelective(positionTypeRelation,positionTypeRelationExample); } } diff --git a/src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java b/src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java index 584fa4e..d2758b9 100644 --- a/src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java +++ b/src/main/java/com/ccsens/carbasics/util/DefaultCodeError.java @@ -58,6 +58,8 @@ public class DefaultCodeError extends CodeError { public static final Code NOT_HAVE_DEPARTMENT = new Code(511,"部门不存在,请检查后重试", true); public static final Code DEPARTMENT_HAVE_POSITION = new Code(512,"请删除部门下的职位", true); public static final Code POSITION_HAVE_MEMBER = new Code(513,"请删除职位下的成员", true); + public static final Code DEPARTMENT_NAME_REPEAT = new Code(514,"同级之下部门名称不可重复", true); + public static final Code POSITION_NAME_REPEAT = new Code(514,"同级之下职位名称不可重复", true); diff --git a/src/main/resources/mapper_dao/OrganizationDepartmentDao.xml b/src/main/resources/mapper_dao/OrganizationDepartmentDao.xml index bf6aba1..b9830e4 100644 --- a/src/main/resources/mapper_dao/OrganizationDepartmentDao.xml +++ b/src/main/resources/mapper_dao/OrganizationDepartmentDao.xml @@ -59,4 +59,56 @@ OR dp.parent_id = 0 ) + + + + \ No newline at end of file diff --git a/src/main/resources/mapper_dao/OrganizationPositionDao.xml b/src/main/resources/mapper_dao/OrganizationPositionDao.xml index 0f03def..37e6d83 100644 --- a/src/main/resources/mapper_dao/OrganizationPositionDao.xml +++ b/src/main/resources/mapper_dao/OrganizationPositionDao.xml @@ -66,4 +66,15 @@ AND p.department_id = #{did} + + \ No newline at end of file