| | |
| | | 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(); |
| | | |
| | |
| | | |
| | | // 사용자 정의 필드 정보 추가 |
| | | this.setIssueCustomFieldValue(issueVos, issueCondition); |
| | | // 업체 정보 추가 |
| | | //this.setIssueCompanyField(issueVos, issueCondition); |
| | | // ISP 정보 추가 |
| | | //this.setIssueIspField(issueVos, issueCondition); |
| | | // HOSTING 정보 추가 |
| | | //this.setIssueHostingField(issueVos, issueCondition); |
| | | |
| | | } |
| | | |
| | | // 검색 조건을 만든다 |
| | |
| | | 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); // 담당부서 정보 셋팅 |
| | |
| | | } |
| | | } |
| | | |
| | | // 업체 정보 추가 |
| | | 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); |
| | |
| | | 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());*/ |
| | | |