From 2c273d1072424a9363314fb258265cbf487f0297 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 16 12월 2021 17:48:46 +0900
Subject: [PATCH] - Excel Import 기능 담당부서도 들어가게 하기(기간 미지정 시에도 가능하도록 수정) - 이슈 통합검색 키워드에 업체,ISP,호스팅 정보도 포함 - 프로젝트에서 설정한 이슈유형만 보여주기

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java          |   63 ++++++++++++++++++++++---------
 src/main/webapp/scripts/app/project/projectCustomFieldConfig.controller.js |    2 
 src/main/resources/mybatis/query-template/issue-template.xml               |   50 ++++++++++++++++++++++++-
 3 files changed, 94 insertions(+), 21 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 1ea58cc..549ac90 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -2891,7 +2891,7 @@
             Map<String, Priority> priorityMaps = new HashMap<>();   //  �슦�꽑 �닚�쐞 紐⑥쓬
             Map<String, Severity> severityMaps = new HashMap<>();   //  以묒슂�룄 紐⑥쓬
             Map<String, Object> userMaps = new HashMap<>(); //  �궗�슜�옄 紐⑥쓬
-            Map<String, Object> departmentMaps = new HashMap<>(); //  遺��꽌 紐⑥쓬
+            Map<String, DepartmentVo> departmentMaps = new HashMap<>(); //  遺��꽌 紐⑥쓬
             Map<String, CustomField> customFieldMaps = new HashMap<>();
             Map<String, IssueStatus> issueStatusReadyMaps = new HashMap<>();   //  �긽�깭 �냽�꽦 '��湲�'�씤 �씠�뒋 �긽�깭
             Map<Long, Long> issueNumberMaps = new HashMap<>();  //  �씠�뒋 踰덊샇 紐⑥쓬
@@ -2941,7 +2941,7 @@
                 //  1踰� �뿤�뜑遺��꽣 �뜲�씠�꽣 �쁺�뿭
                 if (rowIndex > 1) {
                     //  �씠�뒋濡� �벑濡앺븯湲� �쐞�빐 IssueForm �뿉 �뜲�씠�꽣瑜� �뀑�똿�븳�떎.
-                    issueForms.add(this.setIssueFormToExcelField(row, (rowIndex + 1), issueStatusReadyMaps, projectMaps, issueTypeMaps, priorityMaps, severityMaps, userMaps, customFieldMaps, issueNumberMaps, headers));
+                    issueForms.add(this.setIssueFormToExcelField(row, (rowIndex + 1), issueStatusReadyMaps, projectMaps, issueTypeMaps, priorityMaps, severityMaps, userMaps, departmentMaps, customFieldMaps, issueNumberMaps, headers));
                 }
             }
 
@@ -3092,7 +3092,7 @@
 
     //  �씠�뒋�쓽 二쇱슂 �냽�꽦�쓣 map �뿉 ���옣�븯�뿬 �뿊�� import �뿉�꽌 吏��젙�븳 ���긽(�씠�뒋 �냽�꽦)�쓣 鍮좊Ⅴ寃� 李얠쓣 �닔 �엳寃� �븳�떎.
     private void IssueAttributeMapToList(Map<String, Project> projectMaps, Map<String, IssueType> issueTypeMaps, Map<String, Priority> priorityMaps, Map<String, Severity> severityMaps,
-                                         Map<String, Object> userMaps, Map<String, Object> departmentMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, Map<String, Long> issueTypeCustomFieldMaps, Map<String, IssueStatus> issueStatusReadyMaps) {
+                                         Map<String, Object> userMaps, Map<String, DepartmentVo> departmentMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, Map<String, Long> issueTypeCustomFieldMaps, Map<String, IssueStatus> issueStatusReadyMaps) {
         //  �봽濡쒖젥�듃 �궎濡� 諛붾줈 李얠쓣 �닔 �엳寃� 以�鍮�
         List<Project> projects = this.projectService.findByWorkspaceId();
         List<Long> projectIds = Lists.newArrayList();
@@ -3116,16 +3116,7 @@
             for (Map<String, Object> user : users) {
                 userMap.put(CommonUtil.decryptAES128(MapUtil.getString(user, "account")), MapUtil.getLong(user, "userId"));
             }
-
             userMaps.put(project.getProjectKey(), userMap);
-
-            //  �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 遺��꽌 �젙蹂�
-            List<Map<String, Object>> departments = this.departmentService.findProjectDepartment(project);
-            List<Long> departmentList = Lists.newArrayList();
-            //  遺��꽌 �젙蹂대�� ���옣
-            for (Map<String, Object> department : departments) {
-                departmentList.add(MapUtil.getLong(department, "departmentId"));
-            }
         }
 
         //  �씠�뒋 �쑀�삎�쓣 諛붾줈 李얠쓣 �닔 �엳寃� 以�鍮�
@@ -3135,6 +3126,13 @@
 
             IssueStatus issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(issueType.getWorkflow());
             issueStatusReadyMaps.put(issueType.getId().toString(), issueStatus);
+
+            //  �썙�겕�뵆濡쒖슦�뿉 �냽�빐�엳�뒗 遺��꽌 �젙蹂�
+            List<DepartmentVo> departments = this.departmentService.findWorkflowDepartment(issueType.getId());
+            //  遺��꽌 �젙蹂대�� ���옣
+            for (DepartmentVo department : departments) {
+                departmentMaps.put(department.getDepartmentName(), department);
+            }
         }
 
         //  �슦�꽑�닚�쐞瑜� 諛붾줈 李얠쓣 �닔 �엳寃� 以�鍮�
@@ -3158,7 +3156,7 @@
 
     //  �뿊�� �븘�뱶�뿉 �엳�뒗 �젙蹂대�� �씠�뒋 form �쑝濡� �삷湲대떎.
     private IssueForm setIssueFormToExcelField(Row row, int rowIndex, Map<String, IssueStatus> issueStatusReadyMaps, Map<String, Project> projectMaps, Map<String, IssueType> issueTypeMaps, Map<String,
-            Priority> priorityMaps, Map<String, Severity> severityMaps, Map<String, Object> userMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, List<String> headers) {
+            Priority> priorityMaps, Map<String, Severity> severityMaps, Map<String, Object> userMaps, Map<String, DepartmentVo> departmentMaps, Map<String, CustomField> customFieldMaps, Map<Long, Long> issueNumberMaps, List<String> headers) {
         IssueForm issueForm = new IssueForm();
         issueForm.setRegisterId(this.webAppUtil.getLoginId());
         Project project = null;
@@ -3202,9 +3200,13 @@
                     //  以묒슂�룄瑜� IssueForm �뿉 ���옣�븳�떎.
                     this.setIssueFormSeverity(cell, severityMaps, issueForm, rowIndex);
                     break;
+                /*case 6:
+                    //  �떞�떦�옄瑜� IssueForm �뿉 ���옣�븳�떎.
+                    this.setIssueFormAssignee(cell, userMaps, issueForm, project);
+                    break;*/
                 case 6:
                     //  �떞�떦遺��꽌瑜� IssueForm �뿉 ���옣�븳�떎.
-                    this.setIssueFormAssignee(cell, userMaps, issueForm, project);
+                    this.setIssueFormDepartment(cell, departmentMaps, issueForm, project);
                     break;
                 case 7:
                     //  �떆�옉�씪�쓣 IssueForm �뿉 ���옣�븳�떎.
@@ -3215,7 +3217,7 @@
                     this.setIssueFormPeriod(cell, issueForm, false, rowIndex);
                     break;
                 default:
-                    //  8踰� �씠�긽遺��꽣�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶. �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂대�� IssueForm �뿉 ���옣�븳�떎.
+                    //  9踰� 遺��꽣�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶. �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂대�� IssueForm �뿉 ���옣�븳�떎.
                     this.setIssueFormCustomFieldValue(cell, customFieldMaps, issueForm, headers.get(cellIndex), rowIndex);
             }
         }
@@ -3344,20 +3346,39 @@
         issueForm.setSeverityId(severity.getId());
     }
 
-    //  �떞�떦遺��꽌瑜� IssueForm �뿉 ���옣�븳�떎.
     private void setIssueFormAssignee(Cell cell, Map<String, Object> userMaps, IssueForm issueForm, Project project) {
         if (cell != null) {
             String[] splitAssignee = CommonUtil.convertExcelStringToCell(cell).split("#");
             Map<String, Object> userMap = (Map<String, Object>) MapUtil.getObject(userMaps, project.getProjectKey());
 
-            List<Long> departmentIds = Lists.newArrayList();
+            List<Long> userIds = Lists.newArrayList();
 
             for (String account : splitAssignee) {
                 if (MapUtil.getLong(userMap, account) != null) {
-                    departmentIds.add(MapUtil.getLong(userMap, account));
+                    userIds.add(MapUtil.getLong(userMap, account));
                 }
             }
+            issueForm.setUserIds(userIds);
+        }
+    }
 
+    //  �떞�떦遺��꽌瑜� IssueForm �뿉 ���옣�븳�떎.
+    private void setIssueFormDepartment(Cell cell, Map<String, DepartmentVo> departmentMaps, IssueForm issueForm, Project project) {
+        if (cell != null) {
+            String[] splitDepartment = CommonUtil.convertExcelStringToCell(cell).split("#");
+
+            //  媛믪씠 怨듬갚�씠硫� 以묒�
+            String cellValue = CommonUtil.convertExcelStringToCell(cell);
+            if (StringUtils.isEmpty(cellValue)) {
+                return;
+            }
+
+            List<Long> departmentIds = Lists.newArrayList();
+
+            for (String department : splitDepartment) {
+                DepartmentVo departmentVo = departmentMaps.get(department);
+                departmentIds.add(departmentVo.getId());
+            }
             issueForm.setDepartmentIds(departmentIds);
         }
     }
@@ -3366,6 +3387,12 @@
     private void setIssueFormPeriod(Cell cell, IssueForm issueForm, Boolean checkStartDate, int rowIndex) {
         if (cell != null && !cell.toString().equals("")) {
 
+            //  媛믪씠 怨듬갚�씠硫� 以묒�
+            String cellValue = CommonUtil.convertExcelStringToCell(cell);
+            if (StringUtils.isEmpty(cellValue)) {
+                return;
+            }
+
             Date startDate;
 
             try {
diff --git a/src/main/resources/mybatis/query-template/issue-template.xml b/src/main/resources/mybatis/query-template/issue-template.xml
index d4ff74b..87e2afb 100644
--- a/src/main/resources/mybatis/query-template/issue-template.xml
+++ b/src/main/resources/mybatis/query-template/issue-template.xml
@@ -47,6 +47,9 @@
         LEFT OUTER JOIN issue_user issue_user FORCE INDEX(issueIdIndex) ON issue.id = issue_user.issue_id
         LEFT OUTER JOIN user_department ud ON ud.department_id = isd.department_id
         LEFT OUTER JOIN department d ON d.id = isd.department_id
+        LEFT OUTER JOIN issue_company ic ON ic.issue_id = issue.id
+        LEFT OUTER JOIN issue_isp ii ON ii.issue_id = issue.id
+        LEFT OUTER JOIN issue_hosting ih ON ih.issue_id = issue.id
         LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as attachedFileCount FROM attached_file GROUP BY issue_id)
         temp_attached_file on (temp_attached_file.issue_id = issue.id)
         LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as issueCommentCount FROM issue_comment GROUP BY issue_id)
@@ -68,7 +71,27 @@
             OR priority.name like CONCAT('%',#{keyWord},'%')
             OR severity.name like CONCAT('%',#{keyWord},'%')
             OR issue_custom.use_value like CONCAT('%',#{keyWord},'%')
-            OR d.department_name like CONCAT('%',#{keyWord},'%'))
+            OR d.department_name like CONCAT('%',#{keyWord},'%')
+            OR ic.name like CONCAT('%',#{keyWord},'%')
+            OR ic.manager like CONCAT('%',#{keyWord},'%')
+            OR ic.tel like CONCAT('%',#{keyWord},'%')
+            OR ic.email like CONCAT('%',#{keyWord},'%')
+            OR ic.url like CONCAT('%',#{keyWord},'%')
+            OR ic.memo like CONCAT('%',#{keyWord},'%')
+            OR ii.name like CONCAT('%',#{keyWord},'%')
+            OR ii.code like CONCAT('%',#{keyWord},'%')
+            OR ii.manager like CONCAT('%',#{keyWord},'%')
+            OR ii.tel like CONCAT('%',#{keyWord},'%')
+            OR ii.email like CONCAT('%',#{keyWord},'%')
+            OR ii.url like CONCAT('%',#{keyWord},'%')
+            OR ii.memo like CONCAT('%',#{keyWord},'%')
+            OR ih.name like CONCAT('%',#{keyWord},'%')
+            OR ih.code like CONCAT('%',#{keyWord},'%')
+            OR ih.manager like CONCAT('%',#{keyWord},'%')
+            OR ih.tel like CONCAT('%',#{keyWord},'%')
+            OR ih.email like CONCAT('%',#{keyWord},'%')
+            OR ih.url like CONCAT('%',#{keyWord},'%')
+            OR ih.memo like CONCAT('%',#{keyWord},'%'))
         </if>
 
         <if test="title != null and !title.equals('')">
@@ -566,6 +589,9 @@
         LEFT OUTER JOIN issue_user issue_user FORCE INDEX(issueIdIndex) ON issue.id = issue_user.issue_id
         LEFT OUTER JOIN user_department ud ON ud.department_id = isd.department_id
         LEFT OUTER JOIN department d ON d.id = isd.department_id
+        LEFT OUTER JOIN issue_company ic ON ic.issue_id = issue.id
+        LEFT OUTER JOIN issue_isp ii ON ii.issue_id = issue.id
+        LEFT OUTER JOIN issue_hosting ih ON ih.issue_id = issue.id
         LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as attachedFileCount FROM attached_file GROUP BY issue_id)
         temp_attached_file on (temp_attached_file.issue_id = issue.id)
         LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as issueCommentCount FROM issue_comment GROUP BY issue_id)
@@ -587,7 +613,27 @@
             OR priority.name like CONCAT('%',#{keyWord},'%')
             OR severity.name like CONCAT('%',#{keyWord},'%')
             OR issue_custom.use_value like CONCAT('%',#{keyWord},'%')
-            OR d.department_name like CONCAT('%',#{keyWord},'%'))
+            OR d.department_name like CONCAT('%',#{keyWord},'%')
+            OR ic.name like CONCAT('%',#{keyWord},'%')
+            OR ic.manager like CONCAT('%',#{keyWord},'%')
+            OR ic.tel like CONCAT('%',#{keyWord},'%')
+            OR ic.email like CONCAT('%',#{keyWord},'%')
+            OR ic.url like CONCAT('%',#{keyWord},'%')
+            OR ic.memo like CONCAT('%',#{keyWord},'%')
+            OR ii.name like CONCAT('%',#{keyWord},'%')
+            OR ii.code like CONCAT('%',#{keyWord},'%')
+            OR ii.manager like CONCAT('%',#{keyWord},'%')
+            OR ii.tel like CONCAT('%',#{keyWord},'%')
+            OR ii.email like CONCAT('%',#{keyWord},'%')
+            OR ii.url like CONCAT('%',#{keyWord},'%')
+            OR ii.memo like CONCAT('%',#{keyWord},'%')
+            OR ih.name like CONCAT('%',#{keyWord},'%')
+            OR ih.code like CONCAT('%',#{keyWord},'%')
+            OR ih.manager like CONCAT('%',#{keyWord},'%')
+            OR ih.tel like CONCAT('%',#{keyWord},'%')
+            OR ih.email like CONCAT('%',#{keyWord},'%')
+            OR ih.url like CONCAT('%',#{keyWord},'%')
+            OR ih.memo like CONCAT('%',#{keyWord},'%'))
         </if>
 
         <if test="title != null and !title.equals('')">
diff --git a/src/main/webapp/scripts/app/project/projectCustomFieldConfig.controller.js b/src/main/webapp/scripts/app/project/projectCustomFieldConfig.controller.js
index da12b98..b488f65 100644
--- a/src/main/webapp/scripts/app/project/projectCustomFieldConfig.controller.js
+++ b/src/main/webapp/scripts/app/project/projectCustomFieldConfig.controller.js
@@ -38,7 +38,7 @@
                 function getIssueTypes() {
                     var deferred = $q.defer();
 
-                    IssueType.find($resourceProvider.getContent({},
+                    IssueType.find($resourceProvider.getContent({projectId : parameter.id},
                         $resourceProvider.getPageContent(0, 1000))).then(function (result) {
 
                         if (result.data.message.status === "success") {

--
Gitblit v1.8.0