From b1d7844cb525a36b1e0e193e9e96a2531d4badeb Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 화, 22 2월 2022 14:23:26 +0900
Subject: [PATCH] - 이슈유형 설정에 상위 이슈 업체/ISP/호스팅 상속 기능 - 워크플로우에 속해있는 부서 삭제 시 팝업 메시지 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java     |   22 +++++++++-
 src/main/java/kr/wisestone/owl/vo/IssueVo.java                        |    9 ++++
 src/main/java/kr/wisestone/owl/service/IssueService.java              |    4 +-
 src/main/webapp/scripts/app/issue/issueList.controller.js             |    1 
 src/main/webapp/i18n/ko/global.json                                   |    3 +
 src/main/webapp/scripts/app/issue/issueAddDown.controller.js          |   15 ++++---
 src/main/java/kr/wisestone/owl/web/controller/IssueController.java    |    6 +--
 src/main/resources/migration/V1_7__alter_data.sql                     |    3 +
 src/main/java/kr/wisestone/owl/constant/MsgConstants.java             |    2 
 src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties                |    2 
 src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java |    8 ++--
 src/main/webapp/scripts/app/issue/issueModify.controller.js           |   13 ++++--
 12 files changed, 61 insertions(+), 27 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
index 9a5bd12..a63f7bd 100644
--- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
+++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -253,7 +253,7 @@
 
     public static final String DEPARTMENT_NOT_EXIST = "DEPARTMENT_NOT_EXIST";   // 遺��꽌媛� 議댁옱�븯吏� �븡�뒿�땲�떎.
     public static final String DEPARTMENT_ALREADY_IN_USE = "DEPARTMENT_ALREADY_IN_USE";   // �꽑�깮�븳 遺��꽌�뒗 �씠誘� �궗�슜�븯怨� �엳�뒿�땲�떎.
-    public static final String DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW = "DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW";   // �꽑�깮�븳 遺��꽌�뒗 �씠誘� �썙�겕�뵆濡쒖슦�쓽 �떞�떦遺��꽌�뿉 �냽�빐 �엳�뒿�땲�떎.
+    public static final String DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW = "DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW";   // �꽑�깮�븳 遺��꽌�뒗 �썙�겕�뵆濡쒖슦�쓽 �떞�떦遺��꽌�뿉 �냽�빐 �엳�뒿�땲�떎.
     public static final String DEPARTMENT_ALREADY_IN_USE_IN_PROJECT = "DEPARTMENT_ALREADY_IN_USE_IN_PROJECT";   // �꽑�깮�븳 遺��꽌�뒗 �봽濡쒖젥�듃�쓽 �떞�떦遺��꽌�뿉 �냽�빐 �엳�뒿�땲�떎.
     public static final String DEPARTMENT_ALREADY_IN_USE_IN_ISSUE = "DEPARTMENT_ALREADY_IN_USE_IN_ISSUE";   // �꽑�깮�븳 遺��꽌�뒗 �씠�뒋�쓽 �떞�떦遺��꽌�뿉 �냽�빐 �엳�뒿�땲�떎.
     public static final String DEPARTMENT_REMOVE_NOT_SELECT = "DEPARTMENT_REMOVE_NOT_SELECT";   // �궘�젣�븷 遺��꽌媛� �꽑�깮�릺吏� �븡�븯�뒿�땲�떎.
diff --git a/src/main/java/kr/wisestone/owl/service/IssueService.java b/src/main/java/kr/wisestone/owl/service/IssueService.java
index 1223244..f0eccc6 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueService.java
@@ -34,11 +34,11 @@
 
     Issue addRelIssue(IssueForm issueForm, List<MultipartFile> files);
 
-    Issue addDownIssue(IssueForm issueForm, List<MultipartFile> files);
+    Issue addDownIssue(Map<String, Object> resJsonData, IssueForm issueForm, List<MultipartFile> files);
 
     Issue addRelIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles);
 
-    Issue addDownIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles);
+    Issue addDownIssue(Map<String, Object> resJsonData, User user, IssueForm issueForm, List<MultipartFile> multipartFiles);
 
     List<Issue> addApiIssue(IssueApiForm issueApiForm) throws CloneNotSupportedException;
 
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 0e8375e..283b46b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -581,15 +581,15 @@
     //  �븯�쐞�씠�뒋瑜� �깮�꽦�븳�떎.
     @Override
     @Transactional
-    public Issue addDownIssue(IssueForm issueForm, List<MultipartFile> multipartFiles) {
+    public Issue addDownIssue(Map<String, Object> resJsonData, IssueForm issueForm, List<MultipartFile> multipartFiles) {
         User user = this.webAppUtil.getLoginUserObject();
-        return addDownIssue(user, issueForm, multipartFiles);
+        return addDownIssue(resJsonData, user, issueForm, multipartFiles);
     }
 
     //  �븯�쐞�씠�뒋瑜� �깮�꽦�븳�떎.
     @Override
     @Transactional
-    public Issue addDownIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+    public Issue addDownIssue(Map<String, Object> resJsonData, User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
         StringBuilder detectIssueChange = new StringBuilder();
 
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
@@ -653,6 +653,7 @@
         this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.ADD, null);
         //  �씠�뒋 �쐞�뿕 愿�由� �깮�꽦
         this.issueRiskService.addIssueRisk(issue, project.getWorkspace());
+
         //  �쁺�냽�꽦 而⑦뀓�뒪�듃 鍮꾩슦湲�
         this.clear();
         //  �씠�뒋 �깮�꽦, �궘�젣�떆 �삁�빟 �씠硫붿씪�뿉 �벑濡앺빐�넃�뒗�떎.
@@ -662,9 +663,24 @@
         UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class);
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(userVo, ElasticSearchConstants.ISSUE_ADD));
 
+        IssueVo issueVo = this.convertToIssueVo(issue);
+        resJsonData.put(Constants.RES_KEY_CONTENTS, issueVo);
+
         return issue;
     }
 
+    /**
+     * Issue瑜� IssueVo濡� 蹂��솚(�븯�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂� �긽�냽 �떆 �븘�슂)
+     * @param issue Issue
+     * @return IssueVo
+     */
+    private IssueVo convertToIssueVo(Issue issue) {
+        IssueVo issueVo = ConvertUtil.copyProperties(issue, IssueVo.class);
+        issueVo.setInheritPartners(issue.getIssueType().getInheritPartners());
+        issueVo.setUsePartner(issue.getIssueType().getUsePartner());
+        return issueVo;
+    }
+
     //  �뿰愿��씠�뒋瑜� �깮�꽦�븳�떎.
     @Override
     @Transactional
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 a000400..e3adfbe 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueTypeServiceImpl.java
@@ -98,16 +98,16 @@
 
             switch (projectType) {
                 case BTS_PROJECT:
-                    issueTypes.add(new IssueType(workspace, workflow, "�븙�꽦 �룄硫붿씤", "", "#ff5f99", 0L, false)); // 踰꾧렇
-                    issueTypes.add(new IssueType(workspace, workflow, "寃쎌쑀吏� ���쓳", "", "#3598fe", 0L, false)); // 媛쒖꽑
+                    issueTypes.add(new IssueType(workspace, workflow, "�븙�꽦 �룄硫붿씤", "", "#ff5f99", 0L, true)); // 踰꾧렇
+                    issueTypes.add(new IssueType(workspace, workflow, "寃쎌쑀吏� ���쓳", "", "#3598fe", 0L, true)); // 媛쒖꽑
                     break;
 
                 case RMS_PROJECT:
-                    issueTypes.add(new IssueType(workspace, workflow, "�쑀�룷吏� ���쓳", "", "#3bcde2", 0L, false)); // �슂援� �궗�빆
+                    issueTypes.add(new IssueType(workspace, workflow, "�쑀�룷吏� ���쓳", "", "#3bcde2", 0L, true)); // �슂援� �궗�빆
                     break;
 
                 case TCM_PROJECT:
-                    issueTypes.add(new IssueType(workspace, workflow, "遺꾩꽍寃곌낵 ���쓳", "", "#008ca7", 0L, false)); // �뀒�뒪�듃 耳��씠�뒪, �떎�뻾 �닚�꽌, �쟾�젣 議곌굔, 湲곕� 寃곌낵
+                    issueTypes.add(new IssueType(workspace, workflow, "遺꾩꽍寃곌낵 ���쓳", "", "#008ca7", 0L, true)); // �뀒�뒪�듃 耳��씠�뒪, �떎�뻾 �닚�꽌, �쟾�젣 議곌굔, 湲곕� 寃곌낵
                     break;
             }
             this.issueTypeRepository.saveAll(issueTypes);
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueVo.java b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
index c82c4ea..d7319c0 100644
--- a/src/main/java/kr/wisestone/owl/vo/IssueVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
@@ -84,6 +84,7 @@
     private Long downTotalCount = 0L;
 
     private Boolean inheritPartners;    // �뙆�듃�꼫�젙蹂� �긽�냽�쑀臾� 泥댄겕
+    private Long usePartner;
 
     public IssueVo(){}
 
@@ -660,4 +661,12 @@
     public void setInheritPartners(Boolean inheritPartners) {
         this.inheritPartners = inheritPartners;
     }
+
+    public Long getUsePartner() {
+        return usePartner;
+    }
+
+    public void setUsePartner(Long usePartner) {
+        this.usePartner = usePartner;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
index 90fa933..db9ca42 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
@@ -69,18 +69,16 @@
     }
 
     //  �븯�쐞�씠�뒋 �깮�꽦
-    @RequestMapping(value = "/issue/downIssueAdd", method = RequestMethod.POST)
+    @RequestMapping(value = "/issue/downIssueAdd", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
     public
     @ResponseBody
     Map<String, Object> downIssueAdd(MultipartHttpServletRequest request) {
         Map<String, Object> resJsonData = new HashMap<>();
         //  �씠�뒋 �깮�꽦
-        Issue issue = this.issueService.addDownIssue(IssueForm.make(ConvertUtil.convertJsonToMap(request.getParameter(Constants.REQ_KEY_CONTENT))), request.getFiles("file"));
+        Issue issue = this.issueService.addDownIssue(resJsonData, IssueForm.make(ConvertUtil.convertJsonToMap(request.getParameter(Constants.REQ_KEY_CONTENT))), request.getFiles("file"));
         //  踰꾩쟾 �깮�꽦
         this.issueService.addIssueVersion(issue.getId());
 
-        resJsonData.put(Constants.RES_KEY_CONTENTS, issue.getId()); //�븯�쐞�씠�뒋 ID
-        resJsonData.put(Constants.REQ_KEY_CONTENT, issue.getIssueType().getInheritPartners()); //�긽�냽 �뿬遺�
         return this.setSuccessMessage(resJsonData);
     }
 
diff --git a/src/main/resources/migration/V1_7__alter_data.sql b/src/main/resources/migration/V1_7__alter_data.sql
new file mode 100644
index 0000000..b4d6186
--- /dev/null
+++ b/src/main/resources/migration/V1_7__alter_data.sql
@@ -0,0 +1,3 @@
+
+/* issue_type �뙆�듃�꼫 �긽�냽 湲곕낯媛� true */
+ALTER TABLE `issue_type` MODIFY COLUMN `inherit_partners` varchar(10) NULL DEFAULT true;
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
index 0b716ec..58f3b6f 100644
--- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
+++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -235,7 +235,7 @@
 
 DEPARTMENT_NOT_EXIST = \uBD80\uC11C\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 DEPARTMENT_ALREADY_IN_USE = \uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uBBF8 \uC0AC\uC6A9\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.
-DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uBBF8 \uC6CC\uD06C\uD50C\uB85C\uC6B0\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4.
+DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC6CC\uD06C\uD50C\uB85C\uC6B0\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4.
 DEPARTMENT_ALREADY_IN_USE_IN_PROJECT=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uD504\uB85C\uC81D\uD2B8\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4.
 DEPARTMENT_ALREADY_IN_USE_IN_ISSUE=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uC288\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4.
 DEPARTMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uBD80\uC11C\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index 224c477..30db5a6 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -370,7 +370,8 @@
         "errorSelectDownIssue" : "�븯�쐞 �씠�뒋媛� �꽑�깮�릺吏� �븡�븯�뒿�땲�떎.",
         "failedToIssueTypeDefault": "�씠�뒋 �쑀�삎 湲곕낯媛� 議고쉶 �떎�뙣",
         "inheritPartners": "�뾽泥�/ISP/�샇�뒪�똿 �젙蹂� �긽�냽 �뿬遺�",
-        "wantToInheritPartnersOfParentIssue": "�긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂�(�뾽泥�/ISP/�샇�뒪�똿)瑜� �쟻�슜�떆�궎寃좎뒿�땲源�?"
+        "wantToInheritPartnersOfParentIssue": "�긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂�(�뾽泥�/ISP/�샇�뒪�똿)瑜� �쁽�옱 �씠�뒋�뿉 �쟻�슜�떆�궎寃좎뒿�땲源�?",
+        "wantToInheritPartnersOfIssue": "�쁽�옱 �씠�뒋�쓽 �뙆�듃�꼫 �젙蹂�(�뾽泥�/ISP/�샇�뒪�똿)瑜� 紐⑤뱺 �븯�쐞�씠�뒋�뿉 �씪愿� �쟻�슜�떆�궎寃좎뒿�땲源�?"
     },
     "project": {
         "createProject": "�봽濡쒖젥�듃 留뚮뱾湲�",
diff --git a/src/main/webapp/scripts/app/issue/issueAddDown.controller.js b/src/main/webapp/scripts/app/issue/issueAddDown.controller.js
index 8d58bbe..b51b126 100644
--- a/src/main/webapp/scripts/app/issue/issueAddDown.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAddDown.controller.js
@@ -843,7 +843,7 @@
                     }).then(function (result) {
 
                         if (result.data.message.status === "success") {
-                            $scope.fn.addDownIssue(result.data.data, result.data.content);
+                            $scope.fn.addDownIssue(result.data.data);
 
                             //  �씠�뒋 �긽�꽭 �솕硫� �슂泥�
                             $rootScope.$broadcast("getIssueDetail", {
@@ -860,15 +860,18 @@
                 }
 
                 // �븯�쐞 �씠�뒋 異붽�
-                function addDownIssue(downId, inheritYn) {
+                function addDownIssue(issueVo) {
                     $rootScope.spinner = true;
+                    let inheritYn = issueVo.inheritPartners;
+                    let usePartner = issueVo.usePartner;
 
                     var ids = [];
-                    if (downId != null) {
-                        ids.push(downId);
+                    if (issueVo.id != null) {
+                        ids.push(issueVo.id);
                     }
 
-                    if ($rootScope.isDefined(inheritYn) && inheritYn) {
+                    if ($rootScope.isDefined(usePartner) && usePartner > 0
+                            && $rootScope.isDefined(inheritYn) && inheritYn) {
                         SweetAlert.swal({
                             title : $filter("translate")("issue.addDownIssue"), // �븯�쐞 �씠�뒋 異붽�
                             text : $filter("translate")("issue.wantToInheritPartnersOfParentIssue"), // �긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂�(�뾽泥�/ISP/�샇�뒪�똿)瑜� �쟻�슜�떆�궎寃좎뒿�땲源�?
@@ -923,7 +926,7 @@
                             $resourceProvider.getPageContent(0, 10))).then(function (result) {
 
                             if (result.data.message.status === "success") {
-                                SweetAlert.close();
+                                $scope.fn.cancel();
                                 //  �씠�뒋 �긽�꽭 �솕硫� �슂泥�
                                 $rootScope.$broadcast("getIssueDetail", {
                                     id : parameter.id
diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js
index 2e7dc86..ff16c1d 100644
--- a/src/main/webapp/scripts/app/issue/issueList.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -860,6 +860,7 @@
                                     id : id,
                                     issueTypeId : $scope.vm.viewer.issueTypeVo.id,
                                     inheritPartners : $scope.vm.viewer.issueTypeVo.inheritPartners,
+                                    usePartner : $scope.vm.viewer.usePartnerVos,
                                     downTotalCount : downTotalCount
                                 };
                             }
diff --git a/src/main/webapp/scripts/app/issue/issueModify.controller.js b/src/main/webapp/scripts/app/issue/issueModify.controller.js
index 8bf3780..39d20af 100644
--- a/src/main/webapp/scripts/app/issue/issueModify.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -170,7 +170,8 @@
                     severities : [],    //  以묒슂�룄 �젙蹂�
                     fileTableConfigs : [],   //  �뙆�씪 �뾽濡쒕뱶 �젙蹂� �뀒�씠釉�
                     inheritPartners : parameter.inheritPartners,
-                    downTotalCount : parameter.downTotalCount
+                    downTotalCount : parameter.downTotalCount,
+                    usePartner : parameter.usePartner,
                 };
 
                 // �뿰愿� �씪媛� 愿��젴
@@ -577,7 +578,6 @@
 
                 function formSubmit() {
                     $rootScope.spinner = true;
-
                     let inheritYn = false;
 
                     var content = {
@@ -844,10 +844,12 @@
                         })()
                     };
 
-                    if ($scope.vm.inheritPartners && $scope.vm.downTotalCount > 0) {
+                    if ($rootScope.isDefined($scope.vm.usePartner) && $scope.vm.usePartner.length > 0
+                            && $rootScope.isDefined($scope.vm.inheritPartners) && $scope.vm.inheritPartners
+                            && $rootScope.isDefined($scope.vm.downTotalCount) && $scope.vm.downTotalCount > 0) {
                         SweetAlert.swal({
-                            title : $filter("translate")("issue.modifyDownIssue"), // �븯�쐞 �씠�뒋 蹂�寃�
-                            text : $filter("translate")("issue.wantToInheritPartnersOfParentIssue"), // �긽�쐞�씠�뒋�쓽 �뙆�듃�꼫 �젙蹂�(�뾽泥�/ISP/�샇�뒪�똿)瑜� �쟻�슜�떆�궎寃좎뒿�땲源�?
+                            title : $filter("translate")("issue.modifyIssues"), // �씠�뒋 蹂�寃�
+                            text : $filter("translate")("issue.wantToInheritPartnersOfIssue"), // �쁽�옱 �씠�뒋�쓽 �뙆�듃�꼫 �젙蹂�(�뾽泥�/ISP/�샇�뒪�똿)瑜� 紐⑤뱺 �븯�쐞�씠�뒋�뿉 �씪愿� �쟻�슜�떆�궎寃좎뒿�땲源�?
                             type : "warning",
                             showCancelButton : true,
                             confirmButtonColor : "#DD6B55",
@@ -859,6 +861,7 @@
                         function (isConfirm) {
                             if (isConfirm) {
                                 inheritYn = true;
+                                content.inheritYn = true;
                             }
 
                             Issue.modify({

--
Gitblit v1.8.0