From bb9cc79a03a90cb2a6a03275f6ff6d8ea7d2fc5e Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 25 11월 2021 11:16:45 +0900
Subject: [PATCH] 이슈 유형 - 업체,isp,호스팅 정보 추가

---
 src/main/java/kr/wisestone/owl/domain/IssueType.java                  |   36 +++++++++
 src/main/java/kr/wisestone/owl/vo/IssueTypeVo.java                    |   27 ++++++
 src/main/resources/migration/V1_11__Alter_Table.sql                   |    5 +
 src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java  |   28 +++++++
 src/main/java/kr/wisestone/owl/web/form/IssueTypeForm.java            |   27 ++++++
 src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java |   82 ++++++++++++++++++++
 6 files changed, 205 insertions(+), 0 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/domain/IssueType.java b/src/main/java/kr/wisestone/owl/domain/IssueType.java
index 7c64998..c100ca0 100644
--- a/src/main/java/kr/wisestone/owl/domain/IssueType.java
+++ b/src/main/java/kr/wisestone/owl/domain/IssueType.java
@@ -31,6 +31,18 @@
     @JoinColumn(name = "project_id")
     private Project project;
 
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "company_id")
+    private CompanyField companyField;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "isp_id")
+    private IspField ispField;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "hosting_id")
+    private HostingField hostingField;
+
     @OneToMany(mappedBy = "issueType", cascade = { CascadeType.ALL }, orphanRemoval = true)
     private Set<IssueTypeCustomField> issueTypeCustomFields = new HashSet<>();
 
@@ -108,4 +120,28 @@
     public void setProject(Project project) {
         this.project = project;
     }
+
+    public CompanyField getCompanyField() {
+        return companyField;
+    }
+
+    public void setCompanyField(CompanyField companyField) {
+        this.companyField = companyField;
+    }
+
+    public IspField getIspField() {
+        return ispField;
+    }
+
+    public void setIspField(IspField ispField) {
+        this.ispField = ispField;
+    }
+
+    public HostingField getHostingField() {
+        return hostingField;
+    }
+
+    public void setHostingField(HostingField hostingField) {
+        this.hostingField = hostingField;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
index 2b81ab9..ae2e65f 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
@@ -49,6 +49,15 @@
     private WorkspaceService workspaceService;
 
     @Autowired
+    private CompanyFieldService companyFieldService;
+
+    @Autowired
+    private IspFieldService ispFieldService;
+
+    @Autowired
+    private HostingFieldService hostingFieldService;
+
+    @Autowired
     private IssueTypeMapper issueTypeMapper;
 
     @Autowired
@@ -114,6 +123,19 @@
         Project project = this.projectService.getProject(issueTypeForm.getProjectId());
         issueType.setProject(project);
 
+        if(issueTypeForm.getCompanyId() != null){
+            CompanyField companyField = this.companyFieldService.getCompany(issueTypeForm.getCompanyId());
+            issueType.setCompanyField(companyField);
+        }
+        if(issueTypeForm.getIspId() != null){
+            IspField ispField = this.ispFieldService.getIsp(issueTypeForm.getIspId());
+            issueType.setIspField(ispField);
+        }
+        if(issueTypeForm.getHostingId() != null){
+            HostingField hostingField = this.hostingFieldService.getHosting(issueTypeForm.getHostingId());
+            issueType.setHostingField(hostingField);
+        }
+
         return this.issueTypeRepository.saveAndFlush(issueType);
     }
 
@@ -172,6 +194,9 @@
         }
 
         this.setUseIssueTypeByProject(issueTypeVos);
+        this.setUseIssueTypeByCompanyField(issueTypeVos);
+        this.setUseIssueTypeByIspField(issueTypeVos);
+        this.setUseIssueTypeByHostingField(issueTypeVos);
 
         resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(),
                 totalPage, totalCount));
@@ -201,6 +226,37 @@
         }
     }
 
+    //  �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �뾽泥� �젙蹂대�� �뀑�똿�븳�떎.
+    private void setUseIssueTypeByCompanyField(List<IssueTypeVo> issueTypeVos) {
+        for (IssueTypeVo issueTypeVo : issueTypeVos){
+            IssueType issueType = this.getIssueType(issueTypeVo.getId());
+            CompanyField companyField = issueType.getCompanyField();
+            if(companyField != null){
+                issueTypeVo.setCompanyFieldVo(ConvertUtil.copyProperties(issueType.getCompanyField(), CompanyFieldVo.class));
+            }
+        }
+    }
+    //  �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 ISP �젙蹂대�� �뀑�똿�븳�떎.
+    private void setUseIssueTypeByIspField(List<IssueTypeVo> issueTypeVos) {
+        for (IssueTypeVo issueTypeVo : issueTypeVos){
+            IssueType issueType = this.getIssueType(issueTypeVo.getId());
+            IspField ispField = issueType.getIspField();
+            if(ispField != null){
+                issueTypeVo.setIspFieldVo(ConvertUtil.copyProperties(issueType.getIspField(), IspFieldVo.class));
+            }
+        }
+    }
+    //  �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �샇�뒪�똿 �젙蹂대�� �뀑�똿�븳�떎.
+    private void setUseIssueTypeByHostingField(List<IssueTypeVo> issueTypeVos) {
+        for (IssueTypeVo issueTypeVo : issueTypeVos){
+            IssueType issueType = this.getIssueType(issueTypeVo.getId());
+            HostingField hostingField = issueType.getHostingField();
+            if(hostingField != null){
+                issueTypeVo.setHostingFieldVo(ConvertUtil.copyProperties(issueType.getHostingField(), HostingFieldVo.class));
+            }
+        }
+    }
+
     //  �씠�뒋 �쑀�삎 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
@@ -220,6 +276,19 @@
             Project project = issueType.getProject();
             if (project != null) {
                 issueTypeVo.setProjectVo(ConvertUtil.copyProperties(issueType.getProject(), ProjectVo.class));
+            }
+
+            CompanyField companyField = issueType.getCompanyField();
+            if(companyField != null){
+                issueTypeVo.setCompanyFieldVo(ConvertUtil.copyProperties(issueType.getCompanyField(), CompanyFieldVo.class));
+            }
+            IspField ispField = issueType.getIspField();
+            if (ispField != null){
+                issueTypeVo.setIspFieldVo(ConvertUtil.copyProperties(issueType.getIspField(), IspFieldVo.class));
+            }
+            HostingField hostingField = issueType.getHostingField();
+            if (hostingField != null){
+                issueTypeVo.setHostingFieldVo(ConvertUtil.copyProperties(issueType.getHostingField(), HostingFieldVo.class));
             }
         }
 
@@ -249,6 +318,19 @@
         Project project = this.projectService.getProject(issueTypeForm.getProjectId());
         issueType.setProject(project);
 
+        if(issueTypeForm.getCompanyId() != null){
+            CompanyField companyField = this.companyFieldService.getCompany(issueTypeForm.getCompanyId());
+            issueType.setCompanyField(companyField);
+        }
+        if(issueTypeForm.getIspId() != null) {
+            IspField ispField = this.ispFieldService.getIsp(issueTypeForm.getIspId());
+            issueType.setIspField(ispField);
+        }
+        if(issueTypeForm.getHostingId() != null) {
+            HostingField hostingField = this.hostingFieldService.getHosting(issueTypeForm.getHostingId());
+            issueType.setHostingField(hostingField);
+        }
+
         this.issueTypeRepository.saveAndFlush(issueType);
 
         return issueType;
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueTypeVo.java b/src/main/java/kr/wisestone/owl/vo/IssueTypeVo.java
index d0581b6..e74ab58 100644
--- a/src/main/java/kr/wisestone/owl/vo/IssueTypeVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/IssueTypeVo.java
@@ -12,6 +12,9 @@
     private String color;
     private WorkflowVo workflowVo;
     private ProjectVo projectVo;
+    private CompanyFieldVo companyFieldVo;
+    private IspFieldVo ispFieldVo;
+    private HostingFieldVo hostingFieldVo;
     private Boolean modifyPermissionCheck = Boolean.TRUE;   //  �씠�뒋 �쑀�삎�� 紐⑤뱺 �궗�엺�뱾�씠 �닔�젙, �궘�젣�븷 �닔 �엳�뼱�꽌 湲곕낯 媛믪씠 True
 
     public IssueTypeVo(){}
@@ -71,4 +74,28 @@
     public void setProjectVo(ProjectVo projectVo) {
         this.projectVo = projectVo;
     }
+
+    public CompanyFieldVo getCompanyFieldVo() {
+        return companyFieldVo;
+    }
+
+    public void setCompanyFieldVo(CompanyFieldVo companyFieldVo) {
+        this.companyFieldVo = companyFieldVo;
+    }
+
+    public IspFieldVo getIspFieldVo() {
+        return ispFieldVo;
+    }
+
+    public void setIspFieldVo(IspFieldVo ispFieldVo) {
+        this.ispFieldVo = ispFieldVo;
+    }
+
+    public HostingFieldVo getHostingFieldVo() {
+        return hostingFieldVo;
+    }
+
+    public void setHostingFieldVo(HostingFieldVo hostingFieldVo) {
+        this.hostingFieldVo = hostingFieldVo;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java
index bb42b03..3028850 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueTypeCondition.java
@@ -18,6 +18,10 @@
     private String deep;    //  �긽�꽭 議고쉶�뿉�꽌 媛��졇�삱 �뜲�씠�꽣�쓽 醫낅쪟瑜� 寃곗젙�븳�떎.
     private boolean UseProject = false;     // �봽濡쒖젥�듃�뿉�꽌 �궗�슜以묒씤 �씠�뒋���엯�쓣 媛��졇�삱�븣 �궗�슜
 
+    private Long companyId;
+    private Long ispId;
+    private Long hostingId;
+
     public IssueTypeCondition(){}
 
     public static IssueTypeCondition make(Map<String, Object> params) {
@@ -91,4 +95,28 @@
     public void setUseProject(boolean useProject) {
         UseProject = useProject;
     }
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+    public Long getIspId() {
+        return ispId;
+    }
+
+    public void setIspId(Long ispId) {
+        this.ispId = ispId;
+    }
+
+    public Long getHostingId() {
+        return hostingId;
+    }
+
+    public void setHostingId(Long hostingId) {
+        this.hostingId = hostingId;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/form/IssueTypeForm.java b/src/main/java/kr/wisestone/owl/web/form/IssueTypeForm.java
index f180c0f..bbeb99a 100644
--- a/src/main/java/kr/wisestone/owl/web/form/IssueTypeForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/IssueTypeForm.java
@@ -17,6 +17,9 @@
     private String color;
     private Long workflowId;
     private Long projectId;
+    private Long companyId;
+    private Long ispId;
+    private Long hostingId;
     private List<Long> removeIds = Lists.newArrayList();
 
     public IssueTypeForm(){}
@@ -90,4 +93,28 @@
     public void setProjectId(Long projectId) {
         this.projectId = projectId;
     }
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+    public Long getIspId() {
+        return ispId;
+    }
+
+    public void setIspId(Long ispId) {
+        this.ispId = ispId;
+    }
+
+    public Long getHostingId() {
+        return hostingId;
+    }
+
+    public void setHostingId(Long hostingId) {
+        this.hostingId = hostingId;
+    }
 }
diff --git a/src/main/resources/migration/V1_11__Alter_Table.sql b/src/main/resources/migration/V1_11__Alter_Table.sql
index c455bc7..88acec5 100644
--- a/src/main/resources/migration/V1_11__Alter_Table.sql
+++ b/src/main/resources/migration/V1_11__Alter_Table.sql
@@ -190,3 +190,8 @@
 
 -- issue_risk �뀒�씠釉� 遺��꽌蹂�寃� 移댁슫�듃 而щ읆 異붽�
 ALTER TABLE `issue_risk` ADD COLUMN `change_department_count` BIGINT(20) NOT NULL DEFAULT '0';
+
+-- issue_type �뀒�씠釉� �뾽泥�,ISP,�샇�뒪�똿 ID 而щ읆 異붽�
+ALTER TABLE `issue_type` ADD COLUMN  `company_id` BIGINT(20) NULL;
+ALTER TABLE `issue_type` ADD COLUMN  `isp_id` BIGINT(20) NULL;
+ALTER TABLE `issue_type` ADD COLUMN  `hosting_id` BIGINT(20) NULL;

--
Gitblit v1.8.0