From bdb1efdc604fce543e21152b4263a9362f64389f Mon Sep 17 00:00:00 2001
From: minhee <alsdldlfrl@gmail.com>
Date: 목, 10 3월 2022 15:35:19 +0900
Subject: [PATCH] - api 이슈 추가 시 입력한 ip에 속해있는 업체정보를 가진 이슈의 하위로 입력되도록 수정 - issue_company 테이블에 ip 컬럼 추가 및 이슈 추가/수정 시 ip 대역대 항목 추가

---
 src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java |  153 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 122 insertions(+), 31 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
index 54e03d3..533d144 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueCompanyServiceImpl.java
@@ -7,7 +7,11 @@
 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;
+import kr.wisestone.owl.web.form.IssueForm;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +33,9 @@
     private CompanyFieldService companyFieldService;
 
     @Autowired
+    private CompanyFieldCategoryService companyFieldCategoryService;
+
+    @Autowired
     private IssueHistoryService issueHistoryService;
 
     @Autowired
@@ -39,49 +46,133 @@
         return this.issueCompanyRepository;
     }
 
+    /**
+     * �깉濡쒖슫 �뾽泥� 吏곸젒 異붽�
+     * @param issueForm IssueForm
+     * @param issue Issue
+     */
+    private void CreateCompanyField(IssueForm issueForm, Issue issue, StringBuilder sb) {
+
+        CompanyFieldForm companyFieldForm = new CompanyFieldForm();
+        companyFieldForm.setName(issueForm.getCompanyName());
+        companyFieldForm.setEmail(issueForm.getCompanyEmail());
+        companyFieldForm.setUrl(issueForm.getCompanyUrl());
+        companyFieldForm.setIpStart(issueForm.getIpStart());
+        companyFieldForm.setIpEnd(issueForm.getIpEnd());
+        companyFieldForm.setManager(issueForm.getCompanyManager());
+        companyFieldForm.setTel(issueForm.getCompanyTel());
+        companyFieldForm.setMemo(issueForm.getCompanyMemo());
+        companyFieldForm.setCompanyTypeName(issueForm.getCompanyTypeName());
+        companyFieldForm.setParentSectorName(issueForm.getParentSectorName());
+        companyFieldForm.setChildSectorName(issueForm.getChildSectorName());
+        companyFieldForm.setRegionName(issueForm.getRegionName());
+        companyFieldForm.setStatusName(issueForm.getStatusName());
+
+        IssueCompany newIssueCompany = CreateIssueCompany(companyFieldForm, issue);
+        CompanyField companyField = new CompanyField();
+
+        // �궗�슜�옄媛� 吏곸젒 �엯�젰 �떆 COMPANY 紐⑸줉�뿉 異붽�
+        if (newIssueCompany.getCompanyField() == null) {
+            IssueCompany oldIssueCompany = this.issueCompanyRepository.findByIssueId(issue.getId());
+            companyField = this.companyFieldService.addCompany(companyFieldForm);
+            companyFieldForm.setId(companyField.getId());
+            if (oldIssueCompany != null) {
+                issueHistoryService.detectIssueCompany(IssueHistoryType.MODIFY, null, companyFieldForm, oldIssueCompany, sb);
+                this.issueCompanyRepository.deleteById(oldIssueCompany.getId());
+            } else {
+                newIssueCompany.setCompanyField(companyField);
+                issueHistoryService.detectIssueCompany(IssueHistoryType.ADD, null, companyFieldForm, newIssueCompany, sb);
+            }
+        }
+        this.issueCompanyRepository.saveAndFlush(newIssueCompany);
+    }
+
+    /**
+     * �씠�뒋 Company 留뚮뱾湲�
+     * @param companyFieldForm CompanyFieldForm
+     * @param issue �씠�뒋
+     * @return issueCompany
+     */
+    private IssueCompany CreateIssueCompany(CompanyFieldForm companyFieldForm, Issue issue) {
+        IssueCompany issueCompany = ConvertUtil.copyProperties(companyFieldForm, IssueCompany.class, "id");
+        issueCompany.setIssue(issue);
+        if (companyFieldForm.getId() != null && companyFieldForm.getId() != -1) {
+            CompanyField companyField = this.companyFieldService.getCompany(companyFieldForm.getId());
+            issueCompany.setCompanyField(companyField);
+        }
+        return issueCompany;
+    }
+
     //  �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �뾽泥� 媛믪쓣 �뾽�뜲�씠�듃�븳�떎.
     @Override
     @Transactional
-    public void modifyIssueCompanyField(Issue issue, List<Map<String, Object>> issueCompanyFields) {
+    public void modifyIssueCompanyField(Issue issue, IssueForm issueForm, StringBuilder sb) {
         if (issue != null) {
+            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);
 
-                if (param != null && param.get("companyId") != null  && param.get("companyId") != "") {
-                    CompanyField companyField = this.companyFieldService.getCompany(MapUtil.getLong(param, "companyId")); //companyId 媛��졇�삤湲�
+                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());
 
-                    Set<IssueCompany> issueCompanies = issue.getIssueCompanies();
-                    IssueCompany issueCompany = null;
-                    if (issueCompanies != null && issueCompanies.size() > 0) { //�닔�젙 �븷 寃쎌슦
-                        issueCompany = issueCompanies.iterator().next();
-                        // 蹂�寃� �씠�젰
-                        StringBuilder sb = new StringBuilder();
-                        issueHistoryService.detectIssueCompany(IssueHistoryType.MODIFY, param, issueCompany, sb);
-                        issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, sb.toString());
+                if (issueCompany != null) { //�닔�젙 �떆
+                    // 蹂�寃� �씠�젰 癒쇱� �궓湲곌퀬 issueCompany�뿉 set�븯湲�
+                    issueHistoryService.detectIssueCompany(IssueHistoryType.MODIFY, param, null, issueCompany, sb);
 
-                        issueCompany.setCompanyField(companyField);
-                        issueCompany.setName(MapUtil.getString(param, "name"));
-                        issueCompany.setEmail(MapUtil.getString(param, "email"));
-                        issueCompany.setUrl(MapUtil.getString(param, "url"));
-                        issueCompany.setManager(MapUtil.getString(param, "manager"));
-                        issueCompany.setTel(MapUtil.getString(param, "tel"));
-                        issueCompany.setMemo(MapUtil.getString(param, "memo"));
-                    } else  { //異붽� �븷 寃쎌슦
-                        issueCompany = ConvertUtil.convertMapToClass(param, IssueCompany.class);
-                        issueCompany.setIssue(issue);
-                        if (companyField != null) {
-                            issueCompany.setCompanyField(companyField);
-                        }
-                        // 異붽� �씠�젰
-                        StringBuilder sb = new StringBuilder();
-                        issueHistoryService.detectIssueCompany(IssueHistoryType.ADD, param, 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"));
+                    issueCompany.setIpStart(MapUtil.getString(param, "ipStart"));
+                    issueCompany.setIpEnd(MapUtil.getString(param, "ipEnd"));
+                    issueCompany.setManager(MapUtil.getString(param, "manager"));
+                    issueCompany.setTel(MapUtil.getString(param, "tel"));
+                    issueCompany.setMemo(MapUtil.getString(param, "memo"));
+                    issueCompany.setCompanyTypeId(MapUtil.getLong(param, "companyTypeId"));
+                    issueCompany.setParentSectorId(MapUtil.getLong(param, "parentSectorId"));
+                    issueCompany.setChildSectorId(MapUtil.getLong(param, "childSectorId"));
+                    issueCompany.setRegionId(MapUtil.getLong(param, "regionId"));
+                    issueCompany.setStatusId(MapUtil.getLong(param, "statusId"));
+                    issueCompany.setStatusName(MapUtil.getString(param, "statusName"));
+
                     this.issueCompanyRepository.saveAndFlush(issueCompany);
-                } else {
-                    this.issueCompanyRepository.deleteById(MapUtil.getLong(param, "id"));
+                } else { //異붽� �떆
+                    CompanyFieldForm companyFieldForm = ConvertUtil.convertMapToClass(param, CompanyFieldForm.class);
+                    companyFieldForm.setId(MapUtil.getLong(param, "companyId"));
+
+                    IssueCompany newIssueCompany = CreateIssueCompany(companyFieldForm, issue);
+
+                    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);
+                    this.issueCompanyRepository.saveAndFlush(newIssueCompany);
+                }
+
+            } else if(issueForm.getCompanyName() != null && !issueForm.getCompanyName().equals("")) {
+                //�뾽泥댁젙蹂� 吏곸젒 異붽�
+                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());
         }
     }
 

--
Gitblit v1.8.0