OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-11-15 dc873bdc1e57945d6cb6eadd41ef38cc2a4b35d3
src/main/java/kr/wisestone/owl/service/impl/IssueUserServiceImpl.java
@@ -75,7 +75,84 @@
        }
    }
    //  이슈 담당부서를 변경한다.
    @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