OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-18 8ecffbb61c5505475cd0738032abda5efe2a1812
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -44,7 +44,6 @@
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.locks.Condition;
@Service
public class IssueServiceImpl extends AbstractServiceImpl<Issue, Long, JpaRepository<Issue, Long>> implements IssueService {
@@ -89,6 +88,15 @@
    @Autowired
    private IssueCustomFieldValueService issueCustomFieldValueService;
    @Autowired
    private IssueCompanyService issueCompanyService;
    @Autowired
    private IssueIspService issueIspService;
    @Autowired
    private IssueHostingService issueHostingService;
    @Autowired
    private IssueUserService issueUserService;
@@ -197,22 +205,6 @@
        issue.setPriority(priority);
        issue.setSeverity(severity);
        //  업체 필드 유효성 체크
        if(issueForm.getCompanyId() != null){
            CompanyField companyField = this.companyFieldService.getCompany(issueForm.getCompanyId());
            issue.setCompanyField(companyField);
        }
        //  ISP 필드 유효성 체크
        if(issueForm.getIspId() != null) {
            IspField ispField = this.ispFieldService.getIsp(issueForm.getIspId());
            issue.setIspFieldId(ispField);
        }
        //  HOSTING 필드 유효성 체크
        if (issueForm.getHostingId() != null){
            HostingField hostingField = this.hostingFieldService.getHosting(issueForm.getHostingId());
            issue.setHostingFieldId(hostingField);
        }
        issue.setIssueNumber(this.issueNumberGeneratorService.generateIssueNumber(project));    //  각 프로젝트의 고유 이슈 번호 생성
        this.issueRepository.saveAndFlush(issue);
@@ -241,6 +233,12 @@
        this.reservationIssueEmail(issue.getId(), EmailType.ISSUE_ADD);
        //  사용자 시스템 기능 사용 정보 수집
        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_ADD));
        //  업체 정보 저장
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm.getIssueCompanyFields());
        //  ISP 정보 저장
        this.issueIspService.modifyIssueIspField(issue, issueForm.getIssueIspFields());
        //  HOSTING 정보 저장
        this.issueHostingService.modifyIssueHostingField(issue, issueForm.getIssueHostingFields());
        return issue;
    }
@@ -345,6 +343,9 @@
        issueMap.put("customFields", customFields);
        issueMap.put("description", issue.getDescription());
        //업체,ISP,HOSTING 추가
        StringBuilder attachedFileBuilder = new StringBuilder();
@@ -454,7 +455,7 @@
    @Override
    @Transactional(readOnly = true)
    public List<IssueVo> findChartIssue(Map<String, Object> resJsonData,
                                   IssueCondition issueCondition, Pageable pageable) {
                                        IssueCondition issueCondition, Pageable pageable) {
        //  검색 조건을 만든다
        if (!this.makeIssueSearchCondition(issueCondition,Lists.newArrayList("01", "02", "03"), pageable)) {
@@ -564,9 +565,16 @@
        //  사용자 정의 필드 정보 추가
        this.setIssueCustomFieldValue(issueVos, issueCondition);
        //  업체 정보 추가
        //this.setIssueCompanyField(issueVos, issueCondition);
        //  ISP 정보 추가
        //this.setIssueIspField(issueVos, issueCondition);
        //  HOSTING 정보 추가
        //this.setIssueHostingField(issueVos, issueCondition);
    }
        //  검색 조건을 만든다
    //  검색 조건을 만든다
    private boolean makeIssueSearchCondition(IssueCondition condition, List<String> projectStatues, Pageable pageable) {
        if (pageable != null) {
            condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
@@ -799,6 +807,7 @@
                    this.setAttachedFiles(issue, issueVo);  //  첨부 파일 정보 셋팅
                    this.setIssueCustomFields(issue, issueVo);  //  사용자 정의 필드 값 정보 셋팅
                    this.setRelationIssue(issue, issueVo);        //연관 일감 셋팅
                    this.setDownIssues(issue, issueVo);
                    break;
@@ -812,6 +821,13 @@
        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_DETAIL));
        resJsonData.put(Constants.RES_KEY_CONTENTS, issueVo);
    }
    // 하위 이슈 정보를 셋팅한다
    private void setDownIssues(Issue issue, IssueVo issueVo) {
        List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId());
        List<IssueVo> issueVos = ConvertUtil.convertObjectsToClasses(downIssues, IssueVo.class);
        issueVo.setIssueDownVos(issueVos);
    }
    //  이슈 상세 정보를 셋팅한다.
@@ -833,6 +849,10 @@
        this.setIssueComments(issue, issueVo);  //  댓글 정보 셋팅
        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 정보 세팅
    }
    //  등록자 정보 추가
@@ -1039,9 +1059,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;
    }
@@ -1519,7 +1545,7 @@
        excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // 이슈 제목
        excelInfo.addAttrInfos(new ExportExcelAttrVo("description", this.messageAccessor.message("common.content"), 60, ExportExcelAttrVo.ALIGN_LEFT)); // 내용
        excelInfo.addAttrInfos(new ExportExcelAttrVo("issueTypeName", this.messageAccessor.message("common.issueType"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈 타입
        excelInfo.addAttrInfos(new ExportExcelAttrVo("department", this.messageAccessor.message("common.department"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 담당부서
        excelInfo.addAttrInfos(new ExportExcelAttrVo("departments", this.messageAccessor.message("common.department"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 담당부서
        excelInfo.addAttrInfos(new ExportExcelAttrVo("priorityName", this.messageAccessor.message("common.priority"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 우선순위
        excelInfo.addAttrInfos(new ExportExcelAttrVo("severityName", this.messageAccessor.message("common.importance"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 중요도
        excelInfo.addAttrInfos(new ExportExcelAttrVo("register", this.messageAccessor.message("common.register"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 등록자
@@ -1597,6 +1623,46 @@
        }
    }
    //  업체 정보 추가
    private void setIssueCompanyField(Issue issue, IssueVo issueVo) {
        List<IssueCompanyVo> issueCompanyVos = Lists.newArrayList();
        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(Issue issue, IssueVo issueVo) {
        List<IssueIspVo> issueIspVos = Lists.newArrayList();
        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(Issue issue, IssueVo issueVo) {
        List<IssueHostingVo> issueHostingVos = Lists.newArrayList();
        for(IssueHosting issueHosting : issue.getIssueHostingFields()){
            IssueHostingVo issueHostingVo = ConvertUtil.copyProperties(issueHosting, IssueHostingVo.class);
            issueHostingVo.setId(issueHosting.getId());
            issueHostingVos.add(issueHostingVo);
        }
        issueVo.setIssueHostingVos(issueHostingVos);
    }
    //  연관일감 정보 추가
    private void setRelationIssue(IssueVo issueVo, Long issueId) {
        List<IssueVo> relationIssues = this.issueRelationService.findRelationIssue(issueId);
@@ -1624,6 +1690,7 @@
                result.put("description", description);
                result.put("issueTypeName", issueVo.getIssueTypeName());
                result.put("assignees", CommonUtil.convertUserVosToString(issueVo.getUserVos()));
                result.put("departments", CommonUtil.convertDepartmentVosToString(issueVo.getDepartmentVos()));
                result.put("priorityName", issueVo.getPriorityName());
                result.put("severityName", issueVo.getSeverityName());
@@ -1649,6 +1716,8 @@
                        result.put("customField_" + issueCustomFieldValueVo.getCustomFieldVo().getId().toString(), useValue + ", " + issueCustomFieldValueVo.getUseValue());
                    }
                }
                //업체, ISP, 호스팅 추가
                results.add(result);
            } catch (Exception e) {
@@ -1813,6 +1882,8 @@
            //  이슈 사용자 정의 값 필드 벌크 등록
            this.bulkInsertIssueCustomFieldValue(issueForms, issueTypeCustomFieldMaps);
            //  3.628 - 3.445
            // 업체,ISP,호스팅 추가
            /*serviceStart.stop();
            log.debug("2차 저장 시간 : " + serviceStart.getTime());*/
@@ -2512,4 +2583,19 @@
        return tasks;
    }
    @Transactional
    @Override
    public void modifyParentIssue(IssueForm issueForm) {
        Issue issue = this.issueRepository.getOne(issueForm.getId());
        Long parentIssueId = issueForm.getParentIssueId();
        if (parentIssueId != null) {
            Issue parentIssue = this.issueRepository.getOne(parentIssueId);
            issue.setParentIssue(parentIssue);
        } else  {
            issue.setParentIssue(null);
        }
        this.issueRepository.saveAndFlush(issue);
    }
}