| | |
| | | } |
| | | } |
| | | |
| | | // 이슈 담당부서를 변경한다. |
| | | @Override |
| | | @Transactional |
| | | public void modifyIssueDepartment(Issue issue, Workspace workspace, List<Long> departmentIds) { |
| | | List<Long> oldDepartmentIds = Lists.newArrayList(); |
| | | |
| | | // 이전 담당 부서 |
| | | for (IssueUser issueUser : issue.getIssueUsers()) { |
| | | oldDepartmentIds.add(issueUser.getDepartment().getId()); |
| | | } |
| | | |
| | | List<Long> newDepartmentIds = CommonUtil.searchChangeList(oldDepartmentIds, departmentIds); // 추가해야할 부서를 찾는다. |
| | | List<Long> removeDepartmentIds = CommonUtil.searchChangeList(departmentIds, oldDepartmentIds); // 삭제해야할 부서를 찾는다. |
| | | |
| | | if (removeDepartmentIds.size() > 0) { |
| | | Map<String, Object> removeIssueAssigneeMap = new HashMap<>(); |
| | | removeIssueAssigneeMap.put("issueId", issue.getId()); |
| | | removeIssueAssigneeMap.put("departmentIds", removeDepartmentIds); |
| | | |
| | | // 담당부서 삭제 |
| | | this.issueUserMapper.deleteIssueUserByIssueIdAndMultiDepartmentId(removeIssueAssigneeMap); |
| | | } |
| | | |
| | | if (newDepartmentIds.size() > 0) { |
| | | List<Map<String, Long>> addIssueAssigneeMaps = Lists.newArrayList(); |
| | | |
| | | for (Long departmentId : newDepartmentIds) { |
| | | Map<String, Long> issueAssigneeMap = new HashMap<>(); |
| | | issueAssigneeMap.put("departmentId", departmentId); //담당부서 |
| | | issueAssigneeMap.put("issueId", issue.getId()); |
| | | issueAssigneeMap.put("workspaceId", workspace.getId()); |
| | | issueAssigneeMap.put("registerId", this.webAppUtil.getLoginId()); |
| | | addIssueAssigneeMaps.add(issueAssigneeMap); |
| | | } |
| | | |
| | | // 담당부서 추가 |
| | | this.issueUserMapper.insertIssueUser(addIssueAssigneeMaps); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void insertIssueDepartment(List<Map<String, Long>> issueAssigneeMaps) { |
| | | // 이슈 담당부서 벌크 등록 |
| | | this.issueUserMapper.insertIssueUser(issueAssigneeMaps); |
| | | } |
| | | |
| | | // 이슈 담당부서에서 제외한다. |
| | | @Override |
| | | @Transactional |
| | | public void removeIssueDepartment(Long projectId, List<Long> excludeDepartmentIds) { |
| | | for (Long departmentId : excludeDepartmentIds) { |
| | | Map<String, Object> issueUserMap = new HashMap<>(); |
| | | issueUserMap.put("departmentId", departmentId); |
| | | issueUserMap.put("projectId", projectId); |
| | | |
| | | List<Map<String, Object>> results = this.issueUserMapper.findByDepartmentIdAndProjectId(issueUserMap); |
| | | |
| | | if (results.size() > 0) { |
| | | List<Long> issueIds = Lists.newArrayList(); |
| | | |
| | | for (Map<String, Object> result : results) { |
| | | Long id = MapUtil.getLong(result, "id"); |
| | | |
| | | if (id != null) { |
| | | issueIds.add(id); |
| | | } |
| | | } |
| | | |
| | | if (issueIds.size() > 0) { |
| | | Map<String, Object> removeIssueAssigneeMap = new HashMap<>(); |
| | | removeIssueAssigneeMap.put("departmentId", departmentId); |
| | | removeIssueAssigneeMap.put("issueIds", issueIds); |
| | | this.issueUserMapper.deleteIssueUserByDepartmentIdAndMultiIssueId(removeIssueAssigneeMap); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 이슈 담당자 찾기 |
| | | @Override |