| | |
| | | |
| | | issue.setReverseIndex(issue.getId() * -1); // 쿼리 속도 개선을 위해 리버스 인덱스 생성 |
| | | // 담당자 지정 |
| | | this.issueUserService.modifyIssueUser(issue, project.getWorkspace(), issueForm.getUserIds()); |
| | | //this.issueUserService.modifyIssueUser(issue, project.getWorkspace(), issueForm.getUserIds()); |
| | | // 담당부서 지정 |
| | | this.issueUserService.modifyIssueDepartment(issue, project.getWorkspace(), issueForm.getDepartmentIds()); |
| | | |
| | | // multipartFile 을 file Map List 객체로 변경한다. |
| | | List<Map<String, Object>> convertFileMaps = this.convertMultipartFileToFile(multipartFiles); |
| | |
| | | issueMap.put("issueTypeName", issue.getIssueType().getName()); |
| | | issueMap.put("issueStatusName", issue.getIssueStatus().getName()); |
| | | |
| | | // 담당자 |
| | | // 담당부서 |
| | | StringBuilder assigneeBuilder = new StringBuilder(); |
| | | for (IssueUser issueUser : issue.getIssueUsers()) { |
| | | assigneeBuilder.append(issueUser.getUser().getName()); |
| | | assigneeBuilder.append("("); |
| | | //assigneeBuilder.append(issueUser.getUser().getName()); |
| | | assigneeBuilder.append(issueUser.getDepartment().getDepartmentName()); |
| | | /*assigneeBuilder.append("("); |
| | | assigneeBuilder.append(CommonUtil.decryptAES128(issueUser.getUser().getAccount())); |
| | | assigneeBuilder.append(")"); |
| | | assigneeBuilder.append(")");*/ |
| | | assigneeBuilder.append("\n"); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | // 이슈 사용자 정보 추가 |
| | | this.setIssueUserList(issueVos, issueCondition); |
| | | //this.setIssueUserList(issueVos, issueCondition); |
| | | this.setIssueDepartmentList(issueVos, issueCondition); |
| | | // 등록자 정보 추가 |
| | | this.setRegister(issueVos); // 담당자 정보 셋팅 |
| | | |
| | |
| | | return true; |
| | | } |
| | | |
| | | // 이슈 담당자 정보를 셋팅한다. |
| | | private void setIssueUserList(List<IssueVo> issueVos, IssueCondition issueCondition) { |
| | | // 이슈 담당자 정보를 셋팅한다. => 담당부서 |
| | | private void setIssueDepartmentList(List<IssueVo> issueVos, IssueCondition issueCondition) { |
| | | if (issueVos.size() < 1) { |
| | | return; |
| | | } |
| | |
| | | List<Map<String, Object>> issueUsers = this.issueMapper.findIssueUser(issueCondition); |
| | | Map<String, Object> issueConverterUsers = new HashMap<>(); |
| | | |
| | | // 이슈에 해당하는 이슈 담당자 정보 셋팅 |
| | | // 이슈에 해당하는 이슈 담당부서 정보 셋팅 |
| | | for (Map<String, Object> issueUser : issueUsers) { |
| | | String issueId = MapUtil.getString(issueUser, "issueId"); |
| | | |
| | | if (MapUtil.getObject(issueConverterUsers, issueId) != null) { |
| | | List<UserVo> users = (List) MapUtil.getObject(issueConverterUsers, issueId); |
| | | users.add(new UserVo(MapUtil.getLong(issueUser, "id"), MapUtil.getString(issueUser, "name"), CommonUtil.decryptAES128(MapUtil.getString(issueUser, "account")), MapUtil.getString(issueUser, "profile"))); |
| | | List<DepartmentVo> departments = (List) MapUtil.getObject(issueConverterUsers, issueId); |
| | | departments.add(new DepartmentVo(MapUtil.getLong(issueUser, "id"), MapUtil.getString(issueUser, "departmentName"), MapUtil.getString(issueUser, "departmentDescription"))); |
| | | //List<UserVo> users = (List) MapUtil.getObject(issueConverterUsers, issueId); |
| | | //users.add(new UserVo(MapUtil.getLong(issueUser, "id"), MapUtil.getString(issueUser, "name"), CommonUtil.decryptAES128(MapUtil.getString(issueUser, "account")), MapUtil.getString(issueUser, "profile"))); |
| | | } else { |
| | | List<UserVo> users = Lists.newArrayList(new UserVo(MapUtil.getLong(issueUser, "id"), MapUtil.getString(issueUser, "name"), CommonUtil.decryptAES128(MapUtil.getString(issueUser, "account")), |
| | | List<DepartmentVo> departments = Lists.newArrayList(new DepartmentVo(MapUtil.getLong(issueUser, "id"), MapUtil.getString(issueUser, "departmentName"), MapUtil.getString(issueUser, "departmentDescription"))); |
| | | issueConverterUsers.put(issueId, departments); |
| | | /*List<UserVo> users = Lists.newArrayList(new UserVo(MapUtil.getLong(issueUser, "id"), MapUtil.getString(issueUser, "name"), CommonUtil.decryptAES128(MapUtil.getString(issueUser, "account")), |
| | | MapUtil.getString(issueUser, "profile"))); |
| | | issueConverterUsers.put(issueId, users); |
| | | issueConverterUsers.put(issueId, users);*/ |
| | | } |
| | | } |
| | | |
| | | // 이슈Vo에 담당자 정보를 셋팅 |
| | | // 이슈Vo에 담당부서 정보를 셋팅 |
| | | for (IssueVo issueVo : issueVos) { |
| | | if (MapUtil.getObject(issueConverterUsers, String.valueOf(issueVo.getId())) != null) { |
| | | List<UserVo> userVos = (List) MapUtil.getObject(issueConverterUsers, String.valueOf(issueVo.getId())); |
| | | List<DepartmentVo> departmentVos = (List) MapUtil.getObject(issueConverterUsers, String.valueOf(issueVo.getId())); |
| | | |
| | | issueVo.setUserVos(userVos); |
| | | issueVo.setDepartmentVos(departmentVos); |
| | | } |
| | | |
| | | // 이슈 수정 권한을 갖고 있는지 확인 |
| | |
| | | issueVo = ConvertUtil.copyProperties(issue, IssueVo.class); |
| | | |
| | | switch (issueCondition.getDeep()) { |
| | | case "01": // 프로젝트, 이슈 유형, 이슈 상태, 우선순위, 중요도, 담당자, 첨부파일, 사용자 정의 필드 정보를 셋팅한다. |
| | | case "01": // 프로젝트, 이슈 유형, 이슈 상태, 우선순위, 중요도, 담당부서, 첨부파일, 사용자 정의 필드 정보를 셋팅한다. |
| | | issueVo.setProjectVo(ConvertUtil.copyProperties(issue.getProject(), ProjectVo.class)); |
| | | issueVo.setIssueTypeVo(ConvertUtil.copyProperties(issue.getIssueType(), IssueTypeVo.class)); |
| | | issueVo.setIssueStatusVo(ConvertUtil.copyProperties(issue.getIssueStatus(), IssueStatusVo.class)); |
| | |
| | | issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class)); |
| | | |
| | | this.setRegister(issue, issueVo); // 등록자 정보 셋팅 |
| | | this.setIssueUser(issue, issueVo); // 담당자 정보 셋팅 |
| | | //this.setIssueUser(issue, issueVo); // 담당자 정보 셋팅 |
| | | this.setIssueDepartment(issue, issueVo); // 담당부서 정보 셋팅 |
| | | this.setAttachedFiles(issue, issueVo); // 첨부 파일 정보 셋팅 |
| | | this.setIssueCustomFields(issue, issueVo); // 사용자 정의 필드 값 정보 셋팅 |
| | | this.setRelationIssue(issue, issueVo); //연관 일감 셋팅 |
| | |
| | | issueVo.setPriorityVo(ConvertUtil.copyProperties(issue.getPriority(), PriorityVo.class)); |
| | | issueVo.setSeverityVo(ConvertUtil.copyProperties(issue.getSeverity(), SeverityVo.class)); |
| | | this.setRegister(issue, issueVo); // 등록자 정보 셋팅 |
| | | this.setIssueUser(issue, issueVo); // 담당자 정보 셋팅 |
| | | //this.setIssueUser(issue, issueVo); // 담당자 정보 셋팅 |
| | | this.setIssueDepartment(issue, issueVo); // 담당부서 정보 셋팅 |
| | | this.setAttachedFiles(issue, issueVo); // 첨부 파일 정보 셋팅 |
| | | this.setIssueCustomFields(issue, issueVo); // 사용자 정의 필드 값 정보 셋팅 |
| | | this.setIssueComments(issue, issueVo); // 댓글 정보 셋팅 |
| | |
| | | } |
| | | |
| | | // 이슈 담당자 정보를 셋팅한다. |
| | | private void setIssueUser(Issue issue, IssueVo issueVo) { |
| | | /*private void setIssueUser(Issue issue, IssueVo issueVo) { |
| | | List<UserVo> userVos = Lists.newArrayList(); |
| | | |
| | | for (IssueUser issueUser : issue.getIssueUsers()) { |
| | |
| | | } |
| | | |
| | | issueVo.setUserVos(userVos); |
| | | }*/ |
| | | |
| | | // 이슈 담당부서 정보를 셋팅한다. |
| | | private void setIssueDepartment(Issue issue, IssueVo issueVo) { |
| | | List<DepartmentVo> departmentVos = Lists.newArrayList(); |
| | | |
| | | for (IssueUser issueUser : issue.getIssueUsers()) { |
| | | DepartmentVo departmentVo = ConvertUtil.copyProperties(issueUser.getDepartment(), DepartmentVo.class); |
| | | departmentVo.setByName(departmentVo.getByName()); |
| | | departmentVos.add(departmentVo); |
| | | } |
| | | issueVo.setDepartmentVos(departmentVos); |
| | | } |
| | | |
| | | // 이슈 첨부파일 정보를 셋팅한다. |
| | |
| | | // 사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다. |
| | | this.workspaceService.checkUseWorkspace(); |
| | | // 이슈 수정 권한 체크 |
| | | this.verifyIssueModifyPermission(issueForm.getId()); |
| | | //this.verifyIssueModifyPermission(issueForm.getId()); |
| | | // 프로젝트 유효성 체크 |
| | | Project project = this.projectService.getProject(issueForm.getProjectId()); |
| | | // 이슈 상태 유효성 체크 |
| | |
| | | // 날짜 유효성 체크 |
| | | this.checkStartCompleteDate(issueForm.getStartDate(), issueForm.getCompleteDate()); |
| | | |
| | | // 담당자 유효성 체크 |
| | | // 담당자 유효성 체크 => 담당부서로 변경 |
| | | this.verifyIssueAssignee(project, issueForm); |
| | | |
| | | Issue issue = this.getIssue(issueForm.getId()); |
| | |
| | | issue.setCompleteDate(issueForm.getCompleteDate()); |
| | | |
| | | this.issueRepository.saveAndFlush(issue); |
| | | // 담당자 지정 |
| | | this.issueUserService.modifyIssueUser(issue, project.getWorkspace(), issueForm.getUserIds()); |
| | | // 담당부서 지정 |
| | | //this.issueUserService.modifyIssueUser(issue, project.getWorkspace(), issueForm.getUserIds()); |
| | | this.issueUserService.modifyIssueDepartment(issue, project.getWorkspace(), issueForm.getDepartmentIds()); |
| | | |
| | | // multipartFile 을 file Map List 객체로 변경한다. |
| | | List<Map<String, Object>> convertFileMaps = this.convertMultipartFileToFile(multipartFiles); |
| | |
| | | return false; |
| | | } |
| | | |
| | | // 이슈 담당자로 지정될 사용자가 해당 프로젝트에 참여 하고 있는 사용자 인지 확인 |
| | | // 이슈 담당부서로 지정될 부서가 해당 프로젝트에 참여 하고 있는 부서인지 확인 |
| | | private void verifyIssueAssignee(Project project, IssueForm issueForm) { |
| | | if (issueForm.getDepartmentIds().size() > 0) { |
| | | List<Long> trustDepartmentIds = Lists.newArrayList(); // 참여 확인된 부서 |
| | | |
| | | for (Long departmentId : issueForm.getDepartmentIds()) { |
| | | boolean includeProject = false; |
| | | |
| | | for (ProjectRole projectRole : project.getProjectRoles()) { |
| | | ProjectRoleUser projectRoleUser = this.projectRoleUserService.findByProjectRoleIdAndDepartmentId(projectRole.getId(), departmentId); |
| | | |
| | | if (projectRoleUser != null) { |
| | | includeProject = true; |
| | | trustDepartmentIds.add(departmentId); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | // 데이터 보정 작업 - 프로젝트에서 제외된 사용자는 담당자에서 제외 될 수 있도록 처리 |
| | | /*if (!includeProject) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_USER)); |
| | | }*/ |
| | | } |
| | | // 참여 확인된 부서로 담당부서 변경 |
| | | issueForm.setDepartmentIds(trustDepartmentIds); |
| | | } |
| | | } |
| | | |
| | | /*// 이슈 담당자로 지정될 사용자가 해당 프로젝트에 참여 하고 있는 사용자 인지 확인 |
| | | private void verifyIssueAssignee(Project project, IssueForm issueForm) { |
| | | if (issueForm.getUserIds().size() > 0) { |
| | | List<Long> trustUserIds = Lists.newArrayList(); // 참여 확인된 사용자 |
| | |
| | | } |
| | | |
| | | // 데이터 보정 작업 - 프로젝트에서 제외된 사용자는 담당자에서 제외 될 수 있도록 처리 |
| | | /*if (!includeProject) { |
| | | *//*if (!includeProject) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_INCLUDE_USER)); |
| | | }*/ |
| | | }*//* |
| | | } |
| | | // 참여 확인된 사용자로 담당자 변경 |
| | | issueForm.setUserIds(trustUserIds); |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | // 이슈 수정 권한 체크 |
| | | /*// 이슈 수정 권한 체크 |
| | | private void verifyIssueModifyPermission(Long issueId) { |
| | | Issue issue = this.getIssue(issueId); |
| | | |
| | |
| | | } |
| | | |
| | | return userVos; |
| | | } |
| | | }*/ |
| | | |
| | | // 이슈 수정 권한을 갖고 있는지 확인 |
| | | private boolean checkHasPermission(IssueVo issueVo, List<UserVo> issueUserVos) { |
| | |
| | | hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.PROJECT_MANAGER, issueVo, null); |
| | | // 이슈 등록자일 경우 수정 권한을 갖는다. |
| | | hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.REGISTER, issueVo, null); |
| | | // 이슈 담당자일 경우 수정 권한을 갖는다. |
| | | hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ASSIGNEE, issueVo, issueUserVos); |
| | | // 이슈 담당자일 경우 수정 권한을 갖는다. => 담당부서로 수정 - 체크 |
| | | //hasPermission = this.checkIssueModifyPermission(hasPermission, Issue.ASSIGNEE, issueVo, issueUserVos); |
| | | // 담당자가 없으면 모든 사용자가 수정 권한을 갖는다. |
| | | |
| | | return hasPermission; |
| | |
| | | break; |
| | | } |
| | | |
| | | // 이슈 담당자 여부 확인 |
| | | for (UserVo issueUserVo : issueUserVos) { |
| | | // 이슈 담당자 여부 확인 => 담당부서로 수정 - 체크 |
| | | /*for (UserVo issueUserVo : issueUserVos) { |
| | | if (issueUserVo.getId().equals(this.webAppUtil.getLoginId())) { |
| | | hasPermission = true; |
| | | break; |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | break; |
| | | } |
| | |
| | | // 변경 이력 정보 추출 |
| | | StringBuilder detectIssueChange = new StringBuilder(); |
| | | // 이슈 수정 권한 체크 |
| | | this.verifyIssueModifyPermission(issueForm.getId()); |
| | | //this.verifyIssueModifyPermission(issueForm.getId()); |
| | | Issue issue = this.getIssue(issueForm.getId()); |
| | | |
| | | IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueForm.getIssueStatusId()); |
| | |
| | | } |
| | | |
| | | // 이슈 담당자 변경 |
| | | @Override |
| | | /*@Override |
| | | @Transactional |
| | | public void modifyIssueUser(IssueForm issueForm) { |
| | | // 사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다. |
| | |
| | | // 변경 이력 정보 추출 |
| | | this.issueHistoryService.detectIssueManager(issue, issueForm, detectIssueChange); |
| | | |
| | | this.issueUserService.modifyIssueUser(issue, issue.getProject().getWorkspace(), issueForm.getUserIds()); |
| | | this.issueUserService.modifyIssueUser(issue, issue.getProject().getWorkspace(), issueForm.getDepartmentIds()); //getUserIds -> getDepartmentIds |
| | | this.issueRepository.saveAndFlush(issue); |
| | | |
| | | // 이슈 이력 등록 |
| | | if (!StringUtils.isEmpty(detectIssueChange.toString())) { |
| | | StringBuilder stringBuilder = new StringBuilder(); |
| | | stringBuilder.append("<ul class=\"activity-list\">"); |
| | | stringBuilder.append(detectIssueChange.toString()); |
| | | stringBuilder.append("</ul>"); |
| | | |
| | | this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.MODIFY, stringBuilder.toString()); |
| | | } |
| | | |
| | | // 이슈 버전 생성 |
| | | this.issueVersionService.addIssueVersion(issue); |
| | | |
| | | // 사용자 시스템 기능 사용 정보 수집 |
| | | log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_USER_CHANGE)); |
| | | }*/ |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void modifyIssueDepartment(IssueForm issueForm) { |
| | | // 사용하고 있는 업무 공간이 활성 상태인지 확인한다. 사용 공간에서 로그인한 사용자가 비활성인지 확인한다. |
| | | this.workspaceService.checkUseWorkspace(); |
| | | // 변경 이력 정보 추출 |
| | | StringBuilder detectIssueChange = new StringBuilder(); |
| | | // 이슈 수정 권한 체크 |
| | | //this.verifyIssueModifyPermission(issueForm.getId()); |
| | | Issue issue = this.getIssue(issueForm.getId()); |
| | | issue.setProject(this.projectService.getProject(issueForm.getProjectId())); |
| | | |
| | | // 변경 이력 정보 추출 |
| | | this.issueHistoryService.detectIssueManager(issue, issueForm, detectIssueChange); |
| | | |
| | | //this.issueUserService.modifyIssueUser(issue, issue.getProject().getWorkspace(), issueForm.getUserIds()); |
| | | this.issueUserService.modifyIssueDepartment(issue, issue.getProject().getWorkspace(), issueForm.getDepartmentIds()); |
| | | this.issueRepository.saveAndFlush(issue); |
| | | |
| | | // 이슈 이력 등록 |
| | |
| | | private Issue issueRemoves(Long issueId) { |
| | | Issue issue = this.getIssue(issueId); |
| | | // 이슈 수정 권한을 갖고 있는지 확인 |
| | | this.verifyIssueModifyPermission(issueId); |
| | | //this.verifyIssueModifyPermission(issueId); |
| | | |
| | | // 이슈 첨부 파일을 삭제한다. |
| | | if (issue.getAttachedFiles().size() > 0) { |
| | |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("title", this.messageAccessor.message("common.issueTitle"), 40, ExportExcelAttrVo.ALIGN_LEFT)); // 이슈 제목 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("description", this.messageAccessor.message("common.content"), 60, ExportExcelAttrVo.ALIGN_LEFT)); // 내용 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("issueTypeName", this.messageAccessor.message("common.issueType"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈 타입 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("assignees", this.messageAccessor.message("common.assignee"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 담당자 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("department", this.messageAccessor.message("common.department"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 담당부서 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("priorityName", this.messageAccessor.message("common.priority"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 우선순위 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("severityName", this.messageAccessor.message("common.importance"), 6, ExportExcelAttrVo.ALIGN_CENTER)); // 중요도 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("register", this.messageAccessor.message("common.register"), 20, ExportExcelAttrVo.ALIGN_CENTER)); // 등록자 |
| | |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("common.issueType"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 이슈 타입 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("common.priority"), 5, ExportExcelAttrVo.ALIGN_CENTER)); // 우선순위 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("common.importance"), 5, ExportExcelAttrVo.ALIGN_CENTER)); // 중요도 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("common.assignee"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 담당자 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("common.department"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 담당부서 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("common.startDate"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 시작일 |
| | | excelInfo.addAttrInfos(new ExportExcelAttrVo("id", this.messageAccessor.message("common.endDate"), 10, ExportExcelAttrVo.ALIGN_CENTER)); // 종료일 |
| | | // 프로젝트에 연결된 사용자 정의 필드 정보를 추출하여 엑셀 download 템플릿을 만든다. |
| | |
| | | List<Map<String, Long>> issueAssigneeMaps = Lists.newArrayList(); |
| | | |
| | | for (IssueForm issueForm : issueForms) { |
| | | for (Long userId : issueForm.getUserIds()) { |
| | | for (Long departmentId : issueForm.getDepartmentIds()) { |
| | | Map<String, Long> issueAssigneeMap = new HashMap<>(); |
| | | issueAssigneeMap.put("issueId", issueForm.getId()); |
| | | issueAssigneeMap.put("userId", userId); |
| | | //issueAssigneeMap.put("userId", userId); |
| | | issueAssigneeMap.put("departmentId", departmentId); |
| | | issueAssigneeMap.put("workspaceId", workspace.getId()); |
| | | issueAssigneeMap.put("registerId", this.webAppUtil.getLoginId()); |
| | | issueAssigneeMaps.add(issueAssigneeMap); |
| | |
| | | this.setIssueFormSeverity(cell, severityMaps, issueForm, rowIndex); |
| | | break; |
| | | case 6: |
| | | // 담당자를 IssueForm 에 저장한다. |
| | | // 담당부서를 IssueForm 에 저장한다. |
| | | this.setIssueFormAssignee(cell, userMaps, issueForm, project); |
| | | break; |
| | | case 7: |
| | |
| | | issueForm.setSeverityId(severity.getId()); |
| | | } |
| | | |
| | | // 담당자를 IssueForm 에 저장한다. |
| | | // 담당부서를 IssueForm 에 저장한다. |
| | | private void setIssueFormAssignee(Cell cell, Map<String, Object> userMaps, IssueForm issueForm, Project project) { |
| | | if (cell != null) { |
| | | String[] splitAssignee = CommonUtil.convertExcelStringToCell(cell).split("#"); |
| | | Map<String, Object> userMap = (Map<String, Object>) MapUtil.getObject(userMaps, project.getProjectKey()); |
| | | |
| | | List<Long> userIds = Lists.newArrayList(); |
| | | List<Long> departmentIds = Lists.newArrayList(); |
| | | |
| | | for (String account : splitAssignee) { |
| | | if (MapUtil.getLong(userMap, account) != null) { |
| | | userIds.add(MapUtil.getLong(userMap, account)); |
| | | departmentIds.add(MapUtil.getLong(userMap, account)); |
| | | } |
| | | } |
| | | |
| | | issueForm.setUserIds(userIds); |
| | | issueForm.setDepartmentIds(departmentIds); |
| | | } |
| | | } |
| | | |
| | |
| | | taskUserSave.put(taskId.toString(), Lists.newArrayList()); |
| | | } |
| | | |
| | | List<Map<String, Object>> taskUsers = Lists.newArrayList(); |
| | | List<Map<String, Object>> taskDepartments = Lists.newArrayList(); |
| | | // task 가 하나도 없을 경우에는 조회를 하지 않는다. |
| | | if (!taskCondition.getIssueIds().isEmpty()) { |
| | | taskUsers = this.issueMapper.getAllTaskUser(taskCondition); |
| | | //taskUsers = this.issueMapper.getAllTaskUser(taskCondition); |
| | | taskDepartments = this.issueMapper.getAllTaskUser(taskCondition); |
| | | } |
| | | |
| | | // task_id 에 매칭되는 담당자 정보를 준비한다. |
| | | for (Map<String, Object> taskUser : taskUsers) { |
| | | /*for (Map<String, Object> taskUser : taskUsers) { |
| | | Long taskId = MapUtil.getLong(taskUser, "taskId"); |
| | | List<UserVo> userVos = (List<UserVo>)taskUserSave.get(taskId.toString()); |
| | | userVos.add(ConvertUtil.convertMapToClass(taskUser, UserVo.class)); |
| | | }*/ |
| | | |
| | | for (Map<String, Object> taskDepartment : taskDepartments) { |
| | | Long taskId = MapUtil.getLong(taskDepartment, "taskId"); |
| | | List<DepartmentVo> departmentVos = (List<DepartmentVo>)taskUserSave.get(taskId.toString()); |
| | | departmentVos.add(ConvertUtil.convertMapToClass(taskDepartment, DepartmentVo.class)); |
| | | } |
| | | |
| | | for (Map<String, Object> result : results) { |
| | |
| | | } |
| | | |
| | | // 담당자 셋팅 |
| | | List<UserVo> userVos = (List<UserVo>)taskUserSave.get(taskVo.getId().toString()); |
| | | taskVo.setUserVos(userVos); |
| | | //List<UserVo> userVos = (List<UserVo>)taskUserSave.get(taskVo.getId().toString()); |
| | | //taskVo.setUserVos(userVos); |
| | | |
| | | // 담당부서 세팅 |
| | | List<DepartmentVo> departmentVos = (List<DepartmentVo>)taskUserSave.get(taskVo.getId().toString()); |
| | | taskVo.setDepartmentVos(departmentVos); |
| | | |
| | | List<IssueVo> taskVos = (List<IssueVo>)tasks.get(MapUtil.getString(result, "workflowStatusId")); |
| | | taskVos.add(taskVo); |