From b2bf222751b9bba2315f861c2c5a2511dad86626 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 화, 23 11월 2021 21:34:43 +0900
Subject: [PATCH] 이력 남기기

---
 src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java |  199 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 196 insertions(+), 3 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
index c6dce73..fc67609 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
@@ -13,6 +13,7 @@
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.*;
 import kr.wisestone.owl.vo.IssueHistoryVo;
+import kr.wisestone.owl.vo.IssueVo;
 import kr.wisestone.owl.web.condition.IssueHistoryCondition;
 import kr.wisestone.owl.web.form.IssueForm;
 import org.apache.commons.lang3.StringUtils;
@@ -37,6 +38,9 @@
 
     @Autowired
     private UserService userService;
+
+    @Autowired
+    private DepartmentService departmentService;
 
     @Autowired
     private IssueHistoryMapper issueHistoryMapper;
@@ -292,7 +296,9 @@
         //  �씠�뒋 湲곌컙 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
         this.detectIssuePeriod(issue, issueForm, description);
         //  �떞�떦�옄 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
-        //this.detectIssueManager(issue, issueForm, description);
+        this.detectIssueManager(issue, issueForm, description);
+        //  �떞�떦遺��꽌 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
+        this.detectIssueDepartment(issue, issueForm, description);
         //  �궗�슜�옄 �젙�쓽 �븘�뱶 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
         this.detectCustomField(issue, issueForm, description);
 
@@ -447,10 +453,8 @@
         else {
             recodeIssuePeriod.append("<span translate=\"common.unspecified\">誘몄��젙</span>");
         }
-
         return recodeIssuePeriod.toString();
     }
-
 
     // �뿰愿� �씪媛� 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
     @Override
@@ -462,6 +466,123 @@
            description.append("<span translate=\"issue.relationIssueRemoveHistory\">�뿰愿� �씪媛먯씠 �궘�젣�릺�뿀�뒿�땲�떎. " + issueRelation.getRelationIssue().getTitle() + "</span>");
            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueRelation.getRelationIssue().getTitle() + "</span>");
        }
+    }
+
+    // �븯�쐞 �씪媛� 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
+    @Override
+    public void detectDownIssues(IssueHistoryType type, Issue issue, StringBuilder description) {
+        if (type == IssueHistoryType.ADD) {
+            description.append("<span translate=\"issue.downIssueAddHistory\">�븯�쐞 �씪媛먯씠 異붽��릺�뿀�뒿�땲�떎. </span>");
+            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issue.getTitle() + "</span>");
+        }else {
+            description.append("<span translate=\"issue.downIssueRemoveHistory\">�븯�쐞 �씪媛먯씠 �궘�젣�릺�뿀�뒿�땲�떎. </span>");
+            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issue.getTitle() + "</span>");
+        }
+    }
+
+    // �뾽泥� �젙蹂� 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
+    @Override
+    public void detectIssueCompany(IssueHistoryType type, Map<String, Object> param, IssueCompany issueCompany, StringBuilder description) {
+        Long id = MapUtil.getLong(param, "id");
+
+        if (type == IssueHistoryType.ADD) { //異붽� �븷 寃쎌슦
+            description.append("<span translate=\"issue.issueCompanyAddHistory\">�뾽泥� �젙蹂닿� 異붽��릺�뿀�뒿�땲�떎. </span>");
+            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueCompany.getCompanyField().getName() + "</span>");
+        } else if (type == IssueHistoryType.MODIFY) { //�닔�젙 �븷 寃쎌슦
+            if (id != null && !issueCompany.getId().equals(id)) {
+                description.append("<span translate=\"issue.issueCompanyModifyHistory\">�뾽泥� �젙蹂닿� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueCompany.getCompanyField().getName() + "</span>");
+            }
+            if (param.get("manager") != null && (issueCompany.getManager() == null || !issueCompany.getManager().equals(param.get("manager")))) {
+                description.append("<span translate=\"issue.issueCompanyModifyManagerHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("manager") + "</span>");
+            }
+            if (param.get("tel") != null && (issueCompany.getTel() == null || !issueCompany.getTel().equals(param.get("tel")))) {
+                description.append("<span translate=\"issue.issueCompanyModifyTelHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("tel") + "</span>");
+            }
+            if (param.get("email") != null && (issueCompany.getEmail() == null || !issueCompany.getEmail().equals(param.get("email")))) {
+                description.append("<span translate=\"issue.issueCompanyModifyEmailHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("email") + "</span>");
+            }
+            if (param.get("memo") != null && (issueCompany.getMemo() == null || !issueCompany.getMemo().equals(param.get("memo")))) {
+                description.append("<span translate=\"issue.issueCompanyModifyMemoHistory\">&nbsp;>&nbsp;�뾽泥� �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("memo") + "</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>");
+        }
+    }
+
+    // ISP �젙蹂� 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
+    @Override
+    public void detectIssueIsp(IssueHistoryType type, Map<String, Object> param, IssueIsp issueIsp, StringBuilder description) {
+        Long id = MapUtil.getLong(param, "id");
+
+        if (type == IssueHistoryType.ADD) {
+            description.append("<span translate=\"issue.issueIspAddHistory\">ISP �젙蹂닿� 異붽��릺�뿀�뒿�땲�떎. </span>");
+            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueIsp.getIspField().getName() + "</span>");
+        } else if (type == IssueHistoryType.MODIFY) {
+            if (id != null && !issueIsp.getId().equals(id)) { //�닔�젙 �븷 寃쎌슦
+                description.append("<span translate=\"issue.issueIspModifyHistory\">ISP �젙蹂닿� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueIsp.getIspField().getName() + "</span>");
+            }
+            if (param.get("manager") != null && (issueIsp.getManager() == null || !issueIsp.getManager().equals(param.get("manager")))) {
+                description.append("<span translate=\"issue.issueIspModifyManagerHistory\">ISP �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("manager") + "</span>");
+            }
+            if (param.get("tel") != null && (issueIsp.getTel() == null || !issueIsp.getTel().equals(param.get("tel")))) {
+                description.append("<span translate=\"issue.issueIspModifyTelHistory\">ISP �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("tel") + "</span>");
+            }
+            if (param.get("email") != null && (issueIsp.getEmail() == null || !issueIsp.getEmail().equals(param.get("email")))) {
+                description.append("<span translate=\"issue.issueIspModifyEmailHistory\">ISP �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("email") + "</span>");
+            }
+            if (param.get("memo") != null && (issueIsp.getMemo() == null || !issueIsp.getMemo().equals(param.get("memo")))) {
+                description.append("<span translate=\"issue.issueIspModifyMemoHistory\">ISP �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("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>");
+        }
+    }
+
+    // �샇�뒪�똿 �젙蹂� 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
+    @Override
+    public void detectIssueHosting(IssueHistoryType type, Map<String, Object> param, IssueHosting issueHosting, StringBuilder description) {
+        Long id = MapUtil.getLong(param, "id");
+
+        if (type == IssueHistoryType.ADD) {
+            description.append("<span translate=\"issue.issueHostingAddHistory\">�샇�뒪�똿 �젙蹂닿� 異붽��릺�뿀�뒿�땲�떎. </span>");
+            description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueHosting.getHostingField().getName() + "</span>");
+        }else if(type == IssueHistoryType.MODIFY){
+            if(id != null && !issueHosting.getId().equals(id)){ //�닔�젙 �븷 寃쎌슦
+                description.append("<span translate=\"issue.issueHostingModifyHistory\">�샇�뒪�똿 �젙蹂닿� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issueHosting.getHostingField().getName() + "</span>");
+            }
+            if(param.get("manager") != null && (issueHosting.getManager() == null || !issueHosting.getManager().equals(param.get("manager")))){
+                description.append("<span translate=\"issue.issueHostingModifyManagerHistory\">�샇�뒪�똿 �젙蹂댁쓽 �떞�떦�옄媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("manager") + "</span>");
+            }
+            if(param.get("tel") != null && (issueHosting.getTel() == null || !issueHosting.getTel().equals(param.get("tel")))){
+                description.append("<span translate=\"issue.issueHostingModifyTelHistory\">�샇�뒪�똿 �젙蹂댁쓽 �쟾�솕踰덊샇媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("tel") + "</span>");
+            }
+            if(param.get("email") != null && (issueHosting.getEmail() == null || !issueHosting.getEmail().equals(param.get("email")))){
+                description.append("<span translate=\"issue.issueHostingModifyEmailHistory\">�샇�뒪�똿 �젙蹂댁쓽 �씠硫붿씪�씠 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("email") + "</span>");
+            }
+            if(param.get("memo") != null && (issueHosting.getMemo() == null || !issueHosting.getMemo().equals(param.get("memo")))){
+                description.append("<span translate=\"issue.issueHostingModifyMemoHistory\">�샇�뒪�똿 �젙蹂댁쓽 鍮꾧퀬媛� 蹂�寃쎈릺�뿀�뒿�땲�떎. </span>");
+                description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + param.get("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>");
+        }
     }
 
     //  �떞�떦�옄 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
@@ -537,6 +658,78 @@
         this.makeIssueHistoryHtml(description, title, beforeUser.toString(), afterUser.toString());
     }
 
+    //  �떞�떦遺��꽌 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
+    @Override
+    public void detectIssueDepartment(Issue issue, IssueForm issueForm, StringBuilder description) {
+        boolean saveIssueRisk = false;  //  �씠�뒋 �쐞�뿕 愿�由ъ뿉 �씠以� ���옣�릺�뒗 寃껋쓣 諛⑹��븯湲� �쐞�븳 援щ텇 媛�
+
+        //  �떞�떦遺��꽌 �닔媛� �떖�씪議뚯쓣 寃쎌슦
+        if(issue.getIssueDepartments().size() != issueForm.getDepartmentIds().size()){
+            this.recodeIssueDepartment(issue, issueForm, description);
+            // �씠�뒋 �쐞�뿕 愿�由ъ뿉 �떞�떦遺��꽌 蹂�寃� �젙蹂대�� �뾽�뜲�씠�듃 �븳�떎. - �떞�떦遺��꽌 蹂�寃�
+            this.issueRiskService.modifyIssueRisk(issue, false, true, null);
+            saveIssueRisk = true;
+        }
+
+        //  �떞�떦遺��꽌 �닔�뒗 媛숈쑝�굹 �떞�떦遺��꽌媛� �떖�씪議뚯쓣 寃쎌슦
+        if (issue.getIssueDepartments().size() > 0 && issueForm.getDepartmentIds().size() > 0) {
+            //  �씠�쟾 �떞�떦�옄 �몴�떆
+            for (IssueDepartment issueDepartment : issue.getIssueDepartments()) {
+                boolean change = true;
+                Department department = issueDepartment.getDepartment();
+
+                for (Long departmentId : issueForm.getDepartmentIds()) {
+                    if (department.getId().equals(departmentId)) {
+                        change = false;
+                        break;
+                    }
+                }
+
+                if (change) {
+                    //  �떞�떦遺��꽌 蹂�寃� �젙蹂� 湲곕줉
+                    this.recodeIssueDepartment(issue, issueForm, description);
+                    //  �떞�떦遺��꽌 �닔媛� �떖�씪議뚯쓣 寃쎌슦�뿉 ���옣�릺吏� �븡�븯�떎硫� �뿬湲곗꽌 �씠�뒋 �쐞�뿕 愿�由� ���옣�쓣 �븳�떎.
+                    if (!saveIssueRisk) {
+                        //  �씠�뒋 �쐞�뿕 愿�由ъ뿉 �떞�떦遺��꽌 蹂�寃� �젙蹂대�� �뾽�뜲�씠�듃�븳�떎. - �떞�떦遺��꽌 蹂�寃�
+                        this.issueRiskService.modifyIssueRisk(issue, false, true, null);
+                    }
+                    break;
+                }
+            }
+        }
+    }
+
+    //  �떞�떦遺��꽌 蹂�寃� �젙蹂� 湲곕줉
+    private void recodeIssueDepartment(Issue issue, IssueForm issueForm, StringBuilder description) {
+        String title = "<span translate=\"common.updateDepartment\">�떞�떦遺��꽌媛� 蹂�寃쎈릺�뿀�뒿�땲�떎.</span>";
+        StringBuilder beforeDepartment = new StringBuilder();
+
+        //  �씠�쟾 �떞�떦遺��꽌 �몴�떆
+        for (IssueDepartment issueDepartment : issue.getIssueDepartments()) {
+            beforeDepartment.append(issueDepartment.getDepartment().getDepartmentName());
+            beforeDepartment.append(", ");
+        }
+        //  �떞�떦遺��꽌媛� �뾾�뿀�쑝硫� �뾾�쓬�쑝濡� �몴�떆
+        if (issue.getIssueDepartments().size() < 1) {
+            beforeDepartment.append("<span translate=\"common.none\">�뾾�쓬</span>");
+        }
+
+        StringBuilder afterDepartment = new StringBuilder();
+        for (Long departmentId : issueForm.getDepartmentIds()) {
+            Department department = this.departmentService.getDepartment(departmentId);
+            afterDepartment.append(department.getDepartmentName());
+            afterDepartment.append(", ");
+        }
+
+        //  �떞�떦遺��꽌媛� �뾾�뿀�쑝硫� �뾾�쓬�쑝濡� �몴�떆
+        if (issueForm.getDepartmentIds().size() < 1) {
+            afterDepartment.append("<span translate=\"common.none\">�뾾�쓬</span>");
+        }
+
+        //  �씠�젰 �젙蹂대�� html �깭洹몃줈 留뚮뱾�뼱 以��떎.
+        this.makeIssueHistoryHtml(description, title, beforeDepartment.toString(), afterDepartment.toString());
+    }
+
     //  �씠�뒋�뿉 泥⑤��맂 �뙆�씪�뿉 ���빐 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
     @Override
     public void detectAttachedFile(IssueForm issueForm, StringBuilder description, List<MultipartFile> files) {

--
Gitblit v1.8.0