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