OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-11-19 fd569a1654c1aacc1228d0650cd4b0dd90748328
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -114,6 +114,9 @@
    private UserService userService;
    @Autowired
    private DepartmentService departmentService;
    @Autowired
    private IssueCommentService issueCommentService;
    @Autowired
@@ -194,6 +197,8 @@
        this.verifyTitle(issueForm.getTitle());
        //  날짜 유효성 체크
        this.checkStartCompleteDate(issueForm.getStartDate(), issueForm.getCompleteDate());
        //  담당 부서 유효성 체크
        this.verifyIssueDepartment(project, issueForm);
        //  이슈 상태 유형이 '대기' 인 이슈 상태 가져오기
        IssueStatus issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(issueType.getWorkflow());
@@ -850,6 +855,9 @@
        this.setIssueHistory(issue, issueVo);   //  이슈 기록 정보 셋팅
        this.setRelationIssue(issue, issueVo);        //연관 일감 셋팅
        this.setDownIssues(issue, issueVo);
        this.setIssueCompanyField(issue, issueVo);  //업체 정보 세팅
        this.setIssueIspField(issue, issueVo);  //ISP 정보 세팅
        this.setIssueHostingField(issue, issueVo);  //HOSTING 정보 세팅
    }
    //  등록자 정보 추가
@@ -937,7 +945,7 @@
        for (IssueDepartment issueDepartment : issue.getIssueDepartments()) {
            DepartmentVo departmentVo = ConvertUtil.copyProperties(issueDepartment.getDepartment(), DepartmentVo.class);
            departmentVo.setByName(departmentVo.getByName());
            departmentVo.setByName(departmentVo.getDepartmentName());
            departmentVos.add(departmentVo);
        }
        issueVo.setDepartmentVos(departmentVos);
@@ -1056,9 +1064,15 @@
        if (!StringUtils.isEmpty(detectIssueChange.toString())) {
            this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, detectIssueChange.toString());
        }
        //  사용자 시스템 기능 사용 정보 수집
        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_MODIFY));
        //  업체 정보 저장
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm.getIssueCompanyFields());
        //  ISP 정보 저장
        this.issueIspService.modifyIssueIspField(issue, issueForm.getIssueIspFields());
        //  HOSTING 정보 저장
        this.issueHostingService.modifyIssueHostingField(issue, issueForm.getIssueHostingFields());
        return issue;
    }
@@ -1133,7 +1147,7 @@
                //  데이터 보정 작업 - 프로젝트에서 제외된 사용자는 담당자에서 제외 될 수 있도록 처리
                if (!includeProject) {
                    throw new OwlRuntimeException(
                            this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_USER));
                            this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_DEPARTMENT));
                }
            }
            //  참여 확인된 부서로 담당부서 변경
@@ -1298,7 +1312,7 @@
    }
    //  이슈 담당자 변경
    /*@Override
    @Override
    @Transactional
    public void modifyIssueUser(IssueForm issueForm) {
        //  사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다.
@@ -1331,7 +1345,7 @@
        //  사용자 시스템 기능 사용 정보 수집
        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_USER_CHANGE));
    }*/
    }
    @Override
    @Transactional
@@ -1615,66 +1629,43 @@
    }
    //  업체 정보 추가
    private void setIssueCompanyField(List<IssueVo> issueVos, IssueCondition issueCondition) {
        //  이슈에서 저장한 업체 값을 조회한다.
        List<Map<String, Object>> issueCompanyFields = this.issueCompanyService.findInIssueIds(issueCondition);
    private void setIssueCompanyField(Issue issue, IssueVo issueVo) {
        List<IssueCompanyVo> issueCompanyVos = Lists.newArrayList();
        for (IssueVo issueVo : issueVos) {
            for (Map<String, Object> issueCompanyField : issueCompanyFields) {
                if (issueVo.getId().equals(MapUtil.getLong(issueCompanyField, "issueId"))) {
                    IssueCompanyVo issueCompanyVo = new IssueCompanyVo();
                    issueCompanyVo.setName(MapUtil.getString(issueCompanyField, "companyName"));
                    issueCompanyVo.setManager(MapUtil.getString(issueCompanyField, "companyManager"));
                    issueCompanyVo.setTel(MapUtil.getString(issueCompanyField, "companyTel"));
                    issueCompanyVo.setEmail(MapUtil.getString(issueCompanyField, "companyEmail"));
                    issueCompanyVo.setMemo(MapUtil.getString(issueCompanyField, "companyMemo"));
                    issueVo.addIssueCompanyFieldVo(issueCompanyVo);
                }
        for(IssueCompany issueCompany : issue.getIssueCompanies()){
            IssueCompanyVo issueCompanyVo = ConvertUtil.copyProperties(issueCompany, IssueCompanyVo.class);
            issueCompanyVo.setId(issueCompany.getId());
            CompanyField companyField = issueCompany.getCompanyField();
            if (companyField != null) {
                issueCompanyVo.setCompanyId(issueCompany.getCompanyField().getId());
            }
            issueCompanyVos.add(issueCompanyVo);
        }
        issueVo.setIssueCompanyVos(issueCompanyVos);
    }
    //  Isp 정보 추가
    private void setIssueIspField(List<IssueVo> issueVos, IssueCondition issueCondition) {
        //  이슈에서 저장한 ISP 값을 조회한다.
        /*List<Map<String, Object>> issueIspFields = this.issueIspFieldService.findInIssueIds(issueCondition);*/
    private void setIssueIspField(Issue issue, IssueVo issueVo) {
        List<IssueIspVo> issueIspVos = Lists.newArrayList();
        /*for (IssueVo issueVo : issueVos) {
            for (Map<String, Object> issueIspField : issueIspFields) {
                if (issueVo.getId().equals(MapUtil.getLong(issueIspField, "issueId"))) {
                    IssueIspFieldVo issueIspFieldVo = new IssueIspFieldVo();
                    issueIspFieldVo.setName(MapUtil.getString(issueIspField, "name"));
                    issueIspFieldVo.setManager(MapUtil.getString(issueIspField, "manager"));
                    issueIspFieldVo.setTel(MapUtil.getString(issueIspField, "tel"));
                    issueIspFieldVo.setEmail(MapUtil.getString(issueIspField, "email"));
                    issueIspFieldVo.setMemo(MapUtil.getString(issueIspField, "memo"));
                    issueVo.addIssueIspFieldVo(issueIspFieldVo);
                }
            }
        }*/
        for(IssueIsp issueIsp : issue.getIssueIspFields()){
            IssueIspVo issueIspVo = ConvertUtil.copyProperties(issueIsp, IssueIspVo.class);
            issueIspVo.setId(issueIsp.getId());
            issueIspVos.add(issueIspVo);
        }
        issueVo.setIssueIspVos(issueIspVos);
    }
    // Hosting 정보 추가
    private void setIssueHostingField(List<IssueVo> issueVos, IssueCondition issueCondition) {
        //  이슈에서 저장한 Hosting 값을 조회한다.
        List<Map<String, Object>> issueHostingFields = this.issueHostingService.findInIssueIds(issueCondition);
    private void setIssueHostingField(Issue issue, IssueVo issueVo) {
        List<IssueHostingVo> issueHostingVos = Lists.newArrayList();
        for (IssueVo issueVo : issueVos) {
            for (Map<String, Object> issueHostingField : issueHostingFields) {
                if (issueVo.getId().equals(MapUtil.getLong(issueHostingField, "issueId"))) {
                    IssueHostingVo issueHostingVo = new IssueHostingVo();
                    issueHostingVo.setName(MapUtil.getString(issueHostingField, "name"));
                    issueHostingVo.setManager(MapUtil.getString(issueHostingField, "manager"));
                    issueHostingVo.setTel(MapUtil.getString(issueHostingField, "tel"));
                    issueHostingVo.setEmail(MapUtil.getString(issueHostingField, "email"));
                    issueHostingVo.setMemo(MapUtil.getString(issueHostingField, "memo"));
                    issueVo.addIssueHostingFieldVo(issueHostingVo);
                }
            }
        for(IssueHosting issueHosting : issue.getIssueHostingFields()){
            IssueHostingVo issueHostingVo = ConvertUtil.copyProperties(issueHosting, IssueHostingVo.class);
            issueHostingVo.setId(issueHosting.getId());
            issueHostingVos.add(issueHostingVo);
        }
        issueVo.setIssueHostingVos(issueHostingVos);
    }
    //  연관일감 정보 추가
@@ -1818,13 +1809,14 @@
            Map<String, Priority> priorityMaps = new HashMap<>();   //  우선 순위 모음
            Map<String, Severity> severityMaps = new HashMap<>();   //  중요도 모음
            Map<String, Object> userMaps = new HashMap<>(); //  사용자 모음
            Map<String, Object> departmentMaps = new HashMap<>(); //  부서 모음
            Map<String, CustomField> customFieldMaps = new HashMap<>();
            Map<String, IssueStatus> issueStatusReadyMaps = new HashMap<>();   //  상태 속성 '대기'인 이슈 상태
            Map<Long, Long> issueNumberMaps = new HashMap<>();  //  이슈 번호 모음
            Map<String, Long> issueTypeCustomFieldMaps = new HashMap<>(); //  이슈 타입 + 사용자 정의 필드 연결 정보
            Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());  //  이슈를 넣으려는 업무 공간
            //  이슈의 주요 속성을 map 에 저장하여 엑셀 import 에서 지정한 대상(이슈 속성)을 빠르게 찾을 수 있게 한다.
            this.IssueAttributeMapToList(projectMaps, issueTypeMaps, priorityMaps, severityMaps, userMaps, customFieldMaps, issueNumberMaps, issueTypeCustomFieldMaps, issueStatusReadyMaps);
            this.IssueAttributeMapToList(projectMaps, issueTypeMaps, priorityMaps, severityMaps, userMaps, departmentMaps, customFieldMaps, issueNumberMaps, issueTypeCustomFieldMaps, issueStatusReadyMaps);
            //  0.237 - 0.230
            List<IssueForm> issueForms = Lists.newArrayList();
@@ -2017,7 +2009,7 @@
    //  이슈의 주요 속성을 map 에 저장하여 엑셀 import 에서 지정한 대상(이슈 속성)을 빠르게 찾을 수 있게 한다.
    private void IssueAttributeMapToList(Map<String, Project> projectMaps, Map<String, IssueType> issueTypeMaps, Map<String, Priority> priorityMaps, Map<String, Severity> severityMaps,
                                         Map<String, Object> userMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, Map<String, Long> issueTypeCustomFieldMaps, Map<String, IssueStatus> issueStatusReadyMaps) {
                                         Map<String, Object> userMaps, Map<String, Object> departmentMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, Map<String, Long> issueTypeCustomFieldMaps, Map<String, IssueStatus> issueStatusReadyMaps) {
        //  프로젝트 키로 바로 찾을 수 있게 준비
        List<Project> projects = this.projectService.findByWorkspaceId();
        List<Long> projectIds = Lists.newArrayList();
@@ -2043,6 +2035,14 @@
            }
            userMaps.put(project.getProjectKey(), userMap);
            //  프로젝트에 참여하는 부서 정보
            List<Map<String, Object>> departments = this.departmentService.findProjectDepartment(project);
            List<Long> departmentList = Lists.newArrayList();
            //  부서 정보를 저장
            for (Map<String, Object> department : departments) {
                departmentList.add(MapUtil.getLong(department, "departmentId"));
            }
        }
        //  이슈 유형을 바로 찾을 수 있게 준비