From 98123c3ea5bb8fc53d1258046403801deb5b1584 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 01 12월 2021 13:09:02 +0900
Subject: [PATCH] 이슈 이메일 전송 백엔드

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |  171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 162 insertions(+), 9 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
index 7351c18..0005bb0 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -6,6 +6,7 @@
 import kr.wisestone.owl.constant.Constants;
 import kr.wisestone.owl.constant.ElasticSearchConstants;
 import kr.wisestone.owl.constant.MsgConstants;
+import kr.wisestone.owl.constant.UsePartner;
 import kr.wisestone.owl.domain.*;
 import kr.wisestone.owl.domain.enumType.CustomFieldType;
 import kr.wisestone.owl.domain.enumType.EmailType;
@@ -808,7 +809,7 @@
                     this.setAttachedFiles(issue, issueVo);  //  泥⑤� �뙆�씪 �젙蹂� �뀑�똿
                     this.setIssueCustomFields(issue, issueVo);  //  �궗�슜�옄 �젙�쓽 �븘�뱶 媛� �젙蹂� �뀑�똿
                     this.setRelationIssue(issue, issueVo);        //�뿰愿� �씪媛� �뀑�똿
-                    this.setDownIssues(issue, issueVo);
+                    this.setDownIssues(issue, issueVo); //�븯�쐞 �씠�뒋 �꽭�똿
 
                     break;
 
@@ -827,8 +828,25 @@
     // �븯�쐞 �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎
     private void setDownIssues(Issue issue, IssueVo issueVo) {
         List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId());
-        List<IssueVo> issueVos = ConvertUtil.convertObjectsToClasses(downIssues, IssueVo.class);
-        issueVo.setIssueDownVos(issueVos);
+        List<IssueVo> downIssueVos = ConvertUtil.convertObjectsToClasses(downIssues, IssueVo.class);
+        List<IssueVo> resultList = new ArrayList<>();
+        if(downIssues != null && downIssueVos.size()>0){
+            for(IssueVo downIssueVo : downIssueVos){
+                for(Issue downIssue : downIssues){
+                    downIssueVo.setTitle(downIssue.getTitle());
+                    downIssueVo.setIssueTypeVo(ConvertUtil.copyProperties(downIssue.getIssueType(), IssueTypeVo.class));
+                    downIssueVo.setPriorityVo(ConvertUtil.copyProperties(downIssue.getPriority(), PriorityVo.class));
+                    downIssueVo.setSeverityVo(ConvertUtil.copyProperties(downIssue.getSeverity(), SeverityVo.class));
+                    this.setRegister(downIssue, downIssueVo); // �벑濡앹옄
+                    this.setIssueDepartment(downIssue, downIssueVo);  //  �떞�떦遺��꽌 �젙蹂� �뀑�똿
+                    this.setIssueCustomFields(downIssue, downIssueVo);   // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿
+                }
+                resultList.add(downIssueVo);
+            }
+            issueVo.setIssueDownVos(resultList); //�봽濡좏듃�뿉�꽌 List�삎�깭濡� 諛쏆븘以섏꽌 由ъ뒪�듃 �삎�떇�쑝濡� 蹂대궡以�
+        }else{
+            issueVo.setIssueDownVos(null);
+        }
     }
 
     //  �씠�뒋 �긽�꽭 �젙蹂대�� �뀑�똿�븳�떎.
@@ -850,12 +868,27 @@
         this.setIssueComments(issue, issueVo);  //  �뙎湲� �젙蹂� �뀑�똿
         this.setIssueHistory(issue, issueVo);   //  �씠�뒋 湲곕줉 �젙蹂� �뀑�똿
         this.setRelationIssue(issue, issueVo);        //�뿰愿� �씪媛� �뀑�똿
-        this.setDownIssues(issue, issueVo);
+        this.setDownIssues(issue, issueVo); //�븯�쐞 �씪媛� �꽭�똿
+
+        IssueType issueType = this.issueTypeService.getIssueType(issueVo.getIssueTypeVo().getId()); // �씠�뒋�쓽 �씠�뒋�쑀�삎 媛앹껜
+        Integer using = issueType.getUsePartner() != null ? issueType.getUsePartner().intValue() : 0; // �씠�뒋�쑀�삎蹂꾨줈 �궗�슜以묒씤 �뾽泥�/ISP/�샇�뒪�똿 媛�
+
+        List<UsePartnerVo> usePartnerVos = Lists.newArrayList();
+        for (Integer usePartner : UsePartner.partners) { //1(�뾽泥�), 2(ISP), 4(�샇�뒪�똿)
+            UsePartnerVo usePartnerVo = UsePartner.checkUsePartner(using, usePartner);
+
+            if (usePartnerVo != null) {
+                usePartnerVos.add(usePartnerVo);
+                //useCompanyVo.setValues();
+            }
+            issueVo.setUsePartnerVos(usePartnerVos);
+        }
+
         this.setIssueCompanyField(issue, issueVo);  //�뾽泥� �젙蹂� �꽭�똿
         this.setIssueIspField(issue, issueVo);  //ISP �젙蹂� �꽭�똿
         this.setIssueHostingField(issue, issueVo);  //HOSTING �젙蹂� �꽭�똿
-        this.setParentIssue(issue,issueVo); //�긽�쐞 �씠�뒋 �젙蹂� �꽭�똿
 
+        this.setParentIssue(issue,issueVo); //�긽�쐞 �씠�뒋 �젙蹂� �꽭�똿
     }
 
     //  �긽�쐞�씪媛� �젙蹂� 異붽�
@@ -901,6 +934,12 @@
 
                 issueRelationVo.setIssueRelation(relIssueVo);
                 issueRelationVo.setTitle(relationIssue.getTitle());
+                issueRelationVo.setIssueTypeVo(ConvertUtil.copyProperties(relationIssue.getIssueType(), IssueTypeVo.class));
+                issueRelationVo.setPriorityVo(ConvertUtil.copyProperties(relationIssue.getPriority(), PriorityVo.class));
+                issueRelationVo.setSeverityVo(ConvertUtil.copyProperties(relationIssue.getSeverity(), SeverityVo.class));
+                this.setRegister(relationIssue, relIssueVo); // �벑濡앹옄
+                this.setIssueDepartment(relationIssue, relIssueVo);  //  �떞�떦遺��꽌 �젙蹂� �뀑�똿
+                this.setIssueCustomFields(relationIssue, relIssueVo);   // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿
                 issueVo.addIssueRelationVo(issueRelationVo);
             }
         } else {
@@ -1763,6 +1802,14 @@
             //  �씠�뒋 �긽�깭 蹂�寃�
             this.modifyIssueStatus(issueForm);
         }
+
+        // �떞�떦 遺��꽌 �닔�젙
+        if (issueForm.getDepartmentIds().size() > 0) {
+            Issue issue = this.getIssue(issueForm.getId());
+            Project project = this.projectService.getProject(issueForm.getProjectId());
+
+            this.issueDepartmentService.modifyIssueDepartment(issue, project.getWorkspace(), issueForm.getDepartmentIds());
+        }
     }
 
     //  �씠�뒋 Import �슜 �뿊�� �뀥�뵆由� �떎�슫濡쒕뱶
@@ -2347,6 +2394,12 @@
 
             switch (customField.getCustomFieldType()) {
                 case INPUT:
+                case NUMBER:
+                case DATETIME:
+                case IP_ADDRESS:
+                case EMAIL:
+                case SITE:
+                case TEL:
                     if (cellValue.length() > 100) {
                         throw new OwlRuntimeException(
                                 this.messageAccessor.getMessage(MsgConstants.CUSTOM_FIELD_TEXT_TYPE_MAX_LENGTH_OUT));
@@ -2427,6 +2480,9 @@
         if (issueForm.getSendEmails().size() < 1) {
             throw new OwlRuntimeException(
                     this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SEND_USER));
+        }else if (issueForm.getTemplate() != null){
+            throw new OwlRuntimeException(
+                    this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SELECT_TEMPLATE));
         }
 
         Issue issue = this.getIssue(issueForm.getId());
@@ -2448,8 +2504,15 @@
 
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_ANOTHER_USER_SEND_EMAIL));
+        //this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND, issueMap, null);
 
-        this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND, issueMap, null);
+        if(issueForm.getTemplate().equals("SEND1")){
+            this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_1, issueMap, null);
+        }else if(issueForm.getTemplate().equals("SEND2")){
+            this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_2, issueMap, null);
+        }else if(issueForm.getTemplate().equals("SEND3")){
+            this.systemEmailService.directEmail(issueForm.getSendEmails().toArray(new String[issueForm.getSendEmails().size()]), EmailType.ISSUE_SEND_3, issueMap, null);
+        }
     }
 
     //  �삁�빟 諛쒖깮 �씠�뒋瑜� �떎�뻾�븳�떎
@@ -2457,6 +2520,7 @@
     @Transactional
     public void reservationIssue() {
         List<IssueReservation> issueReservations = this.issueReservationService.findByIssueReservationTypeNotNull();
+
 
         Calendar calendar = Calendar.getInstance();
         int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
@@ -2621,13 +2685,17 @@
     @Override
     public void modifyParentIssue(IssueForm issueDownForm) {
         Issue issue = this.getIssue(issueDownForm.getId()); //�븯�쐞 �씠�뒋
-        Issue parentIssue = issue.getParentIssue(); //蹂�寃� �쟾 �븯�쐞�씠�뒋�쓽 �긽�쐞�씠�뒋
-
         Long newParentIssueId = issueDownForm.getParentIssueId(); //蹂�寃쏀븷 �븯�쐞�씠�뒋�쓽 �긽�쐞�씠�뒋
+
         StringBuilder sb = new StringBuilder();
 
+        Issue parentIssue = issue.getParentIssue(); //蹂�寃� �쟾 �븯�쐞�씠�뒋�쓽 �긽�쐞�씠�뒋
+        if(parentIssue != null){ //蹂�寃� �쟾 �븯�쐞�씠�뒋�쓽 �긽�쐞�씠�뒋媛� 議댁옱 �븷 寃쎌슦
+            this.issueHistoryService.detectDownIssues(IssueHistoryType.DELETE, issue, sb);
+            this.issueHistoryService.addIssueHistory(parentIssue, IssueHistoryType.MODIFY, sb.toString());
+        }
+
         if (newParentIssueId != null) { // 異붽� �븷 寃쎌슦
-           // todo �씠�쟾 �븯�쐞 �씪媛� �엳�뒪�넗由ш린濡� �븘�슂
             parentIssue = this.getIssue(newParentIssueId); //�긽�쐞�씠�뒋(myIssue)
             issue.setParentIssue(parentIssue); //myIssue瑜� �븯�쐞�씠�뒋�쓽 �긽�쐞�씠�뒋濡� set
             this.issueHistoryService.detectDownIssues(IssueHistoryType.ADD, issue, sb); //issue = �븯�쐞�씠�뒋
@@ -2640,4 +2708,89 @@
         this.issueRepository.saveAndFlush(issue);
 
     }
+
+    @Override
+    public void findPartner(Map<String, Object> resJsonData, Map<String, Object> params) {
+        Long issueTypeId = MapUtil.getLong(params, "issueTypeId");
+        IssueType issueType = this.issueTypeService.getIssueType(issueTypeId); // �씠�뒋�쓽 �씠�뒋�쑀�삎 媛앹껜
+        Integer using = issueType.getUsePartner() != null ? issueType.getUsePartner().intValue() : 0; // �씠�뒋�쑀�삎蹂꾨줈 �궗�슜以묒씤 �뾽泥�/ISP/�샇�뒪�똿 媛�
+
+        List<UsePartnerVo> usePartnerVos = Lists.newArrayList();
+        for (Integer usePartner : UsePartner.partners) { //1(�뾽泥�), 2(ISP), 4(�샇�뒪�똿)
+            UsePartnerVo usePartnerVo = UsePartner.checkUsePartner(using, usePartner);
+            if (usePartnerVo != null) {
+                usePartnerVos.add(usePartnerVo);
+            }
+            resJsonData.put(Constants.RES_KEY_CONTENTS, usePartnerVos);
+        }
+    }
+
+    /*@Override
+    @Transactional
+    public void findMailTargetAll(Map<String, Object> resJsonData, IssueCondition condition, Pageable pageable) {
+        IssueVo issueVo = new IssueVo();
+        //Long issueId = MapUtil.getLong(params, "issueId");
+        Long issueId = condition.getId();
+
+        List<String> emailList = Lists.newArrayList();
+
+        if(issueId != null){
+            Issue issue = this.getIssue(issueId);
+            issueVo = ConvertUtil.copyProperties(issue, IssueVo.class);
+            this.setIssueCompanyField(issue, issueVo);  //�뾽泥� �젙蹂� �꽭�똿
+            this.setIssueIspField(issue, issueVo);  //ISP �젙蹂� �꽭�똿
+            this.setIssueHostingField(issue, issueVo);  //HOSTING �젙蹂� �꽭�똿
+            for(IssueCompanyVo issueCompanyVo : issueVo.getIssueCompanyVos()) {
+                emailList.add(issueCompanyVo.getEmail());
+            }
+            for(IssueIspVo issueIspVo : issueVo.getIssueIspVos()) {
+                emailList.add(issueIspVo.getEmail());
+            }
+            for(IssueHostingVo issueHostingVo : issueVo.getIssueHostingVos()) {
+                emailList.add(issueHostingVo.getEmail());
+            }
+
+        }
+
+        Long totalCount = this.issueMapper.count(condition);
+        int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1;
+
+        condition.setPage(pageable.getPageNumber() * pageable.getPageSize());
+        condition.setPageSize(pageable.getPageSize());
+        //resJsonData.put(Constants.RES_KEY_CONTENTS, emailList);
+        resJsonData.put(Constants.RES_KEY_CONTENTS, emailList);
+        resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(),
+                totalPage, totalCount));
+    }*/
+
+    /*@Override
+    @Transactional
+    public void findMailTargetCompany(Map<String, Object> resJsonData, Map<String, Object> params) {
+        IssueVo issueVo = new IssueVo();
+        Long issueId = MapUtil.getLong(params, "issueId");
+
+        List<String> emailList = Lists.newArrayList();
+
+        if(issueId != null){
+            Issue issue = this.getIssue(issueId);
+            issueVo = ConvertUtil.copyProperties(issue, IssueVo.class);
+            this.setIssueCompanyField(issue, issueVo);  //�뾽泥� �젙蹂� �꽭�똿
+            for(IssueCompanyVo issueCompanyVo : issueVo.getIssueCompanyVos()) {
+                emailList.add(issueCompanyVo.getEmail());
+            }
+        }
+        resJsonData.put(Constants.RES_KEY_CONTENTS, emailList);
+    }
+
+    @Override
+    @Transactional
+    public void findMailTargetIsp(Map<String, Object> resJsonData, Map<String, Object> params) {
+
+    }
+
+    @Override
+    @Transactional
+    public void findMailTargetHosting(Map<String, Object> resJsonData, Map<String, Object> params) {
+
+    }*/
 }

--
Gitblit v1.8.0