src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java
@@ -8,4 +8,5 @@ CompanyField findByUrl(@Param("url") String url); CompanyField findByUrlAndIdNot(@Param("url") String url, @Param("id") Long id); } src/main/java/kr/wisestone/owl/repository/HostingFieldRepository.java
@@ -1,8 +1,13 @@ package kr.wisestone.owl.repository; import kr.wisestone.owl.domain.CompanyField; import kr.wisestone.owl.domain.HostingField; import kr.wisestone.owl.domain.IspField; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; public interface HostingFieldRepository extends JpaRepository<HostingField, Long> { HostingField findByUrl(@Param("url") String url); HostingField findByUrlAndIdNot(@Param("url") String url, @Param("id") Long id); } src/main/java/kr/wisestone/owl/repository/IspFieldRepository.java
@@ -1,8 +1,12 @@ package kr.wisestone.owl.repository; import kr.wisestone.owl.domain.CompanyField; import kr.wisestone.owl.domain.IspField; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; public interface IspFieldRepository extends JpaRepository<IspField, Long> { IspField findByUrl(@Param("url") String url); IspField findByUrlAndIdNot(@Param("url") String url, @Param("id") Long id); } src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -2,6 +2,10 @@ import kr.wisestone.owl.domain.CompanyField; import kr.wisestone.owl.domain.CustomField; import kr.wisestone.owl.domain.HostingField; import kr.wisestone.owl.domain.IspField; import kr.wisestone.owl.repository.HostingFieldRepository; import kr.wisestone.owl.repository.IspFieldRepository; import kr.wisestone.owl.service.UserService; import kr.wisestone.owl.web.condition.CompanyFieldCondition; import kr.wisestone.owl.web.form.CompanyFieldForm; @@ -40,6 +44,12 @@ private CompanyFieldMapper companyFieldMapper; @Autowired private IspFieldRepository ispFieldRepository; @Autowired private HostingFieldRepository hostingFieldRepository; @Autowired private UserService userService; @Autowired @@ -60,7 +70,7 @@ @Override public CompanyField addCompany(CompanyFieldForm companyFieldForm) { // url 유효성 체크 this.verifyUrl(companyFieldForm.getUrl()); this.verifyUrl(companyFieldForm.getUrl(), null); CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class); companyFieldRepository.saveAndFlush(companyField); @@ -68,12 +78,18 @@ } // url 유효성 체크 private void verifyUrl(String url) { private void verifyUrl(String url, Long id) { if (StringUtils.isEmpty(url)) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL)); } CompanyField companyField = this.companyFieldRepository.findByUrl(url); CompanyField companyField; if(id == null){ companyField = this.companyFieldRepository.findByUrl(url); } else { companyField = this.companyFieldRepository.findByUrlAndIdNot(url,id); } if (companyField != null) { throw new OwlRuntimeException( @@ -94,7 +110,6 @@ return this.convertCompanyVoToMap(results, totalCompanyCount, pageable, resJsonData); } // 업체 상세 조회한다. @Override public void detailCompany(Map<String, Object> resJsonData, CompanyFieldCondition companyFieldCondition) { @@ -112,7 +127,7 @@ @Override public void modifyCompany(CompanyFieldForm companyFieldForm) { // url 유효성 체크 this.verifyUrl(companyFieldForm.getUrl()); this.verifyUrl(companyFieldForm.getUrl(), companyFieldForm.getId()); CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class); companyFieldRepository.saveAndFlush(companyField); @@ -170,9 +185,28 @@ // 검색 결과를 CompanyFieldVo 로 변환한다. private List<CompanyFieldVo> convertCompanyVoToMap(List<Map<String, Object>> results, Long totalCompanyCount, Pageable pageable, Map<String, Object> resJsonData) { List<CompanyFieldVo> companyFieldVos = Lists.newArrayList(); List<IspFieldVo> ispFieldVos = Lists.newArrayList(); List<HostingFieldVo> hostingFieldVos = Lists.newArrayList(); for (Map<String, Object> result : results) { CompanyFieldVo companyFieldVo = ConvertUtil.convertMapToClass(result, CompanyFieldVo.class); String url = companyFieldVo.getUrl(); IspField ispField = this.ispFieldRepository.findByUrl(url); IspFieldVo ispFieldVo = ConvertUtil.copyProperties(ispField, IspFieldVo.class); if(ispFieldVo != null){ ispFieldVos.add(ispFieldVo); } companyFieldVo.setIspFieldVos(ispFieldVos); HostingField hostingField = this.hostingFieldRepository.findByUrl(url); HostingFieldVo hostingFieldVo = ConvertUtil.copyProperties(hostingField, HostingFieldVo.class); if(hostingFieldVo != null){ hostingFieldVos.add(hostingFieldVo); } companyFieldVo.setHostingFieldVos(hostingFieldVos); companyFieldVos.add(companyFieldVo); } src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
@@ -4,6 +4,7 @@ import kr.wisestone.owl.common.ExcelConditionCheck; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.CompanyField; import kr.wisestone.owl.domain.HostingField; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.mapper.HostingFieldMapper; @@ -18,6 +19,7 @@ import kr.wisestone.owl.web.condition.HostingFieldCondition; import kr.wisestone.owl.web.form.HostingFieldForm; import kr.wisestone.owl.web.view.ExcelView; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -56,9 +58,32 @@ // Hosting 추가 @Override public HostingField add(HostingFieldForm HostingFieldForm) { // url 유효성 체크 this.verifyUrl(HostingFieldForm.getUrl(), null); HostingField HostingField = ConvertUtil.copyProperties(HostingFieldForm, HostingField.class); hostingFieldRepository.saveAndFlush(HostingField); return HostingField; } // url 유효성 체크 private void verifyUrl(String url, Long id) { if (StringUtils.isEmpty(url)) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL)); } HostingField hostingField; if(id == null){ hostingField = this.hostingFieldRepository.findByUrl(url); } else { hostingField = this.hostingFieldRepository.findByUrlAndIdNot(url,id); } if (hostingField != null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_USED_URL)); } } // Hosting 목록을 가져온다. @@ -91,6 +116,9 @@ // Hosting 정로를 수정한다. @Override public void modify(HostingFieldForm HostingFieldForm) { // url 유효성 체크 this.verifyUrl(HostingFieldForm.getUrl(), HostingFieldForm.getId()); HostingField HostingField = ConvertUtil.copyProperties(HostingFieldForm, HostingField.class); hostingFieldRepository.saveAndFlush(HostingField); } src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
@@ -4,6 +4,7 @@ import kr.wisestone.owl.common.ExcelConditionCheck; import kr.wisestone.owl.constant.Constants; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.CompanyField; import kr.wisestone.owl.domain.IspField; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.mapper.IspFieldMapper; @@ -18,6 +19,7 @@ import kr.wisestone.owl.web.condition.IspFieldCondition; import kr.wisestone.owl.web.form.IspFieldForm; import kr.wisestone.owl.web.view.ExcelView; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; @@ -56,6 +58,9 @@ // Isp 추가 @Override public IspField add(IspFieldForm IspFieldForm) { // url 유효성 체크 this.verifyUrl(IspFieldForm.getUrl(), null); IspField IspField = ConvertUtil.copyProperties(IspFieldForm, IspField.class); ispFieldRepository.saveAndFlush(IspField); return IspField; @@ -72,6 +77,26 @@ Long totalIspCount = this.ispFieldMapper.count(condition); return this.convertIspVoToMap(results, totalIspCount, pageable, resJsonData); } // url 유효성 체크 private void verifyUrl(String url, Long id) { if (StringUtils.isEmpty(url)) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_URL)); } IspField ispField; if(id == null){ ispField = this.ispFieldRepository.findByUrl(url); } else { ispField = this.ispFieldRepository.findByUrlAndIdNot(url,id); } if (ispField != null) { throw new OwlRuntimeException( this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_USED_URL)); } } @@ -91,6 +116,9 @@ // Isp 정로를 수정한다. @Override public void modify(IspFieldForm IspFieldForm) { // url 유효성 체크 this.verifyUrl(IspFieldForm.getUrl(), IspFieldForm.getId()); IspField IspField = ConvertUtil.copyProperties(IspFieldForm, IspField.class); ispFieldRepository.saveAndFlush(IspField); } src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
@@ -80,6 +80,8 @@ for (ProjectType projectType : projectTypes) { List<IssueType> issueTypes = Lists.newArrayList(); Workflow workflow = this.workflowService.findByWorkspaceIdAndProjectType(workspace.getId(), projectType); //String projectKey = "BTS"; //Project project = this.projectService.findByProjectKey(projectKey); switch (projectType) { case BTS_PROJECT: src/main/java/kr/wisestone/owl/service/impl/UserServiceImpl.java
@@ -93,6 +93,9 @@ private ProjectService projectService; @Autowired private IssueTypeService issueTypeService; @Autowired private UserSecurityService userSecurityService; @Autowired @@ -258,7 +261,10 @@ this.userWorkspaceService.addUserWorkspace(user, workspace, true, true); // 기본으로 제공되는 프로젝트를 생성한다. // this.projectService.addDefaultProject(user, workspace); this.projectService.addDefaultProject(user, workspace); // 기본으로 제공되는 프로젝트를 이슈 유형의 사용 프로젝트로 설정 //this.issueTypeService.addDefaultUsedProject(workspace); user.setLastWorkspaceId(workspace.getId()); src/main/java/kr/wisestone/owl/util/ConvertUtil.java
@@ -5,6 +5,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.vo.CompanyFieldVo; import kr.wisestone.owl.vo.IspFieldVo; import org.apache.commons.lang3.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java
@@ -1,5 +1,9 @@ package kr.wisestone.owl.vo; import com.google.common.collect.Lists; import java.util.List; public class CompanyFieldVo extends UsePartnerVo { private String manager; @@ -7,6 +11,9 @@ private String email; private String url; private String memo; private List<IspFieldVo> ispFieldVos = Lists.newArrayList(); private List<HostingFieldVo> hostingFieldVos = Lists.newArrayList(); public CompanyFieldVo() {} @@ -58,4 +65,20 @@ public void setUrl(String url) { this.url = url; } public List<IspFieldVo> getIspFieldVos() { return ispFieldVos; } public void setIspFieldVos(List<IspFieldVo> ispFieldVos) { this.ispFieldVos = ispFieldVos; } public List<HostingFieldVo> getHostingFieldVos() { return hostingFieldVos; } public void setHostingFieldVos(List<HostingFieldVo> hostingFieldVos) { this.hostingFieldVos = hostingFieldVos; } } src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js
@@ -45,7 +45,7 @@ var content = { id : parameter.id, code : $rootScope.preventXss($scope.vm.form.name), code : $rootScope.preventXss($scope.vm.form.code), name : $rootScope.preventXss($scope.vm.form.name), manager : $rootScope.preventXss($scope.vm.form.manager), tel : $rootScope.preventXss($scope.vm.form.tel), src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js
@@ -24,6 +24,7 @@ name : "", //ISP명 manager : "", //담당자 tel : "", //전화번호 code : "", email : "", //이메일 url : "", // url memo : "" //메모(비고) @@ -44,7 +45,7 @@ var content = { id : parameter.id, code : $rootScope.preventXss($scope.vm.form.name), code : $rootScope.preventXss($scope.vm.form.code), name : $rootScope.preventXss($scope.vm.form.name), manager : $rootScope.preventXss($scope.vm.form.manager), tel : $rootScope.preventXss($scope.vm.form.tel), src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -388,6 +388,9 @@ // 업체정보 결과 값 Event 처리(set) $scope.$on("companyFieldEvent", function (event, result) { var ispFieldVos = result[0].ispFieldVos[0]; var hostingFieldVos = result[0].hostingFieldVos[0]; $scope.vm.companyId = result[0].id; $scope.vm.companyName = result[0].name; $scope.vm.companyManager = result[0].manager; @@ -396,6 +399,21 @@ $scope.vm.companyUrl = result[0].url; $scope.vm.companyMemo = result[0].memo; $scope.vm.ispName = ispFieldVos.name; $scope.vm.ispCode = ispFieldVos.code; $scope.vm.ispManager = ispFieldVos.manager; $scope.vm.ispTel = ispFieldVos.tel; $scope.vm.ispEmail = ispFieldVos.email; $scope.vm.ispUrl = ispFieldVos.url; $scope.vm.ispMemo = ispFieldVos.memo; $scope.vm.hostingName = hostingFieldVos.name; $scope.vm.hostingCode = hostingFieldVos.code; $scope.vm.hostingManager = hostingFieldVos.manager; $scope.vm.hostingTel = hostingFieldVos.tel; $scope.vm.hostingEmail = hostingFieldVos.email; $scope.vm.hostingUrl = hostingFieldVos.url; $scope.vm.hostingMemo = hostingFieldVos.memo; }); // ISP정보 결과 값 Event 처리(set) src/main/webapp/views/ispField/ispFieldModify.html
@@ -12,7 +12,7 @@ <form role="form" name="hostingFieldModifyForm"> <div class="form-group"> <label for="hostingFieldModifyForm1"> <span translate="hostingField.name">ISP명</span> <span translate="ispField.name">ISP명</span> <code class="highlighter-rouge">*</code> </label> <input id="hostingFieldModifyForm1" src/main/webapp/views/issue/issueAdd.html
@@ -487,6 +487,17 @@ <div class="col-lg-4"> <div class="form-group mb10"> <label class="issue-label"> <span translate="ispField.name">ISP 이름</span> </label> <!--<input ng-click="show==false" ng-show="show" ng-hide="!show" name="ispName" type="text" class="form-control" kr-input autocomplete="off" ng-model="vm.ispName" ng-maxlength="100" maxlength="100">--> <js-autocomplete-single data-input-name="ispField" selected-model="vm.form.issueIspFields" search="vm.ispName" @@ -609,6 +620,7 @@ <label class="issue-label"> <span translate="hostingField.name">호스팅 이름</span> </label> <js-autocomplete-single data-input-name="hostingField" selected-model="vm.form.issueHostingFields" ng-model="vm.hostingName" search="vm.hostingName" source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)" page="vm.autoCompletePage.hostingField.page"