From b98d25d2425b932e70efb1b6ea6bec436cd3f6f2 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 금, 19 11월 2021 13:35:30 +0900 Subject: [PATCH] 프로젝트 담당부서 백엔드 수정 * 프로젝트에 속해있는 부서만 이슈 담당부서로 설정 가능 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 2 src/main/java/kr/wisestone/owl/domain/Department.java | 2 src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java | 2 src/main/java/kr/wisestone/owl/constant/MsgConstants.java | 1 src/main/java/kr/wisestone/owl/vo/ProjectVo.java | 10 ++ src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties | 1 src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java | 3 src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml | 11 -- src/main/webapp/scripts/app/project/projectAdd.controller.js | 1 src/main/java/kr/wisestone/owl/service/ProjectRoleService.java | 4 src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java | 106 ++++++++++++++++++++++++++ src/main/java/kr/wisestone/owl/web/form/ProjectForm.java | 13 +++ src/main/java/kr/wisestone/owl/web/condition/ProjectCondition.java | 13 +++ src/main/java/kr/wisestone/owl/service/impl/ProjectRoleServiceImpl.java | 29 ++++++- src/main/java/kr/wisestone/owl/domain/ProjectRole.java | 20 +++++ 15 files changed, 194 insertions(+), 24 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java index bdface4..cdb4a8b 100644 --- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java +++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java @@ -223,4 +223,5 @@ public static final String ISP_NOT_EXIST = "ISP_NOT_EXIST"; // ISP媛� 議댁옱�븯吏� �븡�뒿�땲�떎. public static final String ISP_REMOVE_NOT_SELECT = "ISP_REMOVE_NOT_SELECT"; // �궘�젣�븷 ISP媛� �꽑�깮�릺吏� �븡�븯�뒿�땲�떎. + public static final String PROJECT_NOT_INCLUDE_DEPARTMENT = "PROJECT_NOT_INCLUDE_DEPARTMENT"; // �꽑�깮�븳 遺��꽌 以� �봽濡쒖젥�듃�뿉 李몄뿬�븯怨� �엳吏� �븡�� 遺��꽌媛� �엳�뒿�땲�떎. } diff --git a/src/main/java/kr/wisestone/owl/domain/Department.java b/src/main/java/kr/wisestone/owl/domain/Department.java index aaf363e..8ec34a2 100644 --- a/src/main/java/kr/wisestone/owl/domain/Department.java +++ b/src/main/java/kr/wisestone/owl/domain/Department.java @@ -48,7 +48,7 @@ public void addProjectRole(ProjectRole projectRole) { if (this.projectRoleDepartments == null) { - this.projectRoleDepartments = new HashSet<ProjectRoleDepartment>(); + this.projectRoleDepartments = new HashSet<>(); } ProjectRoleDepartment projectRoleDepartment = new ProjectRoleDepartment(projectRole, this); diff --git a/src/main/java/kr/wisestone/owl/domain/ProjectRole.java b/src/main/java/kr/wisestone/owl/domain/ProjectRole.java index 832baa0..e536973 100644 --- a/src/main/java/kr/wisestone/owl/domain/ProjectRole.java +++ b/src/main/java/kr/wisestone/owl/domain/ProjectRole.java @@ -30,6 +30,9 @@ private Set<ProjectRoleUser> projectRoleUsers = new HashSet<>(); @OneToMany(mappedBy="projectRole", cascade={CascadeType.ALL}, orphanRemoval=true) + private Set<ProjectRoleDepartment> projectRoleDepartments = new HashSet<>(); + + @OneToMany(mappedBy="projectRole", cascade={CascadeType.ALL}, orphanRemoval=true) private Set<ProjectRolePermission> projectRolePermissions = new HashSet<>(); public ProjectRole(){} @@ -80,6 +83,14 @@ this.projectRoleUsers = projectRoleUsers; } + public Set<ProjectRoleDepartment> getProjectRoleDepartments() { + return projectRoleDepartments; + } + + public void setProjectRoleDepartments(Set<ProjectRoleDepartment> projectRoleDepartments) { + this.projectRoleDepartments = projectRoleDepartments; + } + public Set<ProjectRolePermission> getProjectRolePermissions() { return projectRolePermissions; } @@ -97,6 +108,15 @@ this.projectRoleUsers.add(projectRoleUser); } + public void addDepartment(Department department) { + if (this.projectRoleDepartments == null) { + this.projectRoleDepartments = new HashSet<>(); + } + ProjectRoleDepartment projectRoleDepartment = new ProjectRoleDepartment(this, department); + + this.projectRoleDepartments.add(projectRoleDepartment); + } + public void removeProjectRole(User user) { Iterator<ProjectRoleUser> iterator = this.projectRoleUsers.iterator(); diff --git a/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java b/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java index 56f716e..5e38f1e 100644 --- a/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java +++ b/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java @@ -11,7 +11,4 @@ List<ProjectRoleDepartment> findByProjectRoleId(@Param("projectRoleId") Long projectRoleId); ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(@Param("projectRoleId") Long projectRoleId, @Param("departmentId") Long departmentId); - - //ProjectRoleUser findByProjectRoleIdAndDepartmentId(@Param("projectRoleId") Long projectRoleId, @Param("departmentId") Long departmentId); - } diff --git a/src/main/java/kr/wisestone/owl/service/ProjectRoleService.java b/src/main/java/kr/wisestone/owl/service/ProjectRoleService.java index 7940a56..c7d13d0 100644 --- a/src/main/java/kr/wisestone/owl/service/ProjectRoleService.java +++ b/src/main/java/kr/wisestone/owl/service/ProjectRoleService.java @@ -1,5 +1,6 @@ package kr.wisestone.owl.service; +import kr.wisestone.owl.domain.Department; import kr.wisestone.owl.domain.Project; import kr.wisestone.owl.domain.ProjectRole; import kr.wisestone.owl.domain.User; @@ -9,7 +10,8 @@ public interface ProjectRoleService extends AbstractService<ProjectRole, Long, JpaRepository<ProjectRole, Long>>{ - void addDefaultProjectRole(Project project, List<User> managers, List<User> users); + //void addDefaultProjectRole(Project project, List<User> managers, List<User> users); + void addDefaultProjectRole(Project project, List<User> managers, List<Department> departments); ProjectRole findByProjectIdAndRoleType(Long projectId, String roleType); } diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java index de17002..97eb0cc 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -1142,7 +1142,7 @@ // �뜲�씠�꽣 蹂댁젙 �옉�뾽 - �봽濡쒖젥�듃�뿉�꽌 �젣�쇅�맂 �궗�슜�옄�뒗 �떞�떦�옄�뿉�꽌 �젣�쇅 �맆 �닔 �엳�룄濡� 泥섎━ if (!includeProject) { throw new OwlRuntimeException( - this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_USER)); + this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_DEPARTMENT)); } } // 李몄뿬 �솗�씤�맂 遺��꽌濡� �떞�떦遺��꽌 蹂�寃� diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java index b9d6163..f98bae8 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java @@ -57,7 +57,7 @@ return this.projectRoleDepartmentRepository.findByProjectRoleIdAndDepartmentId(projectRoleId, departmentId); } - // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �궗�슜�옄, �봽濡쒖젥�듃 愿�由ъ옄瑜� �뙆�씪誘명꽣�뿉 �뵲�씪 議고쉶�븳�떎. + // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 遺��꽌瑜� �뙆�씪誘명꽣�뿉 �뵲�씪 議고쉶�븳�떎. @Override @Transactional(readOnly = true) public List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap) { diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleServiceImpl.java index e9a70b6..c36dc52 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleServiceImpl.java @@ -26,6 +26,9 @@ private ProjectRoleUserService projectRoleUserService; @Autowired + private ProjectRoleDepartmentService projectRoleDepartmentService; + + @Autowired private ProjectRolePermissionService projectRolePermissionService; @Override @@ -34,7 +37,7 @@ } // 湲곕낯, 愿�由ъ옄 �봽濡쒖젥�듃 �뿭�븷�쓣 �깮�꽦�븳�떎. - @Override + /*@Override @Transactional public void addDefaultProjectRole(Project project, List<User> managers, List<User> users) { ProjectRole projectRole = this.addProjectRole(project, "湲곕낯 �봽濡쒖젥�듃 �뿭�븷", ProjectRole.TYPE_DEFAULT, Permission.ROLE_TYPE_PROJECT_JOIN); @@ -42,7 +45,23 @@ // �봽濡쒖젥�듃 愿�由ъ옄 ���옣 this.projectRoleAssociatedUser(managers, managerProjectRole); // �봽濡쒖젥�듃 �씪諛� �궗�슜�옄 ���옣 - this.projectRoleAssociatedUser(users, projectRole); + //this.projectRoleAssociatedUser(users, projectRole); + + this.projectRoleRepository.flush(); + }*/ + + // �봽濡쒖젥�듃 �뿭�븷 �깮�꽦(愿�由ъ옄, �떞�떦遺��꽌) + @Override + @Transactional + public void addDefaultProjectRole(Project project, List<User> managers, List<Department> departments) { + ProjectRole projectRole = this.addProjectRole(project, "湲곕낯 �봽濡쒖젥�듃 �뿭�븷", ProjectRole.TYPE_DEFAULT, Permission.ROLE_TYPE_PROJECT_JOIN); + ProjectRole managerProjectRole = this.addProjectRole(project, "�봽濡쒖젥�듃 愿�由ъ옄 �뿭�븷", ProjectRole.TYPE_MANAGER, Permission.ROLE_TYPE_PROJECT_MANAGER); + // �봽濡쒖젥�듃 愿�由ъ옄 ���옣 + this.projectRoleAssociatedUser(managers, managerProjectRole); + // �봽濡쒖젥�듃 �씪諛� �궗�슜�옄 ���옣 + //this.projectRoleAssociatedUser(users, projectRole); + // �봽濡쒖젥�듃 �떞�떦 遺��꽌 ���옣 + this.projectRoleAssociatedDepartment(departments, projectRole); this.projectRoleRepository.flush(); } @@ -64,7 +83,7 @@ } } - /*// �봽濡쒖젥�듃 �뿭�븷怨� 遺��꽌 �뿰寃� + // �봽濡쒖젥�듃 �뿭�븷怨� 遺��꽌 �뿰寃� private void projectRoleAssociatedDepartment(List<Department> departments, ProjectRole projectRole) { for (Department department : departments) { this.addDefaultProjectRoleAssociatedDepartment(projectRole, department); @@ -73,13 +92,13 @@ // �빐�떦 �뿭�븷怨� 遺��꽌瑜� �뿰寃곗떆�궓�떎. private void addDefaultProjectRoleAssociatedDepartment(ProjectRole projectRole, Department department) { - ProjectRoleUser projectRoleDepartment = this.projectRoleUserService.findByProjectRoleIdAndDepartmentId(projectRole.getId(), department.getId()); + ProjectRoleDepartment projectRoleDepartment = this.projectRoleDepartmentService.findByProjectRoleIdAndDepartmentId(projectRole.getId(), department.getId()); if (projectRoleDepartment == null) { // �봽濡쒖젥�듃 愿�由ъ옄 - 湲곕낯 �봽濡쒖젥�듃 �뿭�븷�뿉 異붽�. department.addProjectRole(projectRole); } - }*/ + } // �봽濡쒖젥�듃 �뿭�븷�쓣 �깮�꽦�븳�떎. private ProjectRole addProjectRole(Project project, String projectRoleName, String projectRoleType, String permissionType) { 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 e6ace4a..28299c9 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectServiceImpl.java @@ -46,6 +46,9 @@ private UserService userService; @Autowired + private DepartmentService departmentService; + + @Autowired private ProjectRoleService projectRoleService; @Autowired @@ -64,6 +67,9 @@ private ProjectRoleUserService projectRoleUserService; @Autowired + private ProjectRoleDepartmentService projectRoleDepartmentService; + + @Autowired private AttachedFileService attachedFileService; @Autowired @@ -71,6 +77,9 @@ @Autowired private IssueUserService issueUserService; + + @Autowired + private IssueDepartmentService issueDepartmentService; @Autowired private IssueNumberGeneratorService issueNumberGeneratorService; @@ -148,7 +157,8 @@ // 媛� �봽濡쒖젥�듃�쓽 �씠�뒋 踰덊샇瑜� �옄�룞�쑝濡� �깮�꽦�븳�떎. this.issueNumberGeneratorService.generateIssueNumber(project); // �씪諛� �궗�슜�옄 諛� 愿�由ъ옄瑜� �벑濡앺븯怨� �궗�슜�옄�뱾�뿉寃� �빐�떦 �뿭�븷�쓣 諛곗젙�븳�떎. - this.registerManagerAndUser(projectForm, project); + //this.registerManagerAndUser(projectForm, project); + this.registerManagerAndDepartment(projectForm, project); // �봽濡쒖젥�듃 �쑀�삎�뿉 �뵲瑜� �썙�겕�뵆濡쒖슦 �깮�꽦 this.workflowStatusService.addDefaultWorkflowStatus(project, ProjectType.valueOf(projectForm.getProjectType())); @@ -174,8 +184,16 @@ 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, users); + this.projectRoleService.addDefaultProjectRole(project, managers, departments); // �봽濡쒖젥�듃 李몄뿬�옄�뱾�뿉寃� �씠硫붿씪 諛쒖넚�쓣 �삁�빟�븳�떎. Map<String, Object> projectMap = new HashMap<>(); @@ -192,6 +210,40 @@ projectMap.put("projectManagerName", stringBuilder.toString()); // �봽濡쒖젥�듃 �씪諛� 李몄뿬 硫붿씪 諛쒖넚 �삁�빟 this.systemEmailService.reservationEmail(sendEmails.toArray(new String[sendEmails.size()]), EmailType.PROJECT_DEFAULT_INCLUDE, projectMap); + } + + private void registerManagerAndDepartment(ProjectForm projectForm, Project project) { + List<User> managers = Lists.newArrayList(); + // 愿�由ъ옄 �벑濡� + for (Long managerId : projectForm.getManagerIds()) { + User user = this.userService.getUser(managerId); + managers.add(user); + } + + 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); + + // �봽濡쒖젥�듃 李몄뿬�옄�뱾�뿉寃� �씠硫붿씪 諛쒖넚�쓣 �삁�빟�븳�떎. + Map<String, Object> projectMap = new HashMap<>(); + projectMap.put("workspaceName", project.getWorkspace().getName()); + projectMap.put("projectName", project.getName()); + projectMap.put("registerDate", DateUtil.convertDateToStr(new Date())); + + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(managers.get(0).getName()); + stringBuilder.append("("); + stringBuilder.append(CommonUtil.decryptAES128(managers.get(0).getAccount())); + stringBuilder.append(")"); + + projectMap.put("projectManagerName", stringBuilder.toString()); } @@ -353,6 +405,10 @@ // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �궗�슜�옄瑜� �뀑�똿�븳�떎. - 愿�由ъ옄 / �씪諛� �궗�슜�옄 this.setProjectUser(projectVo, true); this.setProjectUser(projectVo, false); + + // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 遺��꽌 �꽭�똿 + //this.setProjectDepartment(projectVo); + // �뾽臾닿났媛� �떞�떦�옄�뒗 紐⑤뱺 �봽濡쒖젥�듃瑜� �닔�젙/�궘�젣�븷 �닔 �엳�뼱�빞 �븳�떎. if (this.userWorkspaceService.checkWorkspaceManager()) { projectVo.setModifyPermissionCheck(true); @@ -401,6 +457,26 @@ } } + // �떞�떦遺��꽌瑜� 議곌굔�뿉 �뵲�씪 李얠븘以��떎. + private void setProjectDepartment(ProjectVo projectVo) { + Map<String, Object> projectRoleDepartmentMap = new HashMap<>(); + projectRoleDepartmentMap.put("id", projectVo.getId()); + + // 遺��꽌 �젙蹂� �뀑�똿 + List<Map<String, Object>> projectRoleDepartments = this.projectRoleDepartmentService.findProjectRoleDepartment(projectRoleDepartmentMap); + + if (projectRoleDepartments != null && !projectRoleDepartments.isEmpty()) { + List<DepartmentVo> departmentVos = Lists.newArrayList(); + + for (Map<String, Object> projectRoleDepartment : projectRoleDepartments) { + DepartmentVo departmentVo = ConvertUtil.convertMapToClass(projectRoleDepartment, DepartmentVo.class); + departmentVo.setByName(departmentVo.getDepartmentName()); + departmentVos.add(departmentVo); + } + projectVo.setProjectDepartmentVos(departmentVos); + } + } + // �봽濡쒖젥�듃 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎. @Override @@ -424,6 +500,7 @@ case "01": // �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 �궗�슜�옄, 愿�由ъ옄 �젙蹂대�� �뀑�똿�븳�떎. this.setProjectUser(projectVo, true); this.setProjectUser(projectVo, false); + //this.setProjectDepartment(projectVo); //遺��꽌 �젙蹂� �꽭�똿 break; } } @@ -449,6 +526,8 @@ Project project = this.getProject(projectForm.getId()); // �봽濡쒖젥�듃 李몄뿬 �궗�슜�옄 List<Long> existUserIds = this.getIncludeProjectUser(project); + // �봽濡쒖젥�듃 李몄뿬 遺��꽌 + List<Long> existDepartmentIds = this.getIncludeProjectDepartment(project); // �썙�겕�뒪�럹�씠�뒪�뿉�꽌 湲곕낯�쑝濡� �젣怨듬릺�뒗 �봽濡쒖젥�듃�뿉 ���븳 泥댄겕 this.checkDefaultProject(project, projectForm); @@ -469,9 +548,11 @@ // �빐�떦 �봽濡쒖젥�듃�뿉 李몄뿬�븯�뒗 紐⑤뱺 �궗�슜�옄 議고쉶 // 鍮좎쭊 �궗�엺�씠 愿�由ы븯�뒗 �씠�뒋 �쟾泥� 議고쉶 �썑 �뜲�씠�꽣 �궘�젣 List<Long> changeUserIds = this.getIncludeProjectUser(project); + List<Long> changeDepartmentIds = this.getIncludeProjectDepartment(project); // 李몄뿬�뿉�꽌 �젣�쇅�맂 �궗�슜�옄瑜� 李얘퀬 �떞�떦�븯怨� �엳�뜕 �씠�뒋�뿉�꽌 �젣�쇅�븳�떎. this.checkExcludeUserAndRemoveIssueAssignee(project, existUserIds, changeUserIds); + this.checkExcludeDepartmentAndRemoveIssueDepartment(project, existDepartmentIds, changeDepartmentIds); // 愿�由ъ옄/�씪諛� �궗�슜�옄 蹂�寃� �궡�뿭�쓣 �넻吏��븳�떎. this.notificationProjectRoleUser(changeProjectManagerNotifications, changeProjectUserNotifications, project); @@ -512,6 +593,20 @@ return Lists.newArrayList(includeUserIds); } + // �봽濡쒖젥�듃 李몄뿬 遺��꽌 + private List<Long> getIncludeProjectDepartment(Project project) { + Set<Long> includeDepartmentIds = new HashSet<>(); + + for (ProjectRole projectRole : project.getProjectRoles()) { + List<ProjectRoleDepartment> projectRoleDepartments = this.projectRoleDepartmentService.findByProjectRoleId(projectRole.getId()); + + for (ProjectRoleDepartment projectRoleDepartment : projectRoleDepartments) { + includeDepartmentIds.add(projectRoleDepartment.getDepartment().getId()); + } + } + return Lists.newArrayList(includeDepartmentIds); + } + // 李몄뿬�뿉�꽌 �젣�쇅�맂 �궗�슜�옄瑜� 李얘퀬 �떞�떦�븯怨� �엳�뜕 �씠�뒋�뿉�꽌 �젣�쇅�븳�떎. private void checkExcludeUserAndRemoveIssueAssignee(Project project, List<Long> existUserIds, List<Long> changeUserIds) { List<Long> excludeUserIds = CommonUtil.searchChangeList(changeUserIds, existUserIds); @@ -521,7 +616,14 @@ } } + // 李몄뿬�뿉�꽌 �젣�쇅�맂 遺��꽌瑜� 李얘퀬 �떞�떦�븯怨� �엳�뜕 �씠�뒋�뿉�꽌 �젣�쇅�븳�떎. + private void checkExcludeDepartmentAndRemoveIssueDepartment(Project project, List<Long> existDepartmentIds, List<Long> changeDepartmentIds) { + List<Long> excludeDepartmentIds = CommonUtil.searchChangeList(changeDepartmentIds, existDepartmentIds); + if (excludeDepartmentIds.size() > 0) { + this.issueDepartmentService.removeIssueDepartment(project.getId(), excludeDepartmentIds); + } + } // 湲곕낯 �젣怨듬릺�뒗 �봽濡쒖젥�듃�쓽 愿�由ъ옄�뒗 �썙�겕�뒪�럹�씠�뒪 愿�由ъ옄媛� �룷�븿�릺�뼱 �엳�뼱�빞 �븳�떎. private void checkDefaultProject(Project project, ProjectForm projectForm) { diff --git a/src/main/java/kr/wisestone/owl/vo/ProjectVo.java b/src/main/java/kr/wisestone/owl/vo/ProjectVo.java index 13ad024..717cf69 100644 --- a/src/main/java/kr/wisestone/owl/vo/ProjectVo.java +++ b/src/main/java/kr/wisestone/owl/vo/ProjectVo.java @@ -1,6 +1,7 @@ package kr.wisestone.owl.vo; import com.google.common.collect.Lists; +import kr.wisestone.owl.domain.Department; import kr.wisestone.owl.domain.Project; import java.util.ArrayList; @@ -25,6 +26,7 @@ private List<UserVo> projectUserVos = Lists.newArrayList(); private List<UserVo> projectManagerVos = Lists.newArrayList(); private List<ProjectVo> childProjects = Lists.newArrayList(); + private List<DepartmentVo> projectDepartmentVos = Lists.newArrayList(); public ProjectVo(){} @@ -147,4 +149,12 @@ public void setDefaultYn(Boolean defaultYn) { this.defaultYn = defaultYn; } + + public List<DepartmentVo> getProjectDepartmentVos() { + return projectDepartmentVos; + } + + public void setProjectDepartmentVos(List<DepartmentVo> projectDepartmentVos) { + this.projectDepartmentVos = projectDepartmentVos; + } } diff --git a/src/main/java/kr/wisestone/owl/web/condition/ProjectCondition.java b/src/main/java/kr/wisestone/owl/web/condition/ProjectCondition.java index 18448d6..9486dc6 100644 --- a/src/main/java/kr/wisestone/owl/web/condition/ProjectCondition.java +++ b/src/main/java/kr/wisestone/owl/web/condition/ProjectCondition.java @@ -25,6 +25,7 @@ private List<String> roleTypes = Lists.newArrayList(); // �봽濡쒖젥�듃 愿�由ъ옄, �씪諛� 李몄뿬�옄瑜� 援щ텇�빐�꽌 媛��졇�삩�떎. private List<Long> excludeIds = Lists.newArrayList(); private List<Long> userIds = Lists.newArrayList(); + private List<Long> departmentIds = Lists.newArrayList(); public ProjectCondition(){} @@ -49,6 +50,10 @@ if (MapUtil.getLongs(conditions, "userIds") != null) { condition.setUserIds(MapUtil.getLongs(conditions, "userIds")); + } + + if (MapUtil.getLongs(conditions, "departmentIds") != null) { + condition.setDepartmentIds(MapUtil.getLongs(conditions, "departmentIds")); } return condition; @@ -165,4 +170,12 @@ public void setWorkspaceManager(Boolean workspaceManager) { this.workspaceManager = workspaceManager; } + + public List<Long> getDepartmentIds() { + return departmentIds; + } + + public void setDepartmentIds(List<Long> departmentIds) { + this.departmentIds = departmentIds; + } } diff --git a/src/main/java/kr/wisestone/owl/web/form/ProjectForm.java b/src/main/java/kr/wisestone/owl/web/form/ProjectForm.java index a8ce414..161bcca 100644 --- a/src/main/java/kr/wisestone/owl/web/form/ProjectForm.java +++ b/src/main/java/kr/wisestone/owl/web/form/ProjectForm.java @@ -21,6 +21,7 @@ private List<Long> managerIds = Lists.newArrayList(); private List<Long> removeIds = Lists.newArrayList(); private List<Long> userIds = Lists.newArrayList(); + private List<Long> departmentIds = Lists.newArrayList(); public ProjectForm() { } @@ -34,6 +35,10 @@ if (MapUtil.getLongs(params, "userIds") != null) { form.setUserIds(MapUtil.getLongs(params, "userIds")); + } + + if (MapUtil.getLongs(params, "departmentIds") != null) { + form.setDepartmentIds(MapUtil.getLongs(params, "departmentIds")); } if (MapUtil.getLongs(params, "removeIds") != null) { @@ -154,4 +159,12 @@ public void addRemoveIds(Long removeId) { this.removeIds.add(removeId); } + + public List<Long> getDepartmentIds() { + return departmentIds; + } + + public void setDepartmentIds(List<Long> departmentIds) { + this.departmentIds = departmentIds; + } } diff --git a/src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml b/src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml index 20643a0..e752a69 100644 --- a/src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml +++ b/src/main/resources/mybatis/query-template/projectRoleDepartment-template.xml @@ -27,16 +27,7 @@ INNER JOIN project_role pr on p.id = pr.project_id INNER JOIN project_role_department prd on prd.project_role_id = pr.id INNER JOIN department d on d.id = prd.department_id - WHERE 1=1 - <choose> - <when test="statuses.size != 0"> - AND pr.role_type IN - <foreach collection="statuses" item="item" index="index" separator="," open="(" close=")"> - #{item} - </foreach> - </when> - </choose> - AND p.id = #{id} + WHERE p.id = #{id} </select> diff --git a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties index abc0723..be165a9 100644 --- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties +++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties @@ -23,6 +23,7 @@ DEFAULT_PROJECT_NOT_REMOVE = \uAE30\uBCF8\uC73C\uB85C \uC81C\uACF5\uB418\uB294 \uD504\uB85C\uC81D\uD2B8\uB294 \uC0AD\uC81C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. PROJECT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uD504\uB85C\uC81D\uD2B8\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. PROJECT_NOT_INCLUDE_USER = \uC120\uD0DD\uD55C \uB2F4\uB2F9\uC790 \uC911 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uCC38\uC5EC\uD558\uACE0 \uC788\uC9C0 \uC54A\uC740 \uC0AC\uC6A9\uC790\uAC00 \uC788\uC2B5\uB2C8\uB2E4. +PROJECT_NOT_INCLUDE_DEPARTMENT = \uC120\uD0DD\uD55C \uBD80\uC11C \uC911 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uCC38\uC5EC\uD558\uACE0 \uC788\uC9C0 \uC54A\uC740 \uBD80\uC11C\uAC00 \uC788\uC2B5\uB2C8\uB2E4. PROJECT_USED_PROJECT_KEY = \uD504\uB85C\uC81D\uD2B8 \uD0A4\uAC00 \uC774\uBBF8 \uC0AC\uC6A9\uB418\uACE0 \uC788\uC2B5\uB2C8\uB2E4. PAYMENT_TYPE_NOT_EXIST = \uACB0\uC81C \uBC29\uC2DD\uC774 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. diff --git a/src/main/webapp/scripts/app/project/projectAdd.controller.js b/src/main/webapp/scripts/app/project/projectAdd.controller.js index 25711d7..05d486b 100644 --- a/src/main/webapp/scripts/app/project/projectAdd.controller.js +++ b/src/main/webapp/scripts/app/project/projectAdd.controller.js @@ -33,6 +33,7 @@ id : $rootScope.user.id }], // 愿�由ъ옄 users : [], // �씪諛� �궗�슜�옄 + departments : [] }, userName : "", // �씪諛� �궗�슜�옄 �씠由� 寃��깋 projectName : "", // �긽�쐞 �봽濡쒖젥�듃 �씠由� 寃��깋 -- Gitblit v1.8.0