OWL ITS + 탐지시스템(인터넷 진흥원)
이슈 히스토리 - 중복되어서 나오는 문제 해결 및 업체에 추가된 항목들도 변경 시 이력 남기도록 수정
10개 파일 변경됨
360 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/CompanyFieldService.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/IssueCompanyService.java 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/IssueHostingService.java 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/IssueIspService.java 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java 56 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java 184 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java 15 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java 56 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 38 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/CompanyFieldService.java
@@ -38,4 +38,6 @@
    ModelAndView downloadExcelTemplate(HttpServletRequest request, Model model);
    void importExcel(MultipartFile multipartFile) throws Exception;
    CompanyFieldVo CreateCompanyFieldCategory(CompanyFieldVo companyFieldVo, CompanyField companyField);
}
src/main/java/kr/wisestone/owl/service/IssueCompanyService.java
@@ -10,7 +10,7 @@
import java.util.Map;
public interface IssueCompanyService extends AbstractService<IssueCompany, Long, JpaRepository<IssueCompany, Long>>{
    void modifyIssueCompanyField(Issue issue, IssueForm issueForm);
    void modifyIssueCompanyField(Issue issue, IssueForm issueForm, StringBuilder detectIssueChange);
    List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
}
src/main/java/kr/wisestone/owl/service/IssueHostingService.java
@@ -10,7 +10,7 @@
import java.util.Map;
public interface IssueHostingService extends AbstractService<IssueHosting, Long, JpaRepository<IssueHosting, Long>>{
    void modifyIssueHostingField(Issue issue, IssueForm issueForm);
    void modifyIssueHostingField(Issue issue, IssueForm issueForm, StringBuilder detectIssueChange);
    List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
}
src/main/java/kr/wisestone/owl/service/IssueIspService.java
@@ -10,7 +10,7 @@
import java.util.Map;
public interface IssueIspService extends AbstractService<IssueIsp, Long, JpaRepository<IssueIsp, Long>>{
    void modifyIssueIspField(Issue issue, IssueForm issueForm);
    void modifyIssueIspField(Issue issue, IssueForm issueForm, StringBuilder detectIssueChange);
    List<Map<String, Object>> findInIssueIds(IssueCondition issueCondition);
}
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -147,7 +147,8 @@
     * @param companyFieldVo CompanyFieldVo
     * @param companyField CompanyField
     */
    private CompanyFieldVo CreateCompanyFieldCategory(CompanyFieldVo companyFieldVo, CompanyField companyField) {
    @Override
    public CompanyFieldVo CreateCompanyFieldCategory(CompanyFieldVo companyFieldVo, CompanyField companyField) {
        if (companyField.getCompanyTypeId() != null && companyField.getCompanyTypeId() != -1) {
            CompanyFieldCategory companyType = this.companyFieldCategoryService.find(companyField.getCompanyTypeId());
            if (companyType != null) {
src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
@@ -7,6 +7,7 @@
import kr.wisestone.owl.service.*;
import kr.wisestone.owl.util.ConvertUtil;
import kr.wisestone.owl.util.MapUtil;
import kr.wisestone.owl.vo.CompanyFieldVo;
import kr.wisestone.owl.web.condition.IssueCondition;
import kr.wisestone.owl.web.form.CompanyFieldForm;
import kr.wisestone.owl.web.form.IspFieldForm;
@@ -50,7 +51,7 @@
     * @param issueForm IssueForm
     * @param issue Issue
     */
    private void CreateCompanyField(IssueForm issueForm, Issue issue) {
    private void CreateCompanyField(IssueForm issueForm, Issue issue, StringBuilder sb) {
        CompanyFieldForm companyFieldForm = new CompanyFieldForm();
        companyFieldForm.setName(issueForm.getCompanyName());
@@ -67,7 +68,6 @@
        IssueCompany newIssueCompany = CreateIssueCompany(companyFieldForm, issue);
        CompanyField companyField = new CompanyField();
        StringBuilder sb = new StringBuilder();
        // 사용자가 직접 입력 시 COMPANY 목록에 추가
        if (newIssueCompany.getCompanyField() == null) {
@@ -82,8 +82,6 @@
                issueHistoryService.detectIssueCompany(IssueHistoryType.ADD, null, companyFieldForm, newIssueCompany, sb);
            }
        }
        // 추가 이력
        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
        this.issueCompanyRepository.saveAndFlush(newIssueCompany);
    }
@@ -106,20 +104,27 @@
    //  이슈에서 사용되는 업체 값을 업데이트한다.
    @Override
    @Transactional
    public void modifyIssueCompanyField(Issue issue, IssueForm issueForm) {
    public void modifyIssueCompanyField(Issue issue, IssueForm issueForm, StringBuilder sb) {
        if (issue != null) {
            StringBuilder sb = new StringBuilder();
            IssueCompany issueCompany = this.issueCompanyRepository.findByIssueId(issue.getId());
            List<Map<String, Object>> issueCompanyFields = issueForm.getIssueCompanyFields();
            if (issueCompanyFields != null && issueCompanyFields.size() > 0) {
                Map<String, Object> param = issueCompanyFields.get(0);
                CompanyFieldVo companyFieldVo = new CompanyFieldVo();
                CompanyField companyField = ConvertUtil.convertMapToClass(param, CompanyField.class);
                companyFieldVo = this.companyFieldService.CreateCompanyFieldCategory(companyFieldVo, companyField);
                param.put("companyTypeName", companyFieldVo.getCompanyTypeName());
                param.put("parentSectorName", companyFieldVo.getParentSectorName());
                param.put("childSectorName", companyFieldVo.getChildSectorName());
                param.put("regionName", companyFieldVo.getRegionName());
                param.put("statusName", companyFieldVo.getStatusName());
                if (issueCompany != null) { //수정 시
                    // 변경 이력 먼저 남기고 issueCompany에 set하기
                    issueHistoryService.detectIssueCompany(IssueHistoryType.MODIFY, param, null, issueCompany, sb);
                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                    issueCompany.setName(MapUtil.getString(param, "name"));
                    issueCompany.setEmail(MapUtil.getString(param, "email"));
                    issueCompany.setUrl(MapUtil.getString(param, "url"));
@@ -139,49 +144,30 @@
                    IssueCompany newIssueCompany = CreateIssueCompany(companyFieldForm, issue);
                    CompanyFieldCategory companyType = this.companyFieldCategoryService.find(companyFieldForm.getCompanyTypeId());
                    if (companyType != null) {
                        companyFieldForm.setCompanyTypeName(companyType.getUseValue());
                    }
                    CompanyFieldCategory parentSector = this.companyFieldCategoryService.find(companyFieldForm.getParentSectorId());
                    if (parentSector != null) {
                        companyFieldForm.setParentSectorName(parentSector.getUseValue());
                    }
                    CompanyFieldCategory childSector = this.companyFieldCategoryService.find(companyFieldForm.getChildSectorId());
                    if (childSector != null) {
                        companyFieldForm.setChildSectorName(childSector.getUseValue());
                    }
                    CompanyFieldCategory region = this.companyFieldCategoryService.find(companyFieldForm.getRegionId());
                    if (region != null) {
                        companyFieldForm.setRegionName(region.getUseValue());
                    }
                    CompanyFieldCategory status = this.companyFieldCategoryService.find(companyFieldForm.getStatusId());
                    if (status != null) {
                        companyFieldForm.setStatusName(status.getUseValue());
                    }
                    companyFieldVo = this.companyFieldService.CreateCompanyFieldCategory(companyFieldVo, companyField);
                    companyFieldForm.setCompanyTypeName(companyFieldVo.getCompanyTypeName());
                    companyFieldForm.setParentSectorName(companyFieldVo.getParentSectorName());
                    companyFieldForm.setChildSectorName(companyFieldVo.getChildSectorName());
                    companyFieldForm.setRegionName(companyFieldVo.getRegionName());
                    companyFieldForm.setStatusName(companyFieldVo.getStatusName());
                    // 추가 이력
                    issueHistoryService.detectIssueCompany(IssueHistoryType.ADD, param, companyFieldForm, newIssueCompany, sb);
                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                    this.issueCompanyRepository.saveAndFlush(newIssueCompany);
                }
            } else if(issueForm.getCompanyName() != null && !issueForm.getCompanyName().equals("")) {
                //업체정보 직접 추가
                CreateCompanyField(issueForm, issue);
                CreateCompanyField(issueForm, issue, sb);
            } else {
                this.issueCompanyRepository.deleteByIssueId(issue.getId());
                this.issueCompanyRepository.flush();
                if (issueCompany != null) {
                    issueHistoryService.detectIssueCompany(IssueHistoryType.DELETE, null, null, issueCompany, sb);
                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                }
            }
            //issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
        }
    }
src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
@@ -560,7 +560,7 @@
        Long companyFieldId = 0L;
        Long id = 0L;
        String name = "";
        /*String manager = "";
        String manager = "";
        String tel = "";
        String email = "";
        String memo = "";
@@ -573,32 +573,42 @@
        String parentSectorName = "";
        String childSectorName = "";
        String regionName = "";
        String statusName = "";*/
        String statusName = "";
        if (param != null) {
            id = MapUtil.getLong(param, "companyId");
            name = MapUtil.getString(param, "name");
            /*manager = MapUtil.getString(param, "manager");
            manager = MapUtil.getString(param, "manager");
            tel = MapUtil.getString(param, "tel");
            email = MapUtil.getString(param, "email");
            memo = MapUtil.getString(param, "memo");
            companyTypeId = MapUtil.getLong(param, "companyTypeId");
            parentSectorId = MapUtil.getLong(param, "parentSectorId");
            childSectorId = MapUtil.getLong(param, "childSectorId");
            regionId = MapUtil.getLong(param, "regionId");
            statusId = MapUtil.getLong(param, "statusId");
            companyTypeName = MapUtil.getString(param, "companyTypeName");
            parentSectorName = MapUtil.getString(param, "parentSectorName");
            childSectorName = MapUtil.getString(param, "childSectorName");
            regionName = MapUtil.getString(param, "regionName");
            statusName = MapUtil.getString(param, "statusName");*/
            statusName = MapUtil.getString(param, "statusName");
        }else if(companyFieldForm != null) {
            id = companyFieldForm.getId();
            name = companyFieldForm.getName();
            /*manager = companyFieldForm.getManager();
            manager = companyFieldForm.getManager();
            tel = companyFieldForm.getTel();
            email = companyFieldForm.getEmail();
            memo = companyFieldForm.getMemo();
            companyTypeId = companyFieldForm.getCompanyTypeId();
            parentSectorId = companyFieldForm.getParentSectorId();
            childSectorId = companyFieldForm.getChildSectorId();
            regionId = companyFieldForm.getRegionId();
            statusId = companyFieldForm.getStatusId();
            companyTypeName = companyFieldForm.getCompanyTypeName();
            parentSectorName = companyFieldForm.getParentSectorName();
            childSectorName = companyFieldForm.getChildSectorName();
            regionName = companyFieldForm.getRegionName();
            statusName = companyFieldForm.getStatusName();*/
            statusName = companyFieldForm.getStatusName();
        }
        if (issueCompany.getCompanyField() != null && issueCompany.getCompanyField().getId() != null) {
            companyFieldId = issueCompany.getCompanyField().getId();
@@ -611,43 +621,45 @@
            if (id != null && !companyFieldId.equals(id)) {
                description.append("<span translate=\"issue.issueCompanyModifyHistory\">업체 정보가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + name + "</span>");
            } else {
                if (companyFieldId.equals(id) && manager != null && (issueCompany.getManager() == null || !issueCompany.getManager().equals(manager))) {
                    description.append("<span translate=\"issue.issueCompanyModifyManagerHistory\">&nbsp;>&nbsp;업체 정보의 담당자가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
                }
                if (companyFieldId.equals(id) && tel != null && (issueCompany.getTel() == null || !issueCompany.getTel().equals(tel))) {
                    description.append("<span translate=\"issue.issueCompanyModifyTelHistory\">&nbsp;>&nbsp;업체 정보의 전화번호가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
                }
                if (companyFieldId.equals(id) && email != null && (issueCompany.getEmail() == null || !issueCompany.getEmail().equals(email))) {
                    description.append("<span translate=\"issue.issueCompanyModifyEmailHistory\">&nbsp;>&nbsp;업체 정보의 이메일이 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
                }
                if (companyFieldId.equals(id) && memo != null && (issueCompany.getMemo() == null || !issueCompany.getMemo().equals(memo))) {
                    description.append("<span translate=\"issue.issueCompanyModifyMemoHistory\">&nbsp;>&nbsp;업체 정보의 비고가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
                }
                if (companyFieldId.equals(id) && companyTypeName != null && (issueCompany.getCompanyTypeId() == null || !issueCompany.getCompanyTypeId().equals(companyTypeId))) {
                    description.append("<span translate=\"issue.issueCompanyModifyCompanyTypeHistory\">&nbsp;>&nbsp;업체 정보의 기업구분이 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + companyTypeName + "</span>");
                }
                if (companyFieldId.equals(id) && parentSectorName != null && (issueCompany.getParentSectorId() == null || !issueCompany.getParentSectorId().equals(parentSectorId))) {
                    description.append("<span translate=\"issue.issueCompanyModifyParentSectorHistory\">&nbsp;>&nbsp;업체 정보의 업종(대분류)이 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + parentSectorName + "</span>");
                }
                if (companyFieldId.equals(id) && childSectorName != null && (issueCompany.getChildSectorId() == null || !issueCompany.getChildSectorId().equals(childSectorId))) {
                    description.append("<span translate=\"issue.issueCompanyModifyChildSectorHistory\">&nbsp;>&nbsp;업체 정보의 업종(중분류)이 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + childSectorName + "</span>");
                }
                if (companyFieldId.equals(id) && statusName != null && (issueCompany.getStatusId() == null || !issueCompany.getStatusId().equals(statusId))) {
                    description.append("<span translate=\"issue.issueCompanyModifyStatusHistory\">&nbsp;>&nbsp;업체 정보의 상태가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + statusName + "</span>");
                }
                if (companyFieldId.equals(id) && regionName != null && (issueCompany.getRegionId() == null || !issueCompany.getRegionId().equals(regionId))) {
                    description.append("<span translate=\"issue.issueCompanyModifyRegionHistory\">&nbsp;>&nbsp;업체 정보의 지역이 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + regionName + "</span>");
                }
            }
            /*if (companyFieldId.equals(id) && manager != null && (issueCompany.getManager() == null || !issueCompany.getManager().equals(manager))) {
                description.append("<span translate=\"issue.issueCompanyModifyManagerHistory\">&nbsp;>&nbsp;업체 정보의 담당자가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
            }
            if (companyFieldId.equals(id) && tel != null && (issueCompany.getTel() == null || !issueCompany.getTel().equals(tel))) {
                description.append("<span translate=\"issue.issueCompanyModifyTelHistory\">&nbsp;>&nbsp;업체 정보의 전화번호가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
            }
            if (companyFieldId.equals(id) && email != null && (issueCompany.getEmail() == null || !issueCompany.getEmail().equals(email))) {
                description.append("<span translate=\"issue.issueCompanyModifyEmailHistory\">&nbsp;>&nbsp;업체 정보의 이메일이 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
            }
            if (companyFieldId.equals(id) && memo != null && (issueCompany.getMemo() == null || !issueCompany.getMemo().equals(memo))) {
                description.append("<span translate=\"issue.issueCompanyModifyMemoHistory\">&nbsp;>&nbsp;업체 정보의 비고가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
            }
            if (companyFieldId.equals(id) && companyTypeName != null && (issueCompany.getCompanyTypeId() == null || !issueCompany.getCompanyTypeId().equals(companyTypeId))) {
                description.append("<span translate=\"issue.issueCompanyModifyCompanyTypeHistory\">&nbsp;>&nbsp;업체 정보의 기업구분이 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + companyTypeName + "</span>");
            }
            if (companyFieldId.equals(id) && parentSectorName != null && (issueCompany.getParentSectorId() == null || !issueCompany.getParentSectorId().equals(parentSectorId))) {
                description.append("<span translate=\"issue.issueCompanyModifyParentSectorHistory\">&nbsp;>&nbsp;업체 정보의 업종(대분류)이 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + parentSectorName + "</span>");
            }
            if (companyFieldId.equals(id) && childSectorName != null && (issueCompany.getChildSectorId() == null || !issueCompany.getChildSectorId().equals(childSectorId))) {
                description.append("<span translate=\"issue.issueCompanyModifyChildSectorHistory\">&nbsp;>&nbsp;업체 정보의 업종(중분류)이 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + childSectorName + "</span>");
            }
            if (companyFieldId.equals(id) && statusName != null && (issueCompany.getStatusId() == null || !issueCompany.getStatusId().equals(statusId))) {
                description.append("<span translate=\"issue.issueCompanyModifyStatusHistory\">&nbsp;>&nbsp;업체 정보의 상태가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + statusName + "</span>");
            }
            if (companyFieldId.equals(id) && regionName != null && (issueCompany.getRegionId() == null || !issueCompany.getRegionId().equals(regionId))) {
                description.append("<span translate=\"issue.issueCompanyModifyRegionHistory\">&nbsp;>&nbsp;업체 정보의 지역이 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + regionName + "</span>");
            }*/
        } else {
            description.append("<span translate=\"issue.issueCompanyRemoveHistory\">업체 정보가 삭제되었습니다. " + issueCompany.getCompanyField().getName() + "</span>");
            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueCompany.getCompanyField().getName() + "</span>");
@@ -667,17 +679,17 @@
        if (param != null) {
            id = MapUtil.getLong(param, "ispId");
            name = MapUtil.getString(param, "name");
            /*manager = MapUtil.getString(param, "manager");
            manager = MapUtil.getString(param, "manager");
            tel = MapUtil.getString(param, "tel");
            email = MapUtil.getString(param, "email");
            memo = MapUtil.getString(param, "memo");*/
            memo = MapUtil.getString(param, "memo");
        }else if(ispFieldForm != null) {
            id = ispFieldForm.getId();
            name = ispFieldForm.getName();
            /*manager = ispFieldForm.getManager();
            manager = ispFieldForm.getManager();
            tel = ispFieldForm.getTel();
            email = ispFieldForm.getEmail();
            memo = ispFieldForm.getMemo();*/
            memo = ispFieldForm.getMemo();
        }
        if (issueIsp.getIspField() != null && issueIsp.getIspField().getId() != null) {
@@ -691,23 +703,24 @@
            if (id != null && !ispFieldId.equals(id)) { //수정 할 경우
                description.append("<span translate=\"issue.issueIspModifyHistory\">ISP 정보가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + name + "</span>");
            } else {
                if (ispFieldId.equals(id) && manager != null && (issueIsp.getManager() == null || !issueIsp.getManager().equals(manager))) {
                    description.append("<span translate=\"issue.issueIspModifyManagerHistory\">ISP 정보의 담당자가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
                }
                if (ispFieldId.equals(id) && tel != null && (issueIsp.getTel() == null || !issueIsp.getTel().equals(tel))) {
                    description.append("<span translate=\"issue.issueIspModifyTelHistory\">ISP 정보의 전화번호가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
                }
                if (ispFieldId.equals(id) && email != null && (issueIsp.getEmail() == null || !issueIsp.getEmail().equals(email))) {
                    description.append("<span translate=\"issue.issueIspModifyEmailHistory\">ISP 정보의 이메일이 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
                }
                if (ispFieldId.equals(id) && memo != null && (issueIsp.getMemo() == null || !issueIsp.getMemo().equals(memo))) {
                    description.append("<span translate=\"issue.issueIspModifyMemoHistory\">ISP 정보의 비고가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
                }
            }
            /*if (ispFieldId.equals(id) && manager != null && (issueIsp.getManager() == null || !issueIsp.getManager().equals(manager))) {
                description.append("<span translate=\"issue.issueIspModifyManagerHistory\">ISP 정보의 담당자가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
            }
            if (ispFieldId.equals(id) && tel != null && (issueIsp.getTel() == null || !issueIsp.getTel().equals(tel))) {
                description.append("<span translate=\"issue.issueIspModifyTelHistory\">ISP 정보의 전화번호가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
            }
            if (ispFieldId.equals(id) && email != null && (issueIsp.getEmail() == null || !issueIsp.getEmail().equals(email))) {
                description.append("<span translate=\"issue.issueIspModifyEmailHistory\">ISP 정보의 이메일이 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
            }
            if (ispFieldId.equals(id) && memo != null && (issueIsp.getMemo() == null || !issueIsp.getMemo().equals(memo))) {
                description.append("<span translate=\"issue.issueIspModifyMemoHistory\">ISP 정보의 비고가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
            }*/
        } else {
            description.append("<span translate=\"issue.issueIspRemoveHistory\">ISP 정보가 삭제되었습니다. " + issueIsp.getIspField().getName() + "</span>");
            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueIsp.getIspField().getName() + "</span>");
@@ -727,17 +740,17 @@
        if (param != null) {
            id = MapUtil.getLong(param, "hostingId");
            name = MapUtil.getString(param, "name");
            /*manager = MapUtil.getString(param, "manager");
            manager = MapUtil.getString(param, "manager");
            tel = MapUtil.getString(param, "tel");
            email = MapUtil.getString(param, "email");
            memo = MapUtil.getString(param, "memo");*/
            memo = MapUtil.getString(param, "memo");
        }else if(hostingFieldForm != null) {
            id = hostingFieldForm.getId();
            name = hostingFieldForm.getName();
            /*manager = hostingFieldForm.getManager();
            manager = hostingFieldForm.getManager();
            tel = hostingFieldForm.getTel();
            email = hostingFieldForm.getEmail();
            memo = hostingFieldForm.getMemo();*/
            memo = hostingFieldForm.getMemo();
        }
        if (issueHosting.getHostingField() != null && issueHosting.getHostingField().getId() != null) {
@@ -751,23 +764,24 @@
            if(id != null && !hostingFieldId.equals(id)){ //수정 할 경우
                description.append("<span translate=\"issue.issueHostingModifyHistory\">호스팅 정보가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + name + "</span>");
            } else {
                if(hostingFieldId.equals(id) && manager != null && (issueHosting.getManager() == null || !issueHosting.getManager().equals(manager))){
                    description.append("<span translate=\"issue.issueHostingModifyManagerHistory\">호스팅 정보의 담당자가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
                }
                if(hostingFieldId.equals(id) && tel != null && (issueHosting.getTel() == null || !issueHosting.getTel().equals(tel))){
                    description.append("<span translate=\"issue.issueHostingModifyTelHistory\">호스팅 정보의 전화번호가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
                }
                if(hostingFieldId.equals(id) && email != null && (issueHosting.getEmail() == null || !issueHosting.getEmail().equals(email))){
                    description.append("<span translate=\"issue.issueHostingModifyEmailHistory\">호스팅 정보의 이메일이 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
                }
                if(hostingFieldId.equals(id) && memo != null && (issueHosting.getMemo() == null || !issueHosting.getMemo().equals(memo))){
                    description.append("<span translate=\"issue.issueHostingModifyMemoHistory\">호스팅 정보의 비고가 변경되었습니다. </span>");
                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
                }
            }
            /*if(hostingFieldId.equals(id) && manager != null && (issueHosting.getManager() == null || !issueHosting.getManager().equals(manager))){
                description.append("<span translate=\"issue.issueHostingModifyManagerHistory\">호스팅 정보의 담당자가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + manager + "</span>");
            }
            if(hostingFieldId.equals(id) && tel != null && (issueHosting.getTel() == null || !issueHosting.getTel().equals(tel))){
                description.append("<span translate=\"issue.issueHostingModifyTelHistory\">호스팅 정보의 전화번호가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + tel + "</span>");
            }
            if(hostingFieldId.equals(id) && email != null && (issueHosting.getEmail() == null || !issueHosting.getEmail().equals(email))){
                description.append("<span translate=\"issue.issueHostingModifyEmailHistory\">호스팅 정보의 이메일이 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + email + "</span>");
            }
            if(hostingFieldId.equals(id) && memo != null && (issueHosting.getMemo() == null || !issueHosting.getMemo().equals(memo))){
                description.append("<span translate=\"issue.issueHostingModifyMemoHistory\">호스팅 정보의 비고가 변경되었습니다. </span>");
                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + memo + "</span>");
            }*/
        } else {
            description.append("<span translate=\"issue.issueHostingRemoveHistory\">호스팅 정보가 삭제되었습니다. " + issueHosting.getHostingField().getName() + "</span>");
            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueHosting.getHostingField().getName() + "</span>");
@@ -948,6 +962,12 @@
            switch (customField.getCustomFieldType()) {
                case INPUT :
                case SINGLE_SELECT :
                case NUMBER :
                case DATETIME :
                case IP_ADDRESS :
                case EMAIL :
                case SITE :
                case TEL :
                    boolean existIssueCustomFieldValue = false;
                    for (IssueCustomFieldValue savedIssueCustomFieldValue : issue.getIssueCustomFieldValues()) {
src/main/java/kr/wisestone/owl/service/impl/IssueHostingServiceImpl.java
@@ -52,8 +52,7 @@
     * @param issueForm IssueForm
     * @param issue Issue
     */
    private void CreateHostingField(IssueForm issueForm, Issue issue) {
        StringBuilder sb = new StringBuilder();
    private void CreateHostingField(IssueForm issueForm, Issue issue, StringBuilder sb) {
        // issueHosting 필드 폼 만들기
        HostingFieldForm hostingFieldForm = new HostingFieldForm();
        hostingFieldForm.setName(issueForm.getHostingName());
@@ -80,8 +79,6 @@
                issueHistoryService.detectIssueHosting(IssueHistoryType.ADD, null, hostingFieldForm, newIssueHosting, sb);
            }
        }
        // 추가 이력
        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
        this.issueHostingRepository.saveAndFlush(newIssueHosting);
    }
@@ -117,10 +114,9 @@
    //  이슈에서 사용되는 업체 값을 업데이트한다.
    @Override
    @Transactional
    public void modifyIssueHostingField(Issue issue, IssueForm issueForm) {
    public void modifyIssueHostingField(Issue issue, IssueForm issueForm, StringBuilder sb) {
        if (issue != null) {
            IssueHosting issueHosting = this.issueHostingRepository.findByIssueId(issue.getId());
            StringBuilder sb = new StringBuilder();
            List<Map<String, Object>> issueHostingFields = issueForm.getIssueHostingFields();
            if (issueHostingFields != null && issueHostingFields.size() > 0) {
                Map<String, Object> param = issueHostingFields.get(0);
@@ -128,7 +124,6 @@
                if (issueHosting != null) { //수정 시
                    // 변경 이력 남기고 issueHosting에 set 해주기
                    issueHistoryService.detectIssueHosting(IssueHistoryType.MODIFY, param, null, issueHosting, sb);
                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                    issueHosting.setName(MapUtil.getString(param, "name"));
                    issueHosting.setEmail(MapUtil.getString(param, "email"));
@@ -144,21 +139,21 @@
                    IssueHosting newIssueHosting = CreateIssueHosting(param, issue);
                    // 추가 이력
                    issueHistoryService.detectIssueHosting(IssueHistoryType.ADD, param, null, newIssueHosting, sb);
                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                    this.issueHostingRepository.saveAndFlush(newIssueHosting);
                }
            }else if (issueForm.getHostingName() != null && !issueForm.getHostingName().equals("")) {
                // 호스팅 정보 직접 추가
                CreateHostingField(issueForm, issue);
                CreateHostingField(issueForm, issue, sb);
            } else {
                this.issueHostingRepository.deleteByIssueId(issue.getId());
                this.issueHostingRepository.flush();
                if (issueHosting != null) {
                    issueHistoryService.detectIssueHosting(IssueHistoryType.DELETE, null, null, issueHosting, sb);
                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                }
            }
            //issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
        }
    }
src/main/java/kr/wisestone/owl/service/impl/IssueIspServiceImpl.java
@@ -49,7 +49,7 @@
     * @param issueForm IssueForm
     * @param issue Issue
     */
    private void CreateIspField(IssueForm issueForm, Issue issue) {
    private void CreateIspField(IssueForm issueForm, Issue issue, StringBuilder sb) {
        // issueIsp 필드 폼 만들기
        IspFieldForm ispFieldForm = new IspFieldForm();
        ispFieldForm.setName(issueForm.getIspName());
@@ -62,7 +62,6 @@
        IssueIsp newIssueIsp = CreateIssueIsp(ispFieldForm, issue);
        IspField ispField = new IspField();
        StringBuilder sb = new StringBuilder();
        // 사용자가 직접 입력시에 ISP 목록에 추가
        if (newIssueIsp.getIspField() == null) {
@@ -77,8 +76,6 @@
                issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, null, ispFieldForm, newIssueIsp, sb);
            }
        }
        // 추가 이력
        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
        this.issueIspRepository.saveAndFlush(newIssueIsp);
    }
@@ -116,50 +113,47 @@
    //  이슈에서 사용되는 업체 값을 업데이트한다.
    @Override
    @Transactional
    public void modifyIssueIspField(Issue issue, IssueForm issueForm) {
    public void modifyIssueIspField(Issue issue, IssueForm issueForm, StringBuilder sb) {
        if (issue != null) {
            StringBuilder sb = new StringBuilder();
            IssueIsp issueIsp = this.issueIspRepository.findByIssueId(issue.getId());
            List<Map<String, Object>> issueIspFields = issueForm.getIssueIspFields();
            if (issueIspFields != null && issueIspFields.size() > 0) {
                Map<String, Object> param = issueIspFields.get(0);
                    if (issueIsp != null) {//수정 시
                        // 변경 이력 남기고 issueIsp에 set해주기
                        issueHistoryService.detectIssueIsp(IssueHistoryType.MODIFY, param, null, issueIsp, sb);
                        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                if (issueIsp != null) {//수정 시
                    // 변경 이력 남기고 issueIsp에 set해주기
                    issueHistoryService.detectIssueIsp(IssueHistoryType.MODIFY, param, null, issueIsp, sb);
                        issueIsp.setName(MapUtil.getString(param, "name"));
                        issueIsp.setEmail(MapUtil.getString(param, "email"));
                        issueIsp.setCode(MapUtil.getString(param, "code"));
                        issueIsp.setUrl(MapUtil.getString(param, "url"));
                        issueIsp.setManager(MapUtil.getString(param, "manager"));
                        issueIsp.setTel(MapUtil.getString(param, "tel"));
                        issueIsp.setMemo(MapUtil.getString(param, "memo"));
                    issueIsp.setName(MapUtil.getString(param, "name"));
                    issueIsp.setEmail(MapUtil.getString(param, "email"));
                    issueIsp.setCode(MapUtil.getString(param, "code"));
                    issueIsp.setUrl(MapUtil.getString(param, "url"));
                    issueIsp.setManager(MapUtil.getString(param, "manager"));
                    issueIsp.setTel(MapUtil.getString(param, "tel"));
                    issueIsp.setMemo(MapUtil.getString(param, "memo"));
                        this.issueIspRepository.saveAndFlush(issueIsp);
                    this.issueIspRepository.saveAndFlush(issueIsp);
                    } else { //추가 시
                        IssueIsp newIssueIsp = CreateIssueIsp(param, issue);
                        // 추가 이력
                        issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, param, null, newIssueIsp, sb);
                        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                        this.issueIspRepository.saveAndFlush(newIssueIsp);
                    }
            } // 사용자가 직접 입력시
            else if (issueForm.getIspName() != null && !issueForm.getIspName().equals("")) {
                } else { //추가 시
                    IssueIsp newIssueIsp = CreateIssueIsp(param, issue);
                    // 추가 이력
                    issueHistoryService.detectIssueIsp(IssueHistoryType.ADD, param, null, newIssueIsp, sb);
                    this.issueIspRepository.saveAndFlush(newIssueIsp);
                }
            } else if (issueForm.getIspName() != null && !issueForm.getIspName().equals("")) {
                //ISP정보 직접 추가
                CreateIspField(issueForm, issue);
            }
            else {
                CreateIspField(issueForm, issue, sb);
            } else {
                this.issueIspRepository.deleteByIssueId(issue.getId());
                this.issueIspRepository.flush();
                if (issueIsp != null) {
                    issueHistoryService.detectIssueIsp(IssueHistoryType.DELETE, null, null, issueIsp, sb);
                    issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
                }
            }
            //issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
        }
    }
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -486,6 +486,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 +530,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 +581,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 +625,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 +660,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 +703,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 객체로 변경한다.
@@ -2087,20 +2092,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;
    }