From 49cc431b9caedd37b10d017867b014658cbeafba Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 화, 07 12월 2021 09:31:26 +0900
Subject: [PATCH] - 이슈, 프로젝트 - 담당자 -> 담당부서 수정 - 프로젝트 관리자가 아닐경우 이슈리스트에 본인이 소속된 부서가 담당인 이슈만 표시

---
 src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java |   58 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 40 insertions(+), 18 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 255db28..eb33e80 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java
@@ -11,12 +11,14 @@
 import kr.wisestone.owl.mapper.ProjectMapper;
 import kr.wisestone.owl.repository.ProjectClosureRepository;
 import kr.wisestone.owl.repository.ProjectRepository;
+import kr.wisestone.owl.repository.UserDepartmentRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.CommonUtil;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.util.DateUtil;
 import kr.wisestone.owl.vo.*;
 import kr.wisestone.owl.web.condition.ProjectCondition;
+import kr.wisestone.owl.web.condition.WidgetCondition;
 import kr.wisestone.owl.web.form.ProjectForm;
 import kr.wisestone.owl.web.view.ExcelView;
 import org.apache.commons.lang3.StringUtils;
@@ -48,7 +50,7 @@
     private DepartmentService departmentService;
 
     @Autowired
-    private UserDepartmentService userDepartmentService;
+    private UserDepartmentRepository userDepartmentRepository;
 
     @Autowired
     private ProjectRoleService projectRoleService;
@@ -328,6 +330,19 @@
         }
     }
 
+    void SetMyDepartmentId(ProjectCondition projectCondition){
+        Long loginId = projectCondition.getLoginUserId();
+        List<Long> myDepartmentIds = Lists.newArrayList();
+        List<UserDepartment> myDepartments = this.userDepartmentRepository.findByUserId(loginId);
+
+        if(myDepartments != null && myDepartments.size() > 0){
+            for(UserDepartment myDepartment : myDepartments){
+                myDepartmentIds.add(myDepartment.getDepartmentId());
+            }
+        }
+        projectCondition.setMyDepartmentIds(myDepartmentIds);
+    }
+
     //  �봽濡쒖젥�듃 紐⑸줉�쓣 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
@@ -342,14 +357,17 @@
         List<Map<String, Object>> results;
         Long totalCount;
 
+        User user = this.webAppUtil.getLoginUserObject();
+
         if (condition.getWorkspaceManager()) {
             //  �뾽臾닿났媛� 愿�由ъ옄�씪 寃쎌슦 紐⑤뱺 �봽濡쒖젥�듃媛� �몴�떆�릺�뼱�빞 �븳�떎.
             //  愿�由ъ옄�씪 �븣
-            if (this.userWorkspaceService.checkWorkspaceManager()) {
+            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
                 results = this.projectMapper.findByWorkspaceManager(condition);
                 totalCount = this.projectMapper.countByWorkspaceManager(condition);
             }
             else {
+                this.SetMyDepartmentId(condition);
                 results = this.projectMapper.find(condition);
                 totalCount = this.projectMapper.count(condition);
             }
@@ -361,8 +379,8 @@
 
         int totalPage = (int) Math.ceil((totalCount - 1) / pageable.getPageSize()) + 1;
         //  �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽�
-        List<ProjectVo> projectVos = this.makeProjectVos(results);
-        this.setChildrenProject(projectVos);
+        List<ProjectVo> projectVos = this.makeProjectVos(results, user);
+        this.setChildrenProject(projectVos, user);
 
         resJsonData.put(Constants.RES_KEY_CONTENTS, projectVos);
         resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(),
@@ -371,16 +389,16 @@
         return projectVos;
     }
 
-    void setChildrenProject(List<ProjectVo> projectVos) {
+    void setChildrenProject(List<ProjectVo> projectVos, User user) {
         int projectCount = projectVos.size();
         for (int i=0; i< projectCount; i++) {
             ProjectVo projectVo = projectVos.get(i);
             List<Map<String, Object>> children = this.projectMapper.findChildrenProject(projectVo.getId());
 
             if (children != null && children.size() > 0) {
-                List<ProjectVo> childrenVo = this.makeProjectVos(children);
+                List<ProjectVo> childrenVo = this.makeProjectVos(children, user);
                 projectVo.setChildProjects(childrenVo);
-                setChildrenProject(childrenVo);
+                setChildrenProject(childrenVo, user);
             }
         }
     }
@@ -400,7 +418,7 @@
 
 
     //  �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽�
-    private List<ProjectVo> makeProjectVos(List<Map<String, Object>> results) {
+    private List<ProjectVo> makeProjectVos(List<Map<String, Object>> results, User user) {
         List<ProjectVo> projectVos = Lists.newArrayList();
 
         for (Map<String, Object> result : results) {
@@ -413,7 +431,7 @@
             this.setProjectDepartment(projectVo);
 
             //  �뾽臾닿났媛� �떞�떦�옄�뒗 紐⑤뱺 �봽濡쒖젥�듃瑜� �닔�젙/�궘�젣�븷 �닔 �엳�뼱�빞 �븳�떎.
-            if (this.userWorkspaceService.checkWorkspaceManager()) {
+            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
                 projectVo.setModifyPermissionCheck(true);
             }
             projectVos.add(projectVo);
@@ -532,10 +550,12 @@
         //  �봽濡쒖젥�듃 李몄뿬 遺��꽌
         List<Long> existDepartmentIds = this.getIncludeProjectDepartment(project);
 
+        User user = this.webAppUtil.getLoginUserObject();
+
         //  �썙�겕�뒪�럹�씠�뒪�뿉�꽌 湲곕낯�쑝濡� �젣怨듬릺�뒗 �봽濡쒖젥�듃�뿉 ���븳 泥댄겕
         this.checkDefaultProject(project, projectForm);
         //  �닔�젙 沅뚰븳 泥댄겕
-        this.checkModifyPermission(project.getId());
+        this.checkModifyPermission(project.getId(), user);
         //  愿�由ъ옄 蹂�寃�
         Map<String, Object> changeProjectManagerNotifications = this.modifyProjectManagers(project, projectForm, ProjectRole.TYPE_MANAGER);
         //  �씪諛� �궗�슜�옄 蹂�寃�
@@ -659,11 +679,11 @@
     }
 
     //  濡쒓렇�씤�븳 �궗�슜�옄媛� 愿�由ъ옄 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎.
-    private void checkModifyPermission(Long projectId) {
+    private void checkModifyPermission(Long projectId, User user) {
         Boolean hasPermission = Boolean.FALSE;
 
         //  �빐�떦 �뾽臾� 怨듦컙�쓽 愿�由ъ옄�씪 寃쎌슦 沅뚰븳 泥댄겕瑜� �븯吏� �븡�뒗�떎.
-        if (this.userWorkspaceService.checkWorkspaceManager()) {
+        if (this.userWorkspaceService.checkWorkspaceManager(user)) {
             return;
         }
 
@@ -1000,7 +1020,7 @@
         }
 
         //  濡쒓렇�씤�븳 �궗�슜�옄媛� 愿�由ъ옄 �뿭�븷�뿉 �냼�냽�릺�뼱 �엳�뒗吏� �솗�씤�븳�떎.
-        this.checkModifyPermission(project.getId());
+        this.checkModifyPermission(project.getId(), this.webAppUtil.getLoginUserObject());
 
         List<String> sendEmails = Lists.newArrayList();
         Map<String, Object> params = new HashMap<>();
@@ -1094,21 +1114,23 @@
     @Override
     @Transactional(readOnly = true)
     public List<ProjectVo> findByIncludeProject(List<String> statuses, String projectType) {
+        User user = this.webAppUtil.getLoginUserObject();
+
         ProjectCondition projectCondition = new ProjectCondition();
-        projectCondition.setLoginUserId(this.webAppUtil.getLoginId());
-        projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
+        projectCondition.setLoginUserId(user.getId());
+        projectCondition.setWorkspaceId(user.getLastWorkspaceId());
         projectCondition.setProjectType(projectType);
         projectCondition.setStatuses(statuses);
 
         List<Map<String, Object>> results;
 
-        if (this.userWorkspaceService.checkWorkspaceManager()) {
+        if (this.userWorkspaceService.checkWorkspaceManager(user)) {
             results = this.projectMapper.findByWorkspaceManager(projectCondition);
         } else {
             results = this.projectMapper.findByWorkspaceIdAndIncludeProject(projectCondition);
         }
         List<ProjectVo> projectVos = this.makeProjectByVos(results);
-        this.setChildrenProject(projectVos);
+        this.setChildrenProject(projectVos, user);
 
         return  projectVos;
     }
@@ -1135,7 +1157,7 @@
         projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
         List<Map<String, Object>> results = this.projectMapper.find(projectCondition);
         //  �봽濡쒖젥�듃 議고쉶 寃곌낵瑜� ProjectVos 濡� 蹂��솚�븳�떎. - 愿�由ъ옄, �씪諛� �궗�슜�옄 �젙蹂� 異붽�
-        List<ProjectVo> projectVos = this.makeProjectVos(results);
+        List<ProjectVo> projectVos = this.makeProjectVos(results, this.webAppUtil.getLoginUserObject());
         ExportExcelVo excelInfo = new ExportExcelVo();
         excelInfo.setFileName(this.messageAccessor.message("common.projectList")); // �봽濡쒖젥�듃 紐⑸줉
         excelInfo.addAttrInfos(new ExportExcelAttrVo("statusName", this.messageAccessor.message("common.status"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // �긽�깭

--
Gitblit v1.8.0