From 145928e42a8ae18129fcbc720824a9e4f78999bd Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 금, 17 12월 2021 17:23:03 +0900
Subject: [PATCH] 상위이슈의 상세페이지에서 하위이슈에 대한 활동내역 보여주기

---
 src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java |  108 ++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 93 insertions(+), 15 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 615b48b..3a5ad54 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueHistoryServiceImpl.java
@@ -4,6 +4,7 @@
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.ElasticSearchConstants;
 import kr.wisestone.owl.constant.MsgConstants;
+import kr.wisestone.owl.data.CheckIssueData;
 import kr.wisestone.owl.domain.*;
 import kr.wisestone.owl.domain.enumType.CustomFieldType;
 import kr.wisestone.owl.domain.enumType.IssueHistoryType;
@@ -15,6 +16,7 @@
 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.EmailTemplateForm;
 import kr.wisestone.owl.web.form.IssueForm;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -63,13 +65,22 @@
     @Override
     @Transactional
     public void addIssueHistory(Issue issue, IssueHistoryType issueHistoryType, String issueChangeDescription) {
+        User user = this.webAppUtil.getLoginUserObject();
+        addIssueHistory(issue, user, issueHistoryType, issueChangeDescription);
+    }
+
+    //  �씠�젰 �깮�꽦
+    @Override
+    @Transactional
+    public void addIssueHistory(Issue issue, User user, IssueHistoryType issueHistoryType, String issueChangeDescription) {
         IssueHistory issueHistory = new IssueHistory();
         issueHistory.setIssue(issue);
         issueHistory.setProject(issue.getProject());
         issueHistory.setIssueHistoryType(issueHistoryType);
         StringBuilder description = new StringBuilder();
         //  �씠�젰 �젙蹂대�� 留뚮뱾�뼱 �궦�떎.
-        this.makeDescription(description, issueHistoryType, issueChangeDescription);
+
+        this.makeDescription(user, description, issueHistoryType, issueChangeDescription);
         issueHistory.setDescription(description.toString());
 
         this.issueHistoryRepository.saveAndFlush(issueHistory);
@@ -81,6 +92,13 @@
     //  �씠�젰 �젙蹂대�� 留뚮뱾�뼱 �궦�떎.
     @Override
     public void makeDescription(StringBuilder description, IssueHistoryType issueHistoryType, String issueChangeDescription) {
+        User user = this.webAppUtil.getLoginUserObject();
+        makeDescription(user, description, issueHistoryType, issueChangeDescription);
+    }
+
+    //  �씠�젰 �젙蹂대�� 留뚮뱾�뼱 �궦�떎.
+    @Override
+    public void makeDescription(User user, StringBuilder description, IssueHistoryType issueHistoryType, String issueChangeDescription) {
         description.append("<div class=\"activity-text\">");
 
         //  �깮�꽦, �닔�젙, �궘�젣�뿉 ���빐 湲곕줉�쓣 �궓湲대떎.
@@ -90,9 +108,9 @@
                 description.append("<span class='activity-timestamp'>");
                 description.append(DateUtil.convertDateToStr(new Date()));
                 description.append(" (");
-                description.append(this.webAppUtil.getLoginUser().getName());
+                description.append(user.getName());
                 description.append(" - ");
-                description.append(CommonUtil.decryptAES128(this.webAppUtil.getLoginUser().getAccount()));
+                description.append(CommonUtil.decryptAES128(user.getAccount()));
                 description.append(")");
                 description.append("</span></h6>");
                 break;
@@ -103,10 +121,10 @@
                 description.append(DateUtil.convertDateToStr(new Date()));
                 description.append(" (");
 
-                if (this.webAppUtil.getLoginUser() != null) {
-                    description.append(this.webAppUtil.getLoginUser().getName());
+                if (user != null) {
+                    description.append(user.getName());
                     description.append(" - ");
-                    description.append(CommonUtil.decryptAES128(this.webAppUtil.getLoginUser().getAccount()));
+                    description.append(CommonUtil.decryptAES128(user.getAccount()));
                 }
                 else {
                     description.append("OWL-ITS-SYSTEM");
@@ -124,11 +142,33 @@
                 description.append("<span class=\"activity-timestamp\">");
                 description.append(DateUtil.convertDateToStr(new Date()));
                 description.append(" (");
-                description.append(this.webAppUtil.getLoginUser().getName());
+                description.append(user.getName());
                 description.append(" - ");
-                description.append(CommonUtil.decryptAES128(this.webAppUtil.getLoginUser().getAccount()));
+                description.append(CommonUtil.decryptAES128(user.getAccount()));
                 description.append(")");
                 description.append("</span></h6>");
+                break;
+
+            case SEND:
+                description.append("<h6 class=\"creat\"><span class=\"dot\"></span><span translate=\"common.sendMailIssue\">�씠�뒋 硫붿씪 �쟾�넚</span>");
+                description.append("<span class=\"activity-timestamp\">");
+                description.append(DateUtil.convertDateToStr(new Date()));
+                description.append(" (");
+
+                if (user != null) {
+                    description.append(user.getName());
+                    description.append(" - ");
+                    description.append(CommonUtil.decryptAES128(user.getAccount()));
+                }
+                else {
+                    description.append("OWL-ITS-SYSTEM");
+                    description.append(" - ");
+                    description.append(this.systemEmail);
+                }
+
+                description.append(")");
+                description.append("</span></h6>");
+                description.append(issueChangeDescription);
                 break;
         }
 
@@ -272,13 +312,25 @@
     //  �씠�뒋 �븘�씠�뵒�뿉 �빐�떦�븯�뒗 湲곕줉 �젙蹂대�� 媛��졇�삩�떎.
     @Override
     @Transactional(readOnly = true)
-    public List<IssueHistoryVo> findIssueHistory(Long issueId) {
-        return this.issueHistoryRepository.findByIssueId(issueId);
+    public List<IssueHistoryVo> findIssueHistory(Issue issue) {
+        List<IssueHistoryVo> issueHistoryVos = this.issueHistoryRepository.findByIssueId(issue.getId());
+        if (issueHistoryVos != null && issueHistoryVos.size() > 0) {
+            for (IssueHistoryVo issueHistoryVo : issueHistoryVos) {
+                issueHistoryVo.setTitle(issue.getTitle());
+            }
+        }
+        return issueHistoryVos;
     }
 
     //  �씠�뒋 蹂�寃� �궡�뿭�쓣 異붿텧�븳�떎.
     @Override
-    public StringBuilder detectIssueChange(Issue issue, IssueForm issueForm, Project project, IssueStatus issueStatus, IssueType issueType, Priority priority, Severity severity, List<MultipartFile> files) {
+    public StringBuilder detectIssueChange(IssueForm issueForm, CheckIssueData data, List<MultipartFile> files) {
+        return this.detectIssueChange(data.getIssue(), issueForm, data.getProject(), data.getOldIssueStatus(), data.getNewIssueStatus(), data.getIssueType(), data.getPriority(), data.getSeverity(), files);
+    }
+
+    //  �씠�뒋 蹂�寃� �궡�뿭�쓣 異붿텧�븳�떎.
+    @Override
+    public StringBuilder detectIssueChange(Issue issue, IssueForm issueForm, Project project, IssueStatus oldIssueStatus, IssueStatus issueStatus, IssueType issueType, Priority priority, Severity severity, List<MultipartFile> files) {
         StringBuilder description = new StringBuilder();
 
         //  �씠�뒋 �봽濡쒖젥�듃 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
@@ -288,7 +340,7 @@
         //  �씠�뒋 �슦�꽑�닚�쐞 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
         this.detectIssuePriority(issue, issueForm, description, priority);
         //  �씠�뒋 �긽�깭 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
-        this.detectIssueStatus(issue, issueForm, description, issueStatus);
+        this.detectIssueStatus(issue, issueForm, description, oldIssueStatus, issueStatus);
         //  �씠�뒋 ���엯 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
         this.detectIssueType(issue, issueForm, description, issueType);
         //  �씠�뒋�뿉 泥⑤��맂 �뙆�씪�뿉 ���빐 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
@@ -369,11 +421,12 @@
 
     //  �씠�뒋 �긽�깭 蹂�寃� �젙蹂대�� 湲곕줉�븳�떎.
     @Override
-    public void detectIssueStatus(Issue issue, IssueForm issueForm, StringBuilder description, IssueStatus issueStatus) {
-        if (!issue.getIssueStatus().getId().equals(issueForm.getIssueStatusId())) {
+    @Transactional
+    public void detectIssueStatus(Issue issue, IssueForm issueForm, StringBuilder description, IssueStatus oldIssueStatus, IssueStatus issueStatus) {
+        if (!oldIssueStatus.getId().equals(issueForm.getIssueStatusId())) {
             String title = "<span translate=\"common.updateHasStatus\">�긽�깭媛� 蹂�寃쎈릺�뿀�뒿�땲�떎.</span>";
             //  �씠�젰 �젙蹂대�� html �깭洹몃줈 留뚮뱾�뼱 以��떎.
-            this.makeIssueHistoryHtml(description, title, issue.getIssueStatus().getName(), issueStatus.getName());
+            this.makeIssueHistoryHtml(description, title, oldIssueStatus.getName(), issueStatus.getName());
 
             //  �씠�뒋 �쐞�뿕 愿�由ъ뿉 �긽�깭 蹂�寃� �젙蹂대�� �뾽�뜲�씠�듃�븳�떎. - �떞�떦�옄 蹂�寃�
             this.issueRiskService.modifyIssueRisk(issue, true, false, issueForm.getIssueStatusId());
@@ -477,6 +530,25 @@
         }else {
             description.append("<span translate=\"issue.downIssueRemoveHistory\">�븯�쐞 �씪媛먯씠 �궘�젣�릺�뿀�뒿�땲�떎. </span>");
             description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + issue.getTitle() + "</span>");
+        }
+    }
+
+    // �씠�뒋 硫붿씪 �쟾�넚 �젙蹂대�� 湲곕줉�븳�떎.
+    @Override
+    public void detectSendIssueMail(IssueHistoryType type, IssueForm issueForm, StringBuilder description) {
+        this.detectSendIssueMail(type, issueForm.getSendEmails(), description);
+    }
+
+    // �씠�뒋 硫붿씪 �쟾�넚 �젙蹂대�� 湲곕줉�븳�떎.
+    @Override
+    public void detectSendIssueMail(IssueHistoryType type, List<String> sendMails, StringBuilder description) {
+        if (type == IssueHistoryType.SEND) {
+            description.append("<span translate=\"issue.sendIssueMailHistory\">�씠�뒋 硫붿씪 �쟾�넚�쓣 �셿猷뚰뻽�뒿�땲�떎. </span>");
+            if(sendMails != null && sendMails.size() > 0){
+                for (String sendEmail : sendMails){
+                    description.append("<span class=\"text-primary bold\">&nbsp;>&nbsp;" + CommonUtil.decryptAES128(sendEmail) + "</span>");
+                }
+            }
         }
     }
 
@@ -926,6 +998,12 @@
         if (StringUtils.isEmpty(value)) {
             switch(customFieldType) {
                 case INPUT:
+                case NUMBER:
+                case DATETIME:
+                case IP_ADDRESS:
+                case EMAIL:
+                case SITE:
+                case TEL:
                     result = "<span translate=\"common.noValueEntered\">�엯�젰�븳 媛믪씠 �뾾�뒿�땲�떎.</span>";
                     break;
                 case SINGLE_SELECT:

--
Gitblit v1.8.0