src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -253,6 +253,9 @@ public static final String DEPARTMENT_NOT_EXIST = "DEPARTMENT_NOT_EXIST"; // 부서가 존재하지 않습니다. public static final String DEPARTMENT_ALREADY_IN_USE = "DEPARTMENT_ALREADY_IN_USE"; // 선택한 부서는 이미 사용하고 있습니다. public static final String DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW = "DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW"; // 선택한 부서는 이미 워크플로우의 담당부서에 속해 있습니다. public static final String DEPARTMENT_ALREADY_IN_USE_IN_PROJECT = "DEPARTMENT_ALREADY_IN_USE_IN_PROJECT"; // 선택한 부서는 프로젝트의 담당부서에 속해 있습니다. public static final String DEPARTMENT_ALREADY_IN_USE_IN_ISSUE = "DEPARTMENT_ALREADY_IN_USE_IN_ISSUE"; // 선택한 부서는 이슈의 담당부서에 속해 있습니다. public static final String DEPARTMENT_REMOVE_NOT_SELECT = "DEPARTMENT_REMOVE_NOT_SELECT"; // 삭제할 부서가 선택되지 않았습니다. public static final String USER_DEPARTMENT_CHANGE = "USER_DEPARTMENT_CHANGE"; // 사용자의 부서가 변경 되었습니다. 다시 로그인 해주세요. src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java
@@ -11,4 +11,6 @@ List<ProjectRoleDepartment> findByProjectRoleId(@Param("projectRoleId") Long projectRoleId); ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(@Param("projectRoleId") Long projectRoleId, @Param("departmentId") Long departmentId); List<ProjectRoleDepartment> findByDepartmentId(@Param("departmentId") Long departmentId); } src/main/java/kr/wisestone/owl/repository/WorkflowDepartmentRepository.java
@@ -9,4 +9,6 @@ public interface WorkflowDepartmentRepository extends JpaRepository<WorkflowDepartment, Long> { List<WorkflowDepartment> findByWorkflowIdAndIssueStatusId(@Param("workflowId") Long workflowId, @Param("issueStatusId") Long issueStatusId); List<WorkflowDepartment> findByWorkflowId(@Param("workflowId") Long workflowId); List<WorkflowDepartment> findByDepartmentId(@Param("departmentId") Long departmentId); } src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java
@@ -24,4 +24,6 @@ List<IssueDepartment> find(Issue issue); List<IssueDepartment> findByDepartmentId(Long departmentId); boolean usingDepartment(Long departmentId); } src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java
@@ -12,4 +12,6 @@ ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(Long projectRoleId, Long departmentId); //담당부서 List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap); boolean usingDepartment(Long departmentId); } src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java
@@ -19,4 +19,6 @@ List<Long> findFirstDepartmentIds(Workflow workflow); void modify(Workflow workflow, List<IssueStatusVo> issueStatusVos); void remove(Long workflowId); boolean usingDepartment(Long id); } src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
@@ -56,6 +56,9 @@ private ProjectRoleDepartmentService projectRoleDepartmentService; @Autowired private IssueDepartmentService issueDepartmentService; @Autowired private ProjectRoleService projectRoleService; @Autowired @@ -125,11 +128,28 @@ } for (Long id : departmentForm.getRemoveIds()) { if (!this.departmentService.countInDepartment(id)) { this.departmentRepository.deleteById(id); } else { if (this.departmentService.countInDepartment(id)) { // 사용자가 부서에 속해 있는지 체크 throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE)); } else if (this.workflowDepartmentService.usingDepartment(id)) { // 워크플로우에서 해당 부서를 사용하고 있는지 체크 throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW)); } else if (this.projectRoleDepartmentService.usingDepartment(id)) { // 프로젝트의 담당부서인지 체크 throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE_IN_PROJECT)); } else if (this.issueDepartmentService.usingDepartment(id)) { // 이슈의 담당부서로 되어있는지 체크 throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE_IN_ISSUE)); } else { this.departmentRepository.deleteById(id); } } this.departmentRepository.flush(); src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java
@@ -99,6 +99,21 @@ return this.issueDepartmentRepository.findByDepartmentId(departmentId); } /** * 이슈의 담당부서에 속해있는지 조회 * @param departmentId Long * @return useYn */ @Override public boolean usingDepartment(Long departmentId) { boolean useYn = false; List<IssueDepartment> issueDepartments = this.issueDepartmentRepository.findByDepartmentId(departmentId); if (issueDepartments != null && issueDepartments.size() > 0) { useYn = true; } return useYn; } @Override @Transactional public void insertIssueDepartment(List<Map<String, Long>> issueAssigneeMaps) { src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java
@@ -63,4 +63,19 @@ public List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap) { return this.projectRoleDepartmentMapper.findProjectRoleDepartment(projectRoleDepartmentMap); } /** * 프로젝트의 담당부서에 속해있는지 조회 * @param departmentId Long * @return useYn */ @Override public boolean usingDepartment(Long departmentId) { boolean useYn = false; List<ProjectRoleDepartment> projectRoleDepartments = this.projectRoleDepartmentRepository.findByDepartmentId(departmentId); if (projectRoleDepartments != null && projectRoleDepartments.size() > 0) { useYn = true; } return useYn; } } src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java
@@ -193,4 +193,19 @@ this.workflowDepartmentMapper.deleteAll(condition); } /** * 특정 부서를 워크플로우에서 사용중인지 체크 * @param id Long * @return useYn */ @Override public boolean usingDepartment(Long id) { boolean useYn = false; List<WorkflowDepartment> workflowDepartments = this.workflowDepartmentRepository.findByDepartmentId(id); if (workflowDepartments != null && workflowDepartments.size() > 0) { useYn = true; } return useYn; } } src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -235,6 +235,9 @@ DEPARTMENT_NOT_EXIST = \uBD80\uC11C\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. DEPARTMENT_ALREADY_IN_USE = \uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uBBF8 \uC0AC\uC6A9\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4. DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uBBF8 \uC6CC\uD06C\uD50C\uB85C\uC6B0\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4. DEPARTMENT_ALREADY_IN_USE_IN_PROJECT=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uD504\uB85C\uC81D\uD2B8\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4. DEPARTMENT_ALREADY_IN_USE_IN_ISSUE=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uC288\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4. DEPARTMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uBD80\uC11C\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. USER_DEPARTMENT_CHANGE = \uC0AC\uC6A9\uC790\uC758 \uB4F1\uAE09\uC774 \uBCC0\uACBD \uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uB85C\uADF8\uC778 \uD574\uC8FC\uC138\uC694.