OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-11-18 729564acfd97630060acdd77694da87cc1c67979
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();
@@ -564,6 +565,13 @@
        //  사용자 정의 필드 정보 추가
        this.setIssueCustomFieldValue(issueVos, issueCondition);
        //  업체 정보 추가
        //this.setIssueCompanyField(issueVos, issueCondition);
        //  ISP 정보 추가
        //this.setIssueIspField(issueVos, issueCondition);
        //  HOSTING 정보 추가
        //this.setIssueHostingField(issueVos, issueCondition);
    }
        //  검색 조건을 만든다
@@ -792,9 +800,6 @@
                    issueVo.setIssueStatusVo(ConvertUtil.copyProperties(issue.getIssueStatus(), IssueStatusVo.class));
                    issueVo.setPriorityVo(ConvertUtil.copyProperties(issue.getPriority(), PriorityVo.class));
                    issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class));
                    issueVo.setCompanyFieldVo(ConvertUtil.copyProperties(issue.getCompanyField(), CompanyFieldVo.class));
                    issueVo.setIspFieldVo(ConvertUtil.copyProperties(issue.getIspFieldId(), IspFieldVo.class));
                    issueVo.setHostingFieldVo(ConvertUtil.copyProperties(issue.getHostingFieldId(), HostingFieldVo.class));
                    this.setRegister(issue, issueVo);   //  등록자 정보 셋팅
                    //this.setIssueUser(issue, issueVo);  //  담당자 정보 셋팅
@@ -836,9 +841,6 @@
        issueVo.setIssueStatusVo(issueStatusVo);
        issueVo.setPriorityVo(ConvertUtil.copyProperties(issue.getPriority(), PriorityVo.class));
        issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class));
        issueVo.setCompanyFieldVo(ConvertUtil.copyProperties(issue.getCompanyField(), CompanyFieldVo.class));
        issueVo.setIspFieldVo(ConvertUtil.copyProperties(issue.getIspFieldId(), IspFieldVo.class));
        issueVo.setHostingFieldVo(ConvertUtil.copyProperties(issue.getHostingFieldId(), HostingFieldVo.class));
        this.setRegister(issue, issueVo);   //  등록자 정보 셋팅
        //this.setIssueUser(issue, issueVo);  //  담당자 정보 셋팅
        this.setIssueDepartment(issue, issueVo);  //  담당부서 정보 셋팅
@@ -1612,6 +1614,69 @@
        }
    }
    //  업체 정보 추가
    private void setIssueCompanyField(List<IssueVo> issueVos, IssueCondition issueCondition) {
        //  이슈에서 저장한 업체 값을 조회한다.
        List<Map<String, Object>> issueCompanyFields = this.issueCompanyService.findInIssueIds(issueCondition);
        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);
                }
            }
        }
    }
    //  Isp 정보 추가
    private void setIssueIspField(List<IssueVo> issueVos, IssueCondition issueCondition) {
        //  이슈에서 저장한 ISP 값을 조회한다.
        /*List<Map<String, Object>> issueIspFields = this.issueIspFieldService.findInIssueIds(issueCondition);*/
        /*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);
                }
            }
        }*/
    }
    // Hosting 정보 추가
    private void setIssueHostingField(List<IssueVo> issueVos, IssueCondition issueCondition) {
        //  이슈에서 저장한 Hosting 값을 조회한다.
        List<Map<String, Object>> issueHostingFields = this.issueHostingService.findInIssueIds(issueCondition);
        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);
                }
            }
        }
    }
    //  연관일감 정보 추가
    private void setRelationIssue(IssueVo issueVo, Long issueId) {
        List<IssueVo> relationIssues = this.issueRelationService.findRelationIssue(issueId);
@@ -1665,6 +1730,8 @@
                        result.put("customField_" + issueCustomFieldValueVo.getCustomFieldVo().getId().toString(), useValue + ", " + issueCustomFieldValueVo.getUseValue());
                    }
                }
                //업체, ISP, 호스팅 추가
                results.add(result);
            } catch (Exception e) {
@@ -1830,6 +1897,8 @@
            this.bulkInsertIssueCustomFieldValue(issueForms, issueTypeCustomFieldMaps);
            //  3.628 - 3.445
            // 업체,ISP,호스팅 추가
            /*serviceStart.stop();
            log.debug("2차 저장 시간 : " + serviceStart.getTime());*/