From 86ee923282de2423ae858ea8485752fe5564fc40 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 19 1월 2022 15:56:39 +0900
Subject: [PATCH] 검색후에 10 -> 100 변경하면 목록이 달라지는 문제 해결

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |   95 +++++++++++++++++++++++++++++++----------------
 1 files changed, 63 insertions(+), 32 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 fefabe8..ce55b1b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -486,6 +486,8 @@
     @Override
     @Transactional
     public Issue addIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+        StringBuilder detectIssueChange = new StringBuilder();
+
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
         Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
         //  �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕
@@ -528,11 +530,11 @@
         //  �떞�떦遺��꽌 吏��젙
         this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
 
         //  泥⑤� �뙆�씪 ���옣
         //  multipartFile �쓣 file Map List 媛앹껜濡� 蹂�寃쏀븳�떎.
@@ -579,6 +581,8 @@
     @Override
     @Transactional
     public Issue addDownIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+        StringBuilder detectIssueChange = new StringBuilder();
+
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
         Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
         //  �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕
@@ -621,11 +625,11 @@
         //  �떞�떦遺��꽌 吏��젙
         this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
 
         //  泥⑤� �뙆�씪 ���옣
         //  multipartFile �쓣 file Map List 媛앹껜濡� 蹂�寃쏀븳�떎.
@@ -656,6 +660,7 @@
     @Override
     @Transactional
     public Issue addRelIssue(User user, IssueForm issueForm, List<MultipartFile> multipartFiles) {
+        StringBuilder detectIssueChange = new StringBuilder();
         //  �궗�슜�븯怨� �엳�뒗 �뾽臾� 怨듦컙�씠 �솢�꽦 �긽�깭�씤吏� �솗�씤�븳�떎. �궗�슜 怨듦컙�뿉�꽌 濡쒓렇�씤�븳 �궗�슜�옄媛� 鍮꾪솢�꽦�씤吏� �솗�씤�븳�떎.
         Workspace workspace = this.workspaceService.checkUseWorkspace(user, user.getLastWorkspaceId());
         //  �봽濡쒖젥�듃 �쑀�슚�꽦 泥댄겕
@@ -698,11 +703,11 @@
         //  �떞�떦遺��꽌 吏��젙
         this.issueDepartmentService.modifyIssueDepartment(issue, user, project.getWorkspace(), issueForm.getDepartmentIds());
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
 
         //  泥⑤� �뙆�씪 ���옣
         //  multipartFile �쓣 file Map List 媛앹껜濡� 蹂�寃쏀븳�떎.
@@ -1592,6 +1597,9 @@
                 this.setIssueCustomFields(downIssue, downIssueVo);   // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿
                 this.setIssueHistory(downIssue, downIssueVo);   //  �씠�뒋 湲곕줉 �젙蹂� �뀑�똿
                 this.setIssueComments(downIssue, downIssueVo);  //  �뙎湲� �젙蹂� �뀑�똿
+                this.setIssueCompanyField(downIssue, downIssueVo);  //�뾽泥� �젙蹂� �꽭�똿
+                this.setIssueIspField(downIssue, downIssueVo);  //ISP �젙蹂� �꽭�똿
+                this.setIssueHostingField(downIssue, downIssueVo);  //HOSTING �젙蹂� �꽭�똿
 
                 downIssueVo.setModifyPermissionCheck(issueVo.getModifyPermissionCheck());
 
@@ -1605,6 +1613,11 @@
     @Override
     @Transactional(readOnly = true)
     public void setIssueDetail(IssueVo issueVo, Issue issue, User user) {
+        //  �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤
+        if (this.checkHasPermission(issueVo, issueVo.getUserVos(), user, issueVo.getDepartmentVos())) {
+            issueVo.setModifyPermissionCheck(Boolean.TRUE);
+        }
+
         issueVo.setProjectVo(ConvertUtil.copyProperties(issue.getProject(), ProjectVo.class));
         issueVo.setIssueTypeVo(ConvertUtil.copyProperties(issue.getIssueType(), IssueTypeVo.class));
         IssueStatusVo issueStatusVo = ConvertUtil.copyProperties(issue.getIssueStatus(), IssueStatusVo.class, "issueStatusType");
@@ -1640,11 +1653,6 @@
         this.setIssueIspField(issue, issueVo);  //ISP �젙蹂� �꽭�똿
         this.setIssueHostingField(issue, issueVo);  //HOSTING �젙蹂� �꽭�똿
         this.setParentIssue(issue,issueVo); //�긽�쐞 �씠�뒋 �젙蹂� �꽭�똿
-
-        //  �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤
-        if (this.checkHasPermission(issueVo, issueVo.getUserVos(), user, issueVo.getDepartmentVos())) {
-            issueVo.setModifyPermissionCheck(Boolean.TRUE);
-        }
     }
 
     //  �긽�쐞�씪媛� �젙蹂� 異붽�
@@ -1708,6 +1716,25 @@
                 this.setRegister(relationIssue, relIssueVo); // �벑濡앹옄
                 this.setIssueDepartment(relationIssue, relIssueVo);  //  �떞�떦遺��꽌 �젙蹂� �뀑�똿
                 this.setIssueCustomFields(relationIssue, relIssueVo);   // �궗�슜�옄�젙�쓽�븘�뱶 �젙蹂� �꽭�똿
+
+                Set<IssueCompany> issueCompanies = relationIssue.getIssueCompanies();
+                Iterator<IssueCompany> itrCompany = issueCompanies.iterator();
+                while (itrCompany.hasNext()) {
+                    issueRelationVo.addIssueCompanyVo(ConvertUtil.copyProperties(itrCompany.next(), IssueCompanyVo.class));
+                }
+
+                Set<IssueIsp> issueIsps = relationIssue.getIssueIspFields();
+                Iterator<IssueIsp> itrIsp = issueIsps.iterator();
+                while (itrIsp.hasNext()) {
+                    issueRelationVo.addIssueIspVo(ConvertUtil.copyProperties(itrIsp.next(), IssueIspVo.class));
+                }
+
+                Set<IssueHosting> issueHostings = relationIssue.getIssueHostingFields();
+                Iterator<IssueHosting> itrHosting = issueHostings.iterator();
+                while (itrHosting.hasNext()) {
+                    issueRelationVo.addIssueHostingVo(ConvertUtil.copyProperties(itrHosting.next(), IssueHostingVo.class));
+                }
+
                 issueVo.addIssueRelationVo(issueRelationVo);
             }
         } else {
@@ -1840,6 +1867,7 @@
             issueCustomFieldValueCondition.setUseValue(concatUseValue);
             issueCustomFieldValueCondition.setUseValues(userValues);
             issueCustomFieldValueCondition.setIssueTypeId(issueApiform.getIssueTypeId());
+            issueCustomFieldValueCondition.setIssueStatusType("CLOSE");
             List<Map<String, Object>> results = this.issueMapper.findByCustomFieldValue(issueCustomFieldValueCondition);
             if (results != null && results.size() > 0) {
                 for (Map<String, Object> result : results) {
@@ -2064,20 +2092,21 @@
         this.checkNotHaveIssueIdAttachedFile(issue, issueForm);
         //  �궗�슜�옄 �젙�쓽 �븘�뱶 ���옣
         this.issueCustomFieldValueService.modifyIssueCustomFieldValue(issue, issueForm.getIssueCustomFields());
-        //  �씠�뒋 �씠�젰 �벑濡�
-        if (!StringUtils.isEmpty(detectIssueChange.toString())) {
-            this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString());
-        }
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         UserVo userVo = ConvertUtil.copyProperties(user, UserVo.class);
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(userVo, ElasticSearchConstants.ISSUE_MODIFY));
 
         //  �뾽泥� �젙蹂� ���옣
-        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm);
+        this.issueCompanyService.modifyIssueCompanyField(issue, issueForm, detectIssueChange);
         //  ISP �젙蹂� ���옣
-        this.issueIspService.modifyIssueIspField(issue, issueForm);
+        this.issueIspService.modifyIssueIspField(issue, issueForm, detectIssueChange);
         //  HOSTING �젙蹂� ���옣
-        this.issueHostingService.modifyIssueHostingField(issue, issueForm);
+        this.issueHostingService.modifyIssueHostingField(issue, issueForm, detectIssueChange);
+
+        //  �씠�뒋 �씠�젰 �벑濡�
+        if (!StringUtils.isEmpty(detectIssueChange.toString())) {
+            this.issueHistoryService.addIssueHistory(issue, user, IssueHistoryType.MODIFY, detectIssueChange.toString());
+        }
 
         return issue;
     }
@@ -2805,23 +2834,23 @@
             CompanyField companyField = issueCompany.getCompanyField();
             if (companyField != null) {
                 issueCompanyVo.setCompanyId(issueCompany.getCompanyField().getId());
-                if (issueCompany.getCompanyTypeId() != null) {
+                if (issueCompany.getCompanyTypeId() != null && issueCompany.getCompanyTypeId() != -1) {
                     CompanyFieldCategory companyType = this.companyFieldCategoryService.find(issueCompany.getCompanyTypeId());
                     issueCompanyVo.setCompanyTypeName(companyType.getUseValue());
                 }
-                if (issueCompany.getParentSectorId() != null) {
+                if (issueCompany.getParentSectorId() != null && issueCompany.getParentSectorId() != -1) {
                     CompanyFieldCategory parentSector = this.companyFieldCategoryService.find(issueCompany.getParentSectorId());
                     issueCompanyVo.setParentSectorName(parentSector.getUseValue());
                 }
-                if (issueCompany.getChildSectorId() != null) {
+                if (issueCompany.getChildSectorId() != null && issueCompany.getChildSectorId() != -1) {
                     CompanyFieldCategory childSector = this.companyFieldCategoryService.find(issueCompany.getChildSectorId());
                     issueCompanyVo.setChildSectorName(childSector.getUseValue());
                 }
-                if (issueCompany.getRegionId() != null) {
+                if (issueCompany.getRegionId() != null && issueCompany.getRegionId() != -1) {
                     CompanyFieldCategory region = this.companyFieldCategoryService.find(issueCompany.getRegionId());
                     issueCompanyVo.setRegionName(region.getUseValue());
                 }
-                if (issueCompany.getStatusId() != null) {
+                if (issueCompany.getStatusId() != null && issueCompany.getStatusId() != -1) {
                     CompanyFieldCategory status = this.companyFieldCategoryService.find(issueCompany.getStatusId());
                     issueCompanyVo.setStatusName(status.getUseValue());
                 }
@@ -3674,12 +3703,12 @@
         if (emailCommonForm.getSendEmails().size() < 1) {
             throw new OwlRuntimeException(
                     this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SEND_USER));
-        } else if (emailCommonForm.getIssueId() == null) {
-            throw new OwlRuntimeException(
-                    this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_EXIST));
         }
 
-        Issue issue = this.getIssue(emailCommonForm.getIssueId());
+        Issue issue = null;
+        if(emailCommonForm.getIssueId() != null) {
+            issue = this.getIssue(emailCommonForm.getIssueId());
+        }
 
         //  諛쒖떊�옄 �몴�떆
         User user = this.webAppUtil.getLoginUserObject();
@@ -3696,8 +3725,10 @@
         }
         this.systemEmailService.sendEmail(emailCommonForm.getTitle(), emailCommonForm.getDescription(), sendMails, null);
 
-        this.issueHistoryService.detectSendIssueMail(IssueHistoryType.SEND, emailCommonForm.getSendEmails(), sb);
-        this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.SEND, sb.toString());
+        if (issue != null) {
+            this.issueHistoryService.detectSendIssueMail(IssueHistoryType.SEND, emailCommonForm.getSendEmails(), sb);
+            this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.SEND, sb.toString());
+        }
     }
 
     //  �삁�빟 諛쒖깮 �씠�뒋瑜� �떎�뻾�븳�떎

--
Gitblit v1.8.0