| | |
| | | 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 { |
| | |
| | | |
| | | @Autowired |
| | | private IssueCustomFieldValueService issueCustomFieldValueService; |
| | | |
| | | @Autowired |
| | | private IssueCompanyService issueCompanyService; |
| | | |
| | | @Autowired |
| | | private IssueIspService issueIspService; |
| | | |
| | | @Autowired |
| | | private IssueHostingService issueHostingService; |
| | | |
| | | @Autowired |
| | | private IssueUserService issueUserService; |
| | |
| | | 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); |
| | |
| | | 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; |
| | | } |
| | |
| | | |
| | | issueMap.put("customFields", customFields); |
| | | issueMap.put("description", issue.getDescription()); |
| | | |
| | | //업체,ISP,HOSTING 추가 |
| | | |
| | | |
| | | StringBuilder attachedFileBuilder = new StringBuilder(); |
| | | |
| | |
| | | @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)) { |
| | |
| | | |
| | | // 사용자 정의 필드 정보 추가 |
| | | 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()); |
| | |
| | | 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); // 담당자 정보 셋팅 |
| | |
| | | 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); // 담당부서 정보 셋팅 |
| | |
| | | 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 정보 세팅 |
| | | } |
| | | |
| | | // 등록자 정보 추가 |
| | |
| | | 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; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // 업체 정보 추가 |
| | | private void setIssueCompanyField(Issue issue, IssueVo issueVo) { |
| | | List<IssueCompanyVo> issueCompanyVos = Lists.newArrayList(); |
| | | |
| | | for(IssueCompany issueCompany : issue.getIssueCompanies()){ |
| | | IssueCompanyVo issueCompanyVo = ConvertUtil.copyProperties(issueCompany.getCompanyField(), IssueCompanyVo.class); |
| | | 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.getIspField(), IssueIspVo.class); |
| | | 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.getHostingField(), IssueHostingVo.class); |
| | | issueHostingVos.add(issueHostingVo); |
| | | } |
| | | issueVo.setIssueHostingVos(issueHostingVos); |
| | | } |
| | | |
| | | // 연관일감 정보 추가 |
| | | private void setRelationIssue(IssueVo issueVo, Long issueId) { |
| | | List<IssueVo> relationIssues = this.issueRelationService.findRelationIssue(issueId); |
| | |
| | | result.put("customField_" + issueCustomFieldValueVo.getCustomFieldVo().getId().toString(), useValue + ", " + issueCustomFieldValueVo.getUseValue()); |
| | | } |
| | | } |
| | | |
| | | //업체, ISP, 호스팅 추가 |
| | | |
| | | results.add(result); |
| | | } catch (Exception e) { |
| | |
| | | this.bulkInsertIssueCustomFieldValue(issueForms, issueTypeCustomFieldMaps); |
| | | // 3.628 - 3.445 |
| | | |
| | | // 업체,ISP,호스팅 추가 |
| | | |
| | | /*serviceStart.stop(); |
| | | log.debug("2차 저장 시간 : " + serviceStart.getTime());*/ |
| | | |