From d64ce641aa6985cf531abe819ea7991f4fd2ec94 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 화, 14 12월 2021 20:20:13 +0900
Subject: [PATCH] 사용자등급, 프로젝트 엑셀 다운로드 오류 해결

---
 src/main/resources/mybatis/query-template/project-template.xml        |    4 +-
 src/main/java/kr/wisestone/owl/vo/UserLevelVo.java                    |    8 ++++
 src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java   |   21 +++++++++-
 src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java |   38 ++++++++++++++++++-
 4 files changed, 64 insertions(+), 7 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
index 69f9136..54a9c67 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
@@ -1169,7 +1169,20 @@
         ProjectCondition projectCondition = ProjectCondition.make(conditions);
         projectCondition.setLoginUserId(this.webAppUtil.getLoginId());
         projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
-        List<Map<String, Object>> results = this.projectMapper.find(projectCondition);
+
+        User user = this.webAppUtil.getLoginUserObject();
+        List<Map<String, Object>> results;
+        UserLevel userLevel = this.userLevelService.getUserLevel(user.getUserLevel().getId());
+
+        if (this.userWorkspaceService.checkWorkspaceManager(user)
+                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_PROJECT)
+                || MngPermission.checkMngPermission(userLevel.getPermission(), MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL)) {
+            results = this.projectMapper.findByWorkspaceManager(projectCondition);
+        }
+        else {
+            this.SetMyDepartmentId(projectCondition);
+            results = this.projectMapper.find(projectCondition);
+        }
         //  �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽�
         List<ProjectVo> projectVos = this.makeProjectVos(results, this.webAppUtil.getLoginUserObject());
         ExportExcelVo excelInfo = new ExportExcelVo();
@@ -1177,7 +1190,8 @@
         excelInfo.addAttrInfos(new ExportExcelAttrVo("statusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭
         excelInfo.addAttrInfos(new ExportExcelAttrVo("name", this.messageAccessor.message("common.project"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // �봽濡쒖젥�듃
         excelInfo.addAttrInfos(new ExportExcelAttrVo("manager", this.messageAccessor.message("common.admin"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 愿�由ъ옄
-        excelInfo.addAttrInfos(new ExportExcelAttrVo("members", this.messageAccessor.message("common.teamMember"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // ���썝
+        //excelInfo.addAttrInfos(new ExportExcelAttrVo("members", this.messageAccessor.message("common.teamMember"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // ���썝
+        excelInfo.addAttrInfos(new ExportExcelAttrVo("departments", this.messageAccessor.message("common.teamDepartment"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // ���썝
         excelInfo.addAttrInfos(new ExportExcelAttrVo("period", this.messageAccessor.message("common.period"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 湲곌컙
         excelInfo.addAttrInfos(new ExportExcelAttrVo("projectKey", this.messageAccessor.message("common.projectKey"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �봽濡쒖젥�듃 �궎
         //  �뿊���뿉 �꽔�쓣 �뜲�씠�꽣 - ProjectVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎.
@@ -1221,7 +1235,8 @@
             }
 
             result.put("manager", stringBuilderManager.toString());
-            result.put("members", CommonUtil.convertUserVosToString(projectVo.getProjectUserVos()));
+            //result.put("members", CommonUtil.convertUserVosToString(projectVo.getProjectUserVos()));
+            result.put("departments", CommonUtil.convertDepartmentVosToString(projectVo.getProjectDepartmentVos()));
             result.put("projectKey", projectVo.getProjectKey());
             result.put("period", projectVo.getStartDate() + " - " + projectVo.getEndDate());
             results.add(result);
diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java
index eae1020..18831c2 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java
@@ -24,6 +24,9 @@
 import kr.wisestone.owl.web.form.ProjectForm;
 import kr.wisestone.owl.web.form.UserLevelForm;
 import kr.wisestone.owl.web.view.ExcelView;
+import org.jsoup.Jsoup;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -40,6 +43,8 @@
 
 @Service
 public class UserLevelServiceImpl extends AbstractServiceImpl<UserLevel, Long, JpaRepository<UserLevel, Long>> implements UserLevelService {
+
+    private static final Logger log = LoggerFactory.getLogger(IssueServiceImpl.class);
 
     @Autowired
     private UserLevelRepository userLevelRepository;
@@ -238,7 +243,7 @@
 
         // code_ko_KR �뿉 code紐� �꽕�젙
         ExportExcelVo excelInfo = new ExportExcelVo();
-        excelInfo.setFileName(this.messageAccessor.message("�궗�슜�옄 紐⑸줉"));
+        excelInfo.setFileName(this.messageAccessor.message("�궗�슜�옄 �벑湲� 紐⑸줉"));
         excelInfo.addAttrInfos(new ExportExcelAttrVo("levelName", this.messageAccessor.message("managementWorkspace.levelName"), 6, ExportExcelAttrVo.ALIGN_CENTER));
         excelInfo.addAttrInfos(new ExportExcelAttrVo("permAllIssueAndProjectSetting", this.messageAccessor.message("manageUser.manageAllIssueAndProjectPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
         excelInfo.addAttrInfos(new ExportExcelAttrVo("permPartnerSetting", this.messageAccessor.message("manageUser.managePartnerPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
@@ -251,12 +256,41 @@
         excelInfo.addAttrInfos(new ExportExcelAttrVo("permQnA", this.messageAccessor.message("manageUser.manageQnAPerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
         excelInfo.addAttrInfos(new ExportExcelAttrVo("permGuide", this.messageAccessor.message("manageUser.manageGuidePerm"), 3, ExportExcelAttrVo.ALIGN_CENTER));
 
-        excelInfo.setDatas(userLevelVos);
+        //  userLevelVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎.
+        List<Map<String, Object>> convertExcelViewToUserLevelMaps = this.convertExcelViewToUserLevelVos(userLevelVos);
+        excelInfo.setDatas(convertExcelViewToUserLevelMaps);
 
         model.addAttribute(Constants.EXCEL, excelInfo);
         return new ModelAndView(this.excelView);
     }
 
+    //  userLevelVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎.
+    private List<Map<String, Object>> convertExcelViewToUserLevelVos(List<UserLevelVo> userLevelVos) {
+        List<Map<String, Object>> results = Lists.newArrayList();
+
+        for (UserLevelVo userLevelVo : userLevelVos){
+            try {
+                Map<String, Object> result = new HashMap<>();
+                result.put("levelName", userLevelVo.getLevelName());
+                result.put("permAllIssueAndProjectSetting", userLevelVo.getPermAllIssueAndProjectSetting());
+                result.put("permPartnerSetting", userLevelVo.getPermPartnerSetting());
+                result.put("permWorkSpaceSetting", userLevelVo.getPermWorkSpaceSetting());
+                result.put("permProjectSetting", userLevelVo.getPermProjectSetting());
+                result.put("permIssueSetting", userLevelVo.getPermIssueSetting());
+                result.put("permApi", userLevelVo.getPermApi());
+                result.put("permNotice", userLevelVo.getPermNotice());
+                result.put("permFAQ", userLevelVo.getPermFAQ());
+                result.put("permQnA", userLevelVo.getPermQnA());
+                result.put("permGuide", userLevelVo.getPermGuide());
+
+                results.add(result);
+            } catch (Exception e) {
+                log.error("�뿊�� �떎�슫濡쒕뱶 �삤瑜� 諛쒖깮");
+            }
+        }
+        return results;
+    }
+
     // �궗�슜�옄 �벑湲� �긽�깭瑜� 蹂�寃쏀븳�떎.
     @Override
     public void modifyLevelPermission(UserLevelForm userLevelForm) {
diff --git a/src/main/java/kr/wisestone/owl/vo/UserLevelVo.java b/src/main/java/kr/wisestone/owl/vo/UserLevelVo.java
index a1d1479..0884354 100644
--- a/src/main/java/kr/wisestone/owl/vo/UserLevelVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/UserLevelVo.java
@@ -165,6 +165,14 @@
         this.permAllIssueAndProjectSetting = permAllIssueAndProjectSetting;
     }
 
+    public Boolean getPermPartnerSetting() {
+        return permPartnerSetting;
+    }
+
+    public void setPermPartnerSetting(Boolean permPartnerSetting) {
+        this.permPartnerSetting = permPartnerSetting;
+    }
+
     public void toPermissionValues() {
         this.permAllIssueAndProjectSetting = MngPermission.checkMngPermission(this.permission, MngPermission.USER_PERMISSION_MNG_ISSUE_PROJECT_ALL);
         this.permPartnerSetting = MngPermission.checkMngPermission(this.permission, MngPermission.USER_PERMISSION_MNG_PARTNER);
diff --git a/src/main/resources/mybatis/query-template/project-template.xml b/src/main/resources/mybatis/query-template/project-template.xml
index f5054ef..388e063 100644
--- a/src/main/resources/mybatis/query-template/project-template.xml
+++ b/src/main/resources/mybatis/query-template/project-template.xml
@@ -82,7 +82,7 @@
             AND p.name like CONCAT('%',#{name},'%')
         </if>
         <choose>
-            <when test="myDepartmentIds.size != 0">
+            <when test="myDepartmentIds != null and myDepartmentIds.size != 0">
                 AND prd.department_id IN
                 <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}
@@ -187,7 +187,7 @@
         </if>
 
         <choose>
-            <when test="myDepartmentIds.size != 0">
+            <when test="myDepartmentIds != null and myDepartmentIds.size != 0">
                 AND prd.department_id IN
                 <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
                     #{item}

--
Gitblit v1.8.0