OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-11-30 bcf1555957d606938b4e5e72aaeba8a2ab555947
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);
        }