OWL ITS + 탐지시스템(인터넷 진흥원)
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -46,7 +46,11 @@
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import static kr.wisestone.owl.domain.enumType.CustomFieldType.DATETIME;
import static kr.wisestone.owl.domain.enumType.CustomFieldType.INPUT;
@Service
public class IssueServiceImpl extends AbstractServiceImpl<Issue, Long, JpaRepository<Issue, Long>> implements IssueService {
@@ -486,6 +490,8 @@
    @Override
    @Transactional
    public Issue addIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
        StringBuilder detectIssueChange = new StringBuilder();
        //  사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다.
        Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
        //  프로젝트 유효성 체크
@@ -528,11 +534,11 @@
        //  담당부서 지정
        this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
        //  업체 정보 저장
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
        //  ISP 정보 저장
        this.issueIspService.modifyIssueIspField(issue, issueForm);
        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
        //  HOSTING 정보 저장
        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
        //  첨부 파일 저장
        //  multipartFile 을 file Map List 객체로 변경한다.
@@ -579,6 +585,8 @@
    @Override
    @Transactional
    public Issue addDownIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
        StringBuilder detectIssueChange = new StringBuilder();
        //  사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다.
        Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
        //  프로젝트 유효성 체크
@@ -621,11 +629,11 @@
        //  담당부서 지정
        this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
        //  업체 정보 저장
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
        //  ISP 정보 저장
        this.issueIspService.modifyIssueIspField(issue, issueForm);
        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
        //  HOSTING 정보 저장
        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
        //  첨부 파일 저장
        //  multipartFile 을 file Map List 객체로 변경한다.
@@ -656,6 +664,7 @@
    @Override
    @Transactional
    public Issue addRelIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
        StringBuilder detectIssueChange = new StringBuilder();
        //  사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다.
        Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
        //  프로젝트 유효성 체크
@@ -698,11 +707,11 @@
        //  담당부서 지정
        this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
        //  업체 정보 저장
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
        //  ISP 정보 저장
        this.issueIspService.modifyIssueIspField(issue, issueForm);
        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
        //  HOSTING 정보 저장
        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
        //  첨부 파일 저장
        //  multipartFile 을 file Map List 객체로 변경한다.
@@ -804,7 +813,7 @@
                useValues.add(issueCustomFieldValueVo.getUseValue());
                customField.put(issueCustomFieldValueVo.getCustomFieldVo().getName(), useValues);
            } else {
                if (issueCustomFieldValueVo.getCustomFieldVo().getCustomFieldType().equals(CustomFieldType.INPUT.toString())) {
                if (issueCustomFieldValueVo.getCustomFieldVo().getCustomFieldType().equals(INPUT.toString())) {
                    customField.put(issueCustomFieldValueVo.getCustomFieldVo().getName(), issueCustomFieldValueVo.getUseValue());
                } else {
                    customField.put(issueCustomFieldValueVo.getCustomFieldVo().getName(), Lists.newArrayList(issueCustomFieldValueVo.getUseValue()));
@@ -2087,20 +2096,21 @@
        this.checkNotHaveIssueIdAttachedFile(issue, issueForm);
        //  사용자 정의 필드 저장
        this.issueCustomFieldValueService.modifyIssueCustomFieldValue(issue, issueForm.getIssueCustomFields());
        //  이슈 이력 등록
        if (!StringUtils.isEmpty(detectIssueChange.toString())) {
            this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString());
        }
        //  사용자 시스템 기능 사용 정보 수집
        UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class);
        log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(userVo, ElasticSearchConstants.ISSUE_MODIFY));
        //  업체 정보 저장
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
        //  ISP 정보 저장
        this.issueIspService.modifyIssueIspField(issue, issueForm);
        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
        //  HOSTING 정보 저장
        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
        //  이슈 이력 등록
        if (!StringUtils.isEmpty(detectIssueChange.toString())) {
            this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString());
        }
        return issue;
    }
@@ -3330,6 +3340,15 @@
        }
    }
    /**
     * cell NULL 체크 함수
     * @param cell Cell
     * @return boolean
     */
    private Boolean cellNullCheck (Cell cell) {
        return cell != null && cell.getStringCellValue() != null && cell.getCellType() != Cell.CELL_TYPE_BLANK;
    }
    //  엑셀 필드에 있는 정보를 이슈 form 으로 옮긴다.
    private IssueForm setIssueFormToExcelField(Row row, int rowIndex, Map<String, Priority> priorityMaps,
                                               Map<String, Severity> severityMaps, Map<String, DepartmentVo> departmentMaps,
@@ -3348,7 +3367,7 @@
                    break;
                case 1:    //  내용
                    if (cell != null) {
                    if (cellNullCheck(cell)) {
                        issueForm.setDescription(CommonUtil.convertExcelStringToCell(cell));
                    } else {
                        //  null 입력 방지
@@ -3372,13 +3391,13 @@
                    break;*/
                case 4:
                    //  시작일을 IssueForm 에 저장한다.
                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
                    if (cellNullCheck(cell)) {
                        this.setIssueFormPeriod(cell, issueForm, true, rowIndex);
                    }
                    break;
                case 5:
                    //  종료일을 IssueForm 에 저장한다.
                    if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
                    if (cellNullCheck(cell)) {
                        this.setIssueFormPeriod(cell, issueForm, false, rowIndex);
                    }
                    break;
@@ -3549,11 +3568,16 @@
                case EMAIL:
                case SITE:
                case TEL:
                    if (cellValue.length() > 100) {
                    if (customField.getCustomFieldType() != INPUT && cellValue.length() > 100) { //INPUT 타입은 100자 제한 없음
                        throw new OwlRuntimeException(
                                this.messageAccessor.getMessage(MsgConstants.CUSTOM_FIELD_TEXT_TYPE_MAX_LENGTH_OUT));
                    }
                    if (customField.getCustomFieldType() == DATETIME) { //DATETIME일 경우 format 변경
                        Date date = cell.getDateCellValue();
                        cellValue = new SimpleDateFormat("yyyy-MM-dd H:mm:ss").format(date);
                    }
                    issueCustomFieldMap.put("customFieldId", customField.getId());
                    issueCustomFieldMap.put("useValue", cellValue);
                    issueForm.addIssueCustomFields(issueCustomFieldMap);