From 2341721b26034622386864d0fe3e798f692c5a9e Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 목, 25 11월 2021 15:11:32 +0900 Subject: [PATCH] 프로젝트 담당부서 수정 --- src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java | 33 ++++++++++++++++ src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java | 25 ++++++++++++ src/main/java/kr/wisestone/owl/domain/Department.java | 13 ++++++ src/main/java/kr/wisestone/owl/service/SystemEmailService.java | 3 + 4 files changed, 73 insertions(+), 1 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/domain/Department.java b/src/main/java/kr/wisestone/owl/domain/Department.java index 8ec34a2..1fad1bd 100644 --- a/src/main/java/kr/wisestone/owl/domain/Department.java +++ b/src/main/java/kr/wisestone/owl/domain/Department.java @@ -3,6 +3,7 @@ import javax.persistence.*; import java.io.Serializable; import java.util.HashSet; +import java.util.Iterator; import java.util.Set; @Entity @@ -54,4 +55,16 @@ this.projectRoleDepartments.add(projectRoleDepartment); } + + public void removeProjectRole(ProjectRole projectRole) { + Iterator<ProjectRoleDepartment> iterator = this.projectRoleDepartments.iterator(); + + while (iterator.hasNext()) { + ProjectRoleDepartment projectRoleDepartment = iterator.next(); + if (projectRole.getId().equals(projectRoleDepartment.getProjectRole().getId())) { + this.projectRoleDepartments.remove(projectRoleDepartment); + break; + } + } + } } diff --git a/src/main/java/kr/wisestone/owl/service/SystemEmailService.java b/src/main/java/kr/wisestone/owl/service/SystemEmailService.java index cd86e74..d74e2f7 100644 --- a/src/main/java/kr/wisestone/owl/service/SystemEmailService.java +++ b/src/main/java/kr/wisestone/owl/service/SystemEmailService.java @@ -1,5 +1,6 @@ package kr.wisestone.owl.service; +import kr.wisestone.owl.domain.Department; import kr.wisestone.owl.domain.SystemEmail; import kr.wisestone.owl.domain.User; import kr.wisestone.owl.domain.enumType.EmailType; @@ -16,6 +17,8 @@ List<String> notificationUserChange(List<User> totalUsers, List<User> targetUsers); + List<String> notificationDepartmentChange(List<Department> totalDepartments, List<Department> targetDepartments); + void reservationEmail(String[] sendUsers, EmailType emailType, Map<String, Object> params); List<SystemEmail> findBySendAddressAndSendYn(String sendAddress); 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 28299c9..b973a4c 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java @@ -15,7 +15,6 @@ import kr.wisestone.owl.util.CommonUtil; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.DateUtil; -import kr.wisestone.owl.util.MapUtil; import kr.wisestone.owl.vo.*; import kr.wisestone.owl.web.condition.ProjectCondition; import kr.wisestone.owl.web.form.ProjectForm; @@ -537,6 +536,7 @@ Map<String, Object> changeProjectManagerNotifications = this.modifyProjectManagers(project, projectForm, ProjectRole.TYPE_MANAGER); // �씪諛� �궗�슜�옄 蹂�寃� Map<String, Object> changeProjectUserNotifications = this.modifyProjectManagers(project, projectForm, ProjectRole.TYPE_DEFAULT); + Map<String, Object> changeProjectDepartmentNotifications = this.modifyProjectDepartments(project, projectForm); ConvertUtil.copyProperties(projectForm, project, "id", "projectType"); this.projectRepository.saveAndFlush(project); @@ -728,6 +728,37 @@ } + // 愿�由ъ옄瑜� 蹂�寃쏀븳�떎. + private Map<String, Object> modifyProjectDepartments(Project project, ProjectForm projectForm) { + ProjectRole projectRole = this.projectRoleService.findByProjectIdAndRoleType(project.getId(), ProjectRole.TYPE_DEFAULT); + List<Department> oldDepartment = Lists.newArrayList(); + List<Department> newDepartment = Lists.newArrayList(); + Map<String, Object> results = new HashMap<>(); + + for (ProjectRoleDepartment projectRoleDepartment : projectRole.getProjectRoleDepartments()) { + Department department = projectRoleDepartment.getDepartment(); + oldDepartment.add(department); + department.removeProjectRole(projectRole); + } + projectRole.getProjectRoleDepartments().clear(); + + for (Long departmentId : projectForm.getDepartmentIds()) { + Department department = this.departmentService.getDepartment(departmentId); + department.addProjectRole(projectRole); + } + + // �젣�쇅 ���긽�옄 李얘린, oldManager �뿉�뒗 �엳�뒗�뜲 newManager �뿉 �뾾�쑝硫� �젣�쇅 ���긽 + List<String> excludeDepartments = this.systemEmailService.notificationDepartmentChange(oldDepartment, newDepartment); + // 李몄뿬 ���긽�옄 李얘린, newManager �뿉�뒗 �엳�뒗�뜲 oldManager �뿉 �뾾�쑝硫� 珥덈�諛쏆� ���긽 + List<String> includeDepartments = this.systemEmailService.notificationDepartmentChange(newDepartment, oldDepartment); + + results.put("excludeDepartments", excludeDepartments); + results.put("includeDepartments", includeDepartments); + + return results; + + } + // �봽濡쒖젥�듃 李몄뿬, �젣�쇅 �넻吏� �젙蹂대�� 以묐났�쑝濡� �굹媛�吏� �븡�룄濡� 泥댄겕�븳�떎. private void notificationProjectRoleUser(Map<String, Object> changeProjectManagerNotifications, Map<String, Object> changeProjectUserNotifications, Project project) { List<String> projectManagerExcludeUsers = (List<String>) changeProjectManagerNotifications.get("excludeUsers"); // 愿�由ъ옄 �젣�쇅 �궗�슜�옄 diff --git a/src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java index d6f06f8..60a400c 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/SystemEmailServiceImpl.java @@ -9,6 +9,7 @@ import kr.wisestone.owl.config.CommonConfiguration; import kr.wisestone.owl.constant.MailConstants; import kr.wisestone.owl.constant.MsgConstants; +import kr.wisestone.owl.domain.Department; import kr.wisestone.owl.domain.SystemEmail; import kr.wisestone.owl.domain.User; import kr.wisestone.owl.domain.enumType.EmailType; @@ -298,6 +299,30 @@ return results; } + // �봽濡쒖젥�듃�뿉�꽌 蹂�寃쎈맂 �떞�떦遺��꽌瑜� 李얘린 �쐞�빐 �궗�슜 + @Override + @Transactional(readOnly = true) + public List<String> notificationDepartmentChange(List<Department> totalDepartments, List<Department> targetDepartments) { + List<String> results = Lists.newArrayList(); + + // �젣�쇅 ���긽�옄 李얘린 + for (Department department : totalDepartments) { + boolean excludeCheck = true; + + for (Department newDepartment : targetDepartments) { + if (department.getId().equals(newDepartment.getId())) { + excludeCheck = false; + break; + } + } + + if (excludeCheck) { + results.add(department.getDepartmentName()); + } + } + return results; + } + // �븘吏� 諛쒖넚�릺吏� �븡�� �씠硫붿씪�쓣 議고쉶�븳�떎. @Override @Transactional(readOnly = true) -- Gitblit v1.8.0