| | |
| | | private Issue modifyIssueForApi(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) { |
| | | CheckIssueData checkIssueData = this.checkIssue(user, issueForm); |
| | | |
| | | Issue issue = checkIssueData.getIssue(); |
| | | Project project = checkIssueData.getProject(); |
| | | IssueType issueType = checkIssueData.getIssueType(); |
| | | IssueStatus oldIssueStatus = checkIssueData.getOldIssueStatus(); |
| | | IssueStatus issueStatus = checkIssueData.getNewIssueStatus(); |
| | | // 이슈 이력 남기기 |
| | | this.addIssueHistoryModify(user, issueForm, checkIssueData, multipartFiles); |
| | | |
| | | // db에 저장 |
| | | return this.saveIssue(issueForm, checkIssueData); |
| | | } |
| | | |
| | | private void addIssueHistoryModify(User user, IssueForm issueForm, CheckIssueData checkIssueData, List<MultipartFile> multipartFiles) { |
| | | // 변경 이력 정보 추출 |
| | | StringBuilder detectIssueChange = this.issueHistoryService.detectIssueChange(issueForm, checkIssueData, multipartFiles); |
| | | |
| | | // 프로젝트가 변경되면 이슈 넘버를 새로 따야 한다. |
| | | this.checkChangeProject(checkIssueData.getProject(), issue); |
| | | this.checkChangeProject(checkIssueData.getProject(), checkIssueData.getIssue()); |
| | | |
| | | // 이슈 유형이 변경되었는지 확인하고 변경되었다면 이슈 상태 속성이 '대기' 인 이슈 상태로 교체한다. |
| | | if (this.checkChangeIssueType(issueType, issueStatus, issue)) { |
| | | issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(issueType.getWorkflow()); |
| | | if (this.checkChangeIssueType(checkIssueData.getIssueType(), checkIssueData.getNewIssueStatus(), checkIssueData.getIssue())) { |
| | | checkIssueData.setNewIssueStatus(this.issueStatusService.findByIssueStatusTypeIsReady(checkIssueData.getIssueType().getWorkflow())); |
| | | // 이슈 상태 변경 이력 남기기 - 이력을 남기기 위해 issueForm 에 issueStatus Id 값을 저장. |
| | | issueForm.setIssueStatusId(issueStatus.getId()); |
| | | this.issueHistoryService.detectIssueStatus(issue, issueForm, detectIssueChange, oldIssueStatus, issueStatus); |
| | | issueForm.setIssueStatusId(checkIssueData.getNewIssueStatus().getId()); |
| | | this.issueHistoryService.detectIssueStatus(checkIssueData.getIssue(), issueForm, detectIssueChange, checkIssueData.getOldIssueStatus(), checkIssueData.getNewIssueStatus()); |
| | | } |
| | | |
| | | // db에 저장 |
| | | issue = this.saveIssue(issueForm, checkIssueData); |
| | | // checkIssueData.setIssue(this.saveIssue(issueForm, checkIssueData)); |
| | | |
| | | // 이슈 이력 등록 |
| | | if (!StringUtils.isEmpty(detectIssueChange.toString())) { |
| | | this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString()); |
| | | this.issueHistoryService.addIssueHistory(checkIssueData.getIssue(), user, IssueHistoryType.MODIFY, detectIssueChange.toString()); |
| | | } |
| | | // 사용자 시스템 기능 사용 정보 수집 |
| | | UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class); |
| | | log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(userVo, ElasticSearchConstants.ISSUE_MODIFY)); |
| | | |
| | | return issue; |
| | | } |
| | | |
| | | |
| | | |
| | | private Issue saveIssue(IssueForm issueForm, CheckIssueData checkIssueData) { |
| | | Issue issue = checkIssueData.getIssue(); |
| | | ConvertUtil.copyProperties(issueForm, issue, "id"); |