OWL ITS + 탐지시스템(인터넷 진흥원)
jhjang
2021-12-14 b90cdc67fa2c27ecd0f0b091bb5abe2624312f05
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -12,6 +12,7 @@
import kr.wisestone.owl.domain.enumType.IssueHistoryType;
import kr.wisestone.owl.domain.enumType.IssueStatusType;
import kr.wisestone.owl.exception.OwlRuntimeException;
import kr.wisestone.owl.mapper.DepartmentMapper;
import kr.wisestone.owl.mapper.IssueMapper;
import kr.wisestone.owl.mapper.ProjectMapper;
import kr.wisestone.owl.repository.IssueRelationRepository;
@@ -175,6 +176,9 @@
    @Autowired
    private UserDepartmentRepository userDepartmentRepository;
    @Autowired
    private DepartmentMapper departmentMapper;
    @Autowired
    private WorkflowDepartmentRepository workflowDepartmentRepository;
@@ -694,8 +698,22 @@
            for(UserDepartment myDepartment : myDepartments){
                myDepartmentIds.add(myDepartment.getDepartmentId());
            }
        } else {
            myDepartmentIds.add(-1L);
        }
        issueCondition.setMyDepartmentIds(myDepartmentIds);
    }
    void SetAllDepartmentId(IssueCondition issueCondition){
        List<Long> departmentIds = Lists.newArrayList();
        List<Map<String, Object>> departmentList = this.departmentMapper.find(null);
        if(departmentList != null && departmentList.size() > 0){
            for(Map<String, Object> department : departmentList){
                departmentIds.add((Long) department.get("id"));
            }
        }
        issueCondition.setMyDepartmentIds(departmentIds);
    }
    void SetWorkflowDepartment(List<IssueVo> issueVos){
@@ -754,16 +772,16 @@
        Long totalCount = 0L;
        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
//        if (this.userWorkspaceService.checkWorkspaceManager(user)
//                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
            results = this.issueMapper.find(issueCondition);
            totalCount = this.issueMapper.count(issueCondition);
//        }
//        } else{
//            this.SetMyDepartmentId(issueCondition);
//            results = this.issueMapper.findByDepartment(issueCondition);
//            totalCount = this.issueMapper.countByDepartment(issueCondition);
//        }
        if (this.userWorkspaceService.checkWorkspaceManager(user)
                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
            this.SetAllDepartmentId(issueCondition);
        } else{
            this.SetMyDepartmentId(issueCondition);
            /*results = this.issueMapper.findByDepartment(issueCondition);
            totalCount = this.issueMapper.countByDepartment(issueCondition);*/
        }
        results = this.issueMapper.find(issueCondition);
        totalCount = this.issueMapper.count(issueCondition);
        //  튜닝 전 - 0.8, 0.9, 0.9, 0.9, 0.9
@@ -784,6 +802,7 @@
        this.setMapToIssueVo(results, issueVos, issueCondition, user);
        if (issueCondition.getTree()) {
            this.setParentIssue(issueVos);
            this.setDownIssues(user, issueVos);
            this.setRelationIssues(issueVos);
        }
@@ -813,9 +832,9 @@
                IssueVo addIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class);
                addIssueVo.setIssueTypeId(downIssue.getIssueType().getId());
                downIssueVos.add(addIssueVo);
            }
            issueVo.setIssueDownVos(downIssueVos);
            if (downIssueVos.size() > 0) {
                this.setDownIssues(user, downIssueVos);
            }
@@ -825,11 +844,10 @@
            this.setIssueDepartmentList(issueVos, issueCondition, user);
            //  등록자 정보 추가
            this.setRegister(issueVos);  //  담당자 정보 셋팅
            //  사용자 정의 필드 정보 추가
            this.setIssueCustomFieldValue(issueVos, issueCondition);
            this.SetWorkflowDepartment(issueVos); //워크플로우에 설정한 담당부서 가져오기
            //워크플로우에 설정한 담당부서 가져오기
            this.SetWorkflowDepartment(issueVos);
        }
    }
@@ -839,6 +857,20 @@
            List<IssueVo> relationIssues = this.issueRelationService.findRelationIssue(issueVo.getId());
            for(IssueVo relationIssue : relationIssues){
                issueVo.addRelationIssueVo(ConvertUtil.copyProperties(relationIssue, IssueVo.class));
            }
        }
    }
    // 상위 이슈 체크
    private void setParentIssue(List<IssueVo> issueVos) {
        for(IssueVo issueVo : issueVos) {
            if(issueVo.getParentIssueId() != null) {
                Issue parentIssue = this.getIssue(issueVo.getParentIssueId());
                //issueVo.setParentIssueVo(ConvertUtil.copyProperties(parentIssue, IssueVo.class));
                if(parentIssue.getIssueCustomFieldValues() == null || parentIssue.getIssueCustomFieldValues().size() == 0){
                    issueVo.setIssueCustomFieldValueVos(null);
                }
                ConvertUtil.copyProperties(parentIssue, issueVo);
            }
        }
    }
@@ -880,15 +912,19 @@
    public void findApiIssue(ApiMonitorCondition apiMonitorCondition, Map<String, Object> resJsonData) {
        IssueTypeCondition issueTypeCondition = new IssueTypeCondition();
        issueTypeCondition.setIsApi(Issue.IS_API_YES);
        List<IssueTypeVo> issueTypes = this.issueTypeService.findIssueType(issueTypeCondition);
        // 값이 없을 경우 초기값 입력
        if (StringUtils.isEmpty(apiMonitorCondition.getSearchPeriod())) {
            apiMonitorCondition.setSearchPeriod(DateUtil.LAST_SEVEN_DAYS);
        }
        //  검색 일자를 구한다.
        List<Date> searchDates = CommonUtil.findSearchPeriod(apiMonitorCondition.getSearchPeriod());
        List<Date> searchDates = Lists.newArrayList();
        if (apiMonitorCondition.getSearchPeriod().equals(DateUtil.CUSTOM_INPUT)) {
            Date startDate = DateUtil.convertStrToDate(apiMonitorCondition.getSearchStartDate(), "yyyy-MM-dd");
            Date endDate = DateUtil.addDays(DateUtil.convertStrToDate(apiMonitorCondition.getSearchEndDate(), "yyyy-MM-dd"), 1);
            searchDates = CommonUtil.findSearchPeriod(startDate, endDate);
        } else {
            searchDates = CommonUtil.findSearchPeriod(apiMonitorCondition.getSearchPeriod());
        }
        //  날짜가 검색되지 않았으면 오류
        if (searchDates.size() < 1) {