From bcf1555957d606938b4e5e72aaeba8a2ab555947 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 화, 30 11월 2021 16:22:16 +0900
Subject: [PATCH] 대시보드 - 내 프로젝트 + 하위 프로젝트 같이 보여주는 기능

---
 src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java |   78 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 76 insertions(+), 2 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
index 6e82dd0..4a8a84d 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
@@ -7,15 +7,18 @@
 import kr.wisestone.owl.constant.MsgConstants;
 import kr.wisestone.owl.domain.IssueStatus;
 import kr.wisestone.owl.domain.Project;
+import kr.wisestone.owl.domain.ProjectClosure;
+import kr.wisestone.owl.domain.UserDepartment;
 import kr.wisestone.owl.domain.enumType.ProjectType;
 import kr.wisestone.owl.exception.OwlRuntimeException;
 import kr.wisestone.owl.mapper.IssueMapper;
 import kr.wisestone.owl.mapper.WidgetMapper;
+import kr.wisestone.owl.repository.ProjectClosureRepository;
+import kr.wisestone.owl.repository.UserDepartmentRepository;
 import kr.wisestone.owl.service.*;
 import kr.wisestone.owl.util.*;
 import kr.wisestone.owl.vo.*;
 import kr.wisestone.owl.web.condition.IssueCondition;
-import kr.wisestone.owl.web.condition.ProjectCondition;
 import kr.wisestone.owl.web.condition.WidgetCondition;
 import kr.wisestone.owl.web.view.ExcelView;
 import org.apache.commons.lang3.StringUtils;
@@ -53,10 +56,19 @@
     private ProjectService projectService;
 
     @Autowired
+    private ProjectClosureService projectClosureService;
+
+    @Autowired
     private IssueStatusService issueStatusService;
 
     @Autowired
     private UserService userService;
+
+    @Autowired
+    private UserDepartmentService userDepartmentService;
+
+    @Autowired
+    private UserDepartmentRepository userDepartmentRepository;
 
     @Autowired
     protected MessageAccessor messageAccessor;
@@ -72,6 +84,9 @@
 
     @Autowired
     private UserWorkspaceService userWorkspaceService;
+
+    @Autowired
+    private ProjectClosureRepository projectClosureRepository;
 
 
     //  �쟾泥� �쐞�젽�쓣 議고쉶�븳�떎.
@@ -173,10 +188,50 @@
         widgetCondition.setProjectIds(projectIds);
         widgetCondition.setProjects(projects);
         widgetCondition.setLoginUserId(this.webAppUtil.getLoginId());
+        this.SetMyDepartmentId(widgetCondition); // 濡쒓렇�씤 �븳 �쑀��媛� �냽�빐�엳�뒗 遺��꽌
         widgetCondition.setCompleteDate(DateUtil.convertDateToStr(new Date()));
         widgetCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
 
         return widgetCondition;
+    }
+
+    void SetMyDepartmentId(WidgetCondition widgetCondition){
+        Long loginId = widgetCondition.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());
+            }
+        }
+        widgetCondition.setMyDepartmentIds(myDepartmentIds);
+    }
+
+    void SetMeAndDownProjectIds(List<Long> parentProjectIds, WidgetCondition widgetCondition) {
+        List<Long> downProjectIds = Lists.newArrayList();
+        if(parentProjectIds != null && parentProjectIds.size() > 0){
+            for(Long parentProjectId : parentProjectIds){
+                List<ProjectClosure> projectClosures = this.projectClosureRepository.findByParentProjectId(parentProjectId); //�궡 �봽濡쒖젥�듃ID媛� �긽�쐞�봽濡쒖젥�듃�씤寃� �엳�뒗吏�
+                if(projectClosures != null && projectClosures.size() > 0){
+                    for(ProjectClosure projectClosure : projectClosures){
+                        if(projectClosure.getParentProject().getId().equals(parentProjectId)){
+                            downProjectIds.add(projectClosure.getProject().getId());
+                            //widgetCondition.setDownProjectIds(downProjectIds);
+                        }else{
+                            downProjectIds.clear();
+                        }
+                    }
+                }else{
+                    downProjectIds.clear();
+                }
+                widgetCondition.setDownProjectIds(downProjectIds);
+                List<Long> meAndDownProjectIds = Lists.newArrayList();
+                meAndDownProjectIds.addAll(widgetCondition.getProjectIds());
+                meAndDownProjectIds.addAll(widgetCondition.getDownProjectIds());
+                widgetCondition.setMeAndDownProjectIds(meAndDownProjectIds);
+            }
+        }
     }
 
     //  �쟾泥� �씠�뒋 �젙蹂대�� 議고쉶�븳�떎.
@@ -191,6 +246,8 @@
         Long completeIssue = 0L; // �셿猷뚮맂 �씠�뒋
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
+
             remainIssue = this.widgetMapper.countRemainIssue(widgetCondition);   //  �옍�뿬 �씠�뒋
             delayIssue = this.widgetMapper.countTodayDelayIssue(widgetCondition); //  吏��뿰�맂 �씠�뒋
             assigneeIssue = this.widgetMapper.countAssigneeIssue(widgetCondition);   //  �븷�떦�맂 �씠�뒋
@@ -221,6 +278,7 @@
         List<Map<String, Object>> progressingProjectDetails = Lists.newArrayList();
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             if (this.userWorkspaceService.checkWorkspaceManager()) {
                 progressingProjectDetails = this.widgetMapper.findProjectProgressAll(widgetCondition);
             } else {
@@ -320,6 +378,7 @@
         Long totalCount = 0L;
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             todayCount = this.widgetMapper.countTodayMyAssigneeIssue(widgetCondition);
             assigneeIssues = this.widgetMapper.findMyAssigneeIssue(widgetCondition);
             totalCount = this.widgetMapper.countMyAssigneeIssue(widgetCondition);
@@ -350,6 +409,8 @@
         Long totalCount = 0L;
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
+
             delayIssues = this.widgetMapper.findDelayIssue(widgetCondition);
             totalCount = this.widgetMapper.countDelayIssue(widgetCondition);
         }
@@ -396,6 +457,7 @@
         Long totalCount = 0L;
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             todayCount = this.widgetMapper.countTodayRegisterIssue(widgetCondition);
             registerIssues = this.widgetMapper.findRegisterIssue(widgetCondition);
             totalCount = this.widgetMapper.countRegisterIssue(widgetCondition);
@@ -420,12 +482,13 @@
         Map<String, Object> results = this.makeWidgetConditionAllProject(widgetCondition, getWidgetCondition);
 
         if (widgetCondition.getProjectId() != null) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             List<Map<String, Object>> projectMemberIssues = this.widgetMapper.findProjectMemberIssue(widgetCondition);
 
             for (Map<String, Object> projectMemberIssue : projectMemberIssues) {
                 Long completeCount = MapUtil.getLong(projectMemberIssue, "completeCount");
                 Long remainCount = MapUtil.getLong(projectMemberIssue, "remainCount");
-                projectMemberIssue.put("account", CommonUtil.decryptAES128(MapUtil.getString(projectMemberIssue, "account")));
+                //projectMemberIssue.put("account", CommonUtil.decryptAES128(MapUtil.getString(projectMemberIssue, "account")));
 
                 //  �봽濡쒖젥�듃 吏꾪뻾瑜� �젙蹂대�� 援ы븳�떎.
                 this.statisticsProject(completeCount, remainCount, projectMemberIssue, "projectProgressPercent");
@@ -449,6 +512,8 @@
         List<Map<String, Object>> assigneeRemainIssueMaps = Lists.newArrayList();
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
+
             registerCompleteIssueMaps = this.widgetMapper.findMyRegisterCompleteIssue(widgetCondition);
             registerRemainIssueMaps = this.widgetMapper.findMyRegisterRemainIssue(widgetCondition);
             assigneeCompleteIssueMaps = this.widgetMapper.findMyAssigneeCompleteIssue(widgetCondition);
@@ -524,6 +589,7 @@
         Long totalCount = 0L;
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             //countChangeStatusAndAssigneeIssue = this.widgetMapper.countChangeStatusAndAssigneeIssue(widgetCondition);
             countChangeStatusAndDepartmentIssue = this.widgetMapper.countChangeStatusAndDepartmentIssue(widgetCondition);
             riskIssues = this.widgetMapper.findRiskIssue(widgetCondition);
@@ -614,6 +680,8 @@
         Long totalIssueCount = 0L;
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
+
             dateCounts = this.widgetMapper.findIssueComplete(widgetCondition);
             totalIssueCount = this.widgetMapper.countTotalIssue(widgetCondition);
         }
@@ -694,6 +762,7 @@
         List<Map<String, Object>> results = Lists.newArrayList();
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             results = this.widgetMapper.findByStandIssueStatus(widgetCondition);
         }
 
@@ -720,6 +789,7 @@
         Map<String, Object> results = this.makeWidgetConditionAllProject(widgetCondition, getWidgetCondition);
 
         if (widgetCondition.getProjectId() != null) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             List<Map<String, Object>> issueTypeIssues = this.widgetMapper.findByStandIssueType(widgetCondition);
             //  �씠�뒋 �젙蹂�
             results.put("issues", issueTypeIssues);
@@ -794,6 +864,8 @@
         Long totalCount = 0L;
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
+
             severityCounts = this.widgetMapper.countSeverityIssue(widgetCondition);
             severityIssues = this.widgetMapper.findSeverityIssues(widgetCondition);
             totalCount = this.widgetMapper.countSearchIssue(widgetCondition);
@@ -1053,6 +1125,7 @@
 
         //  �궡媛� �벑濡앺븳 �씠�뒋
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             registerIssues = this.widgetMapper.findRegisterIssue(widgetCondition);
         }
 
@@ -1094,6 +1167,7 @@
         widgetCondition.setPageSize(totalCount.intValue());
 
         if (widgetCondition.getProjectIds().size() > 0) {
+            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
             delayIssues = this.widgetMapper.findDelayIssue(widgetCondition);
         }
 

--
Gitblit v1.8.0