From c88104169bc4fe457f98f33a91574c4dd33da573 Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 금, 03 12월 2021 20:08:01 +0900 Subject: [PATCH] - api 입력 오류 수정 - api 기본값 및 중복 설정 적용 수정 --- src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 97 insertions(+), 19 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 28299c9..255db28 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; @@ -47,6 +46,9 @@ @Autowired private DepartmentService departmentService; + + @Autowired + private UserDepartmentService userDepartmentService; @Autowired private ProjectRoleService projectRoleService; @@ -118,7 +120,7 @@ project.setDefaultYn(true); this.projectRepository.saveAndFlush(project); // �봽濡쒖젥�듃 湲곕낯 �뿭�븷怨� 愿�由ъ옄 �뿭�븷�쓣 �깮�꽦�븳�떎. 愿�由ъ옄�뒗 �깮�꽦�븳 �궗�슜�옄 - this.projectRoleService.addDefaultProjectRole(project, Lists.newArrayList(user), Lists.newArrayList()); + this.projectRoleService.addDefaultProjectRoleUser(project, Lists.newArrayList(user), Lists.newArrayList()); // 媛� �봽濡쒖젥�듃�쓽 �씠�뒋 踰덊샇瑜� �옄�룞�쑝濡� �깮�꽦�븳�떎. this.issueNumberGeneratorService.generateIssueNumber(project); @@ -141,7 +143,7 @@ // �긽�깭 泥댄겕 this.verifyProjectStatus(projectForm.getStatus()); // �궇吏� �쑀�슚�꽦 泥댄겕 - this.checkStartEndDate(projectForm.getStartDate(), projectForm.getEndDate()); + //this.checkStartEndDate(projectForm.getStartDate(), projectForm.getEndDate()); // 愿�由ъ옄 �쑀�슚�꽦 泥댄겕 this.verifyManager(projectForm.getManagerIds()); @@ -184,16 +186,8 @@ sendEmails.add(user.getAccount()); } - List<Department> departments = Lists.newArrayList(); - // 遺��꽌 �벑濡� - for (Long departmentId : projectForm.getDepartmentIds()) { - Department department = this.departmentService.getDepartment(departmentId); - departments.add(department); - } - // 湲곕낯, 愿�由ъ옄 �봽濡쒖젥�듃 �뿭�븷�쓣 �깮�꽦�븯怨� �궗�슜�옄瑜� �빐�떦 �뿭�븷�뿉 諛곗젙�븳�떎. - //this.projectRoleService.addDefaultProjectRole(project, managers, users); - this.projectRoleService.addDefaultProjectRole(project, managers, departments); + this.projectRoleService.addDefaultProjectRoleUser(project, managers, users); // �봽濡쒖젥�듃 李몄뿬�옄�뱾�뿉寃� �씠硫붿씪 諛쒖넚�쓣 �삁�빟�븳�떎. Map<String, Object> projectMap = new HashMap<>(); @@ -221,15 +215,22 @@ } List<Department> departments = Lists.newArrayList(); + List<String> sendEmails = Lists.newArrayList(); // 硫붿씪 ���긽�옄 // 遺��꽌 �벑濡� for (Long departmentId : projectForm.getDepartmentIds()) { Department department = this.departmentService.getDepartment(departmentId); + /*List<UserDepartment> userDepartments = this.userDepartmentService.getUserDepartments(departmentId); + if(userDepartments != null){ + for (UserDepartment userDepartment : userDepartments){ + User user = this.userService.getUser(userDepartment.getUserId()); + sendEmails.add(user.getAccount()); + } + }*/ departments.add(department); } - // 湲곕낯, 愿�由ъ옄 �봽濡쒖젥�듃 �뿭�븷�쓣 �깮�꽦�븯怨� �궗�슜�옄瑜� �빐�떦 �뿭�븷�뿉 諛곗젙�븳�떎. - //this.projectRoleService.addDefaultProjectRole(project, managers, users); - this.projectRoleService.addDefaultProjectRole(project, managers, departments); + // 湲곕낯, 愿�由ъ옄 �봽濡쒖젥�듃 �뿭�븷�쓣 �깮�꽦�븯怨� �떞�떦遺��꽌瑜� �빐�떦 �뿭�븷�뿉 諛곗젙�븳�떎. + this.projectRoleService.addDefaultProjectRoleDepartment(project, managers, departments); // �봽濡쒖젥�듃 李몄뿬�옄�뱾�뿉寃� �씠硫붿씪 諛쒖넚�쓣 �삁�빟�븳�떎. Map<String, Object> projectMap = new HashMap<>(); @@ -244,6 +245,8 @@ stringBuilder.append(")"); projectMap.put("projectManagerName", stringBuilder.toString()); + // �봽濡쒖젥�듃 �떞�떦遺��꽌 硫붿씪 諛쒖넚 �삁�빟 + this.systemEmailService.reservationEmail(sendEmails.toArray(new String[sendEmails.size()]), EmailType.PROJECT_DEFAULT_INCLUDE, projectMap); } @@ -407,7 +410,7 @@ this.setProjectUser(projectVo, false); // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 遺��꽌 �꽭�똿 - //this.setProjectDepartment(projectVo); + this.setProjectDepartment(projectVo); // �뾽臾닿났媛� �떞�떦�옄�뒗 紐⑤뱺 �봽濡쒖젥�듃瑜� �닔�젙/�궘�젣�븷 �닔 �엳�뼱�빞 �븳�떎. if (this.userWorkspaceService.checkWorkspaceManager()) { @@ -500,7 +503,7 @@ case "01": // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �궗�슜�옄, 愿�由ъ옄 �젙蹂대�� �뀑�똿�븳�떎. this.setProjectUser(projectVo, true); this.setProjectUser(projectVo, false); - //this.setProjectDepartment(projectVo); //遺��꽌 �젙蹂� �꽭�똿 + this.setProjectDepartment(projectVo); //遺��꽌 �젙蹂� �꽭�똿 break; } } @@ -519,7 +522,7 @@ // �긽�깭 泥댄겕 this.verifyProjectStatus(projectForm.getStatus()); // �궇吏� �쑀�슚�꽦 泥댄겕 - this.checkStartEndDate(projectForm.getStartDate(), projectForm.getEndDate()); + //this.checkStartEndDate(projectForm.getStartDate(), projectForm.getEndDate()); // 愿�由ъ옄 �쑀�슚�꽦 泥댄겕 this.verifyManager(projectForm.getManagerIds()); @@ -537,6 +540,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); @@ -555,7 +559,9 @@ this.checkExcludeDepartmentAndRemoveIssueDepartment(project, existDepartmentIds, changeDepartmentIds); // 愿�由ъ옄/�씪諛� �궗�슜�옄 蹂�寃� �궡�뿭�쓣 �넻吏��븳�떎. - this.notificationProjectRoleUser(changeProjectManagerNotifications, changeProjectUserNotifications, project); + //this.notificationProjectRoleUser(changeProjectManagerNotifications, changeProjectUserNotifications, project); + // 愿�由ъ옄/�떞�떦遺��꽌 蹂�寃� �궡�뿭�쓣 �넻吏��븳�떎. + this.notificationProjectRoleDepartment(changeProjectManagerNotifications, changeProjectDepartmentNotifications, project); return project; } @@ -728,6 +734,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); + } + + // �젣�쇅 ���긽�옄 李얘린, oldDepartment �뿉�뒗 �엳�뒗�뜲 newDepartment �뿉 �뾾�쑝硫� �젣�쇅 ���긽 + List<String> excludeDepartments = this.systemEmailService.notificationDepartmentChange(oldDepartment, newDepartment); + // 李몄뿬 ���긽�옄 李얘린, newDepartment �뿉�뒗 �엳�뒗�뜲 oldDepartment �뿉 �뾾�쑝硫� 珥덈�諛쏆� ���긽 + 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"); // 愿�由ъ옄 �젣�쇅 �궗�슜�옄 @@ -795,6 +832,47 @@ this.sendEmailProjectRoleChange(this.checkDuplicationEmails(projectUserIncludeUsers, excludeManagerAndIncludeUser, excludeUserAndIncludeManager), EmailType.PROJECT_DEFAULT_INCLUDE, projectMap); } + // �봽濡쒖젥�듃 李몄뿬, �젣�쇅 �넻吏� �젙蹂� 泥댄겕 + private void notificationProjectRoleDepartment(Map<String, Object> changeProjectManagerNotifications, Map<String, Object> changeProjectDepartmentNotifications, Project project) { + List<String> projectManagerExcludeUsers = (List<String>) changeProjectManagerNotifications.get("excludeUsers"); // 愿�由ъ옄 �젣�쇅 �궗�슜�옄 + List<String> projectManagerIncludeUsers = (List<String>) changeProjectManagerNotifications.get("includeUsers"); // 愿�由ъ옄 李몄뿬 �궗�슜�옄 + List<String> projectDepartmentExcludeDepartments = (List<String>) changeProjectDepartmentNotifications.get("excludeDepartments"); // �젣�쇅�맂 �떞�떦 遺��꽌 + List<String> projectDepartmentIncludeDepartments = (List<String>) changeProjectDepartmentNotifications.get("includeDepartments"); // 李몄뿬�맂 �떞�떦 遺��꽌 + Map<String, Object> projectMap = new HashMap<>(); + projectMap.put("workspaceName", project.getWorkspace().getName()); + projectMap.put("projectName", project.getName()); + projectMap.put("registerDate", DateUtil.convertDateToStr(new Date())); + + Map<String, Object> projectRoleManagerMap = new HashMap<>(); + projectRoleManagerMap.put("id", project.getId()); + projectRoleManagerMap.put("statuses", Lists.newArrayList("02")); // 愿�由ъ옄 議고쉶 + + // 愿�由ъ옄 �젙蹂� �뀑�똿 + List<Map<String, Object>> projectRoleManagers = this.projectRoleUserService.findProjectRoleUser(projectRoleManagerMap); + + if (projectRoleManagers != null && !projectRoleManagers.isEmpty()) { + for (Map<String, Object> projectRoleManager : projectRoleManagers) { + UserVo userVo = ConvertUtil.convertMapToClass(projectRoleManager, UserVo.class); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(userVo.getName()); + stringBuilder.append("("); + stringBuilder.append(CommonUtil.decryptAES128(userVo.getAccount())); + stringBuilder.append(")"); + + projectMap.put("projectManagerName", stringBuilder.toString()); + } + } + + // 愿�由ъ옄 �젣�쇅 硫붿씪 + this.sendEmailProjectRoleChange(projectManagerExcludeUsers, EmailType.PROJECT_MANAGER_EXCLUDE, projectMap); + // 愿�由ъ감 李몄뿬 硫붿씪 + this.sendEmailProjectRoleChange(projectManagerIncludeUsers, EmailType.PROJECT_MANAGER_INCLUDE, projectMap); + // �떞�떦 遺��꽌 �젣�쇅 硫붿씪 + this.sendEmailProjectRoleChange(projectDepartmentExcludeDepartments, EmailType.PROJECT_DEFAULT_EXCLUDE, projectMap); + // �떞�떦 遺��꽌 李몄뿬 硫붿씪 + this.sendEmailProjectRoleChange(projectDepartmentIncludeDepartments, EmailType.PROJECT_DEFAULT_INCLUDE, projectMap); + } + // 以묐났�쑝濡� �굹媛��뒗 硫붿씪�씠 �엳�뒗吏� 泥댄겕�븳�떎. private List<String> checkDuplicationEmails(List<String> checkEmails, List<String> excludeManagerAndIncludeUser, List<String> excludeUserAndIncludeManager) { List<String> sendProjectManagerExcludeUserEmails = Lists.newArrayList(); -- Gitblit v1.8.0