Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa
| | |
| | | public static final String PROJECT_NOT_EXIST = "PROJECT_NOT_EXIST"; // 프로젝트가 존재하지 않습니다. |
| | | public static final String PROJECT_NOT_MANAGER = "PROJECT_NOT_MANAGER"; // 프로젝트 관리자가 존재하지 않습니다. |
| | | public static final String PROJECT_NOT_MODIFY_PERMISSION = "PROJECT_NOT_MODIFY_PERMISSION"; // 프로젝트 관리 권한이 없습니다. |
| | | public static final String PROJECT_NOT_DELETE = "PROJECT_NOT_DELETE"; // 이슈유형에서 사용중인 프로젝트 입니다. |
| | | public static final String PROJECT_NOT_NAME = "PROJECT_NOT_NAME"; // 프로젝트 이름이 입력되지 않았습니다. |
| | | public static final String PROJECT_NOT_STATUS = "PROJECT_NOT_STATUS"; // 프로젝트의 상태가 선택되지 않았습니다. |
| | | public static final String DATE_NOT_EXIST = "DATE_NOT_EXIST"; // 날짜가 선택되지 않았습니다. |
| | |
| | | |
| | | List<Map<String, Object>> findByWorkspaceIdAndIncludeProject(ProjectCondition projectCondition); |
| | | |
| | | List<Map<String, Object>> findByWorkspaceIdAndProjectAll(ProjectCondition projectCondition); |
| | | |
| | | List<Map<String, Object>> findByWorkspaceIdAndIncludeProjectAll(ProjectCondition projectCondition); |
| | | |
| | | void deleteProject(Map<String, Object> deleteProjectMap); |
| | |
| | | |
| | | List<IssueType> findByWorkspaceId(@Param("workspaceId") Long workspaceId); |
| | | |
| | | List<IssueType> findByProjectId(@Param("projectId") Long projectId); |
| | | } |
| | |
| | | |
| | | IssueType getIssueType(Long id); |
| | | |
| | | List<IssueType> findByProjectId(Long projectId); |
| | | |
| | | void removeIssueTypes(IssueTypeForm issueTypeForm); |
| | | |
| | | List<IssueType> findByWorkspaceId(); |
| | |
| | | } |
| | | |
| | | // 프로젝트를 선택하지 않았으면 해당 업무 공간에서 참여하고 있는 프로젝트를 찾는다. |
| | | if (condition.getProjectIds().size() < 1) { |
| | | /*if (condition.getProjectIds().size() < 1) { |
| | | List<Map<String, Object>> projects = this.projectService.findByWorkspaceIdAndIncludeProjectAll(projectStatues, condition.getProjectType()); |
| | | List<Long> projectIds = Lists.newArrayList(); |
| | | |
| | |
| | | if (projectIds.size() < 1) { |
| | | return false; |
| | | } |
| | | } |
| | | }*/ |
| | | |
| | | return true; |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | // 이슈 유형에 프로젝트ID로 조회 |
| | | public List<IssueType> findByProjectId(Long projectId) { |
| | | return this.issueTypeRepository.findByProjectId(projectId); |
| | | } |
| | | |
| | | private void setUseIssueTypeByIssueStatus(List<IssueTypeVo> issueTypeVos) { |
| | | for (IssueTypeVo issueTypeVo : issueTypeVos) { |
| | | IssueType issueType = this.getIssueType(issueTypeVo.getId()); |
| | |
| | | private UserWorkspaceService userWorkspaceService; |
| | | |
| | | @Autowired |
| | | private IssueTypeService issueTypeService; |
| | | |
| | | @Autowired |
| | | private UserLevelService userLevelService; |
| | | |
| | | @Autowired |
| | |
| | | User user = this.webAppUtil.getLoginUserObject(); |
| | | |
| | | // 워크스페이스에서 기본으로 제공되는 프로젝트에 대한 체크 |
| | | this.checkDefaultProject(project, projectForm); |
| | | //this.checkDefaultProject(project, projectForm); |
| | | // 수정 권한 체크 |
| | | this.checkModifyPermission(project.getId(), user); |
| | | // 관리자 변경 |
| | |
| | | this.messageAccessor.getMessage(MsgConstants.DEFAULT_PROJECT_MANAGER_NOT_CHANGE)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void checkUsingIssueType(Long projectId) { |
| | | Boolean del = Boolean.FALSE; |
| | | |
| | | List<IssueType> usingIssueTypes = this.issueTypeService.findByProjectId(projectId); |
| | | if (usingIssueTypes == null || usingIssueTypes.isEmpty()) { |
| | | del = true; |
| | | } |
| | | |
| | | if (!del) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.PROJECT_NOT_DELETE)); |
| | | } |
| | | } |
| | | |
| | |
| | | private void removeProjects(Long projectId) { |
| | | Project project = this.getProject(projectId); |
| | | // 기본 프로젝트는 삭제 금지 |
| | | if (project.getDefaultYn()) { |
| | | /*if (project.getDefaultYn()) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.DEFAULT_PROJECT_NOT_REMOVE)); |
| | | } |
| | | }*/ |
| | | this.checkUsingIssueType(project.getId()); |
| | | |
| | | // 로그인한 사용자가 관리자 역할에 소속되어 있는지 확인한다. |
| | | this.checkModifyPermission(project.getId(), this.webAppUtil.getLoginUserObject()); |
| | |
| | | public List<Map<String, Object>> findByWorkspaceIdAndIncludeProjectAll(ProjectCondition projectCondition) { |
| | | projectCondition.setLoginUserId(this.webAppUtil.getLoginId()); |
| | | projectCondition.setWorkspaceId(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId()); |
| | | return this.projectMapper.findByWorkspaceIdAndIncludeProjectAll(projectCondition); |
| | | |
| | | UserWorkspace userWorkspace = this.userWorkspaceService.findWorkspaceManager(this.webAppUtil.getLoginId()); |
| | | List<Map<String, Object>> results = Lists.newArrayList(); |
| | | if(userWorkspace != null) {// 워크스페이스 관리자일경우 |
| | | results = this.projectMapper.findByWorkspaceIdAndProjectAll(projectCondition); |
| | | } else { |
| | | results = this.projectMapper.findByWorkspaceIdAndIncludeProjectAll(projectCondition); |
| | | } |
| | | return results; |
| | | } |
| | | |
| | | // 현재 접근한 업무공간에서 참여하고 있는 프로젝트를 조회한다. - 상단 프로젝트 목록에서 사용 |
| | |
| | | AND p.workspace_id = #{workspaceId} |
| | | </select> |
| | | |
| | | <!-- 해당 업무 공간에서 진행중인 모든 프로젝트를 조회한다 --> |
| | | <select id="findByWorkspaceIdAndProjectAll" resultType="java.util.HashMap" |
| | | parameterType="kr.wisestone.owl.web.condition.ProjectCondition"> |
| | | SELECT |
| | | DISTINCT p.id as id, |
| | | p.name as name, |
| | | p.description as description, |
| | | p.status as status, |
| | | p.start_date as startDate, |
| | | p.end_date as endDate, |
| | | p.project_key as projectKey, |
| | | CASE p.default_yn WHEN 'Y' THEN 'true' ELSE 'false' END as defaultYn |
| | | FROM |
| | | project p |
| | | INNER JOIN project_role pr on p.id = pr.project_id |
| | | INNER JOIN project_role_user pru on pru.project_role_id = pr.id |
| | | WHERE p.workspace_id = #{workspaceId} |
| | | <if test="name != '' and name != null"> |
| | | AND p.name like CONCAT('%',#{name},'%') |
| | | </if> |
| | | <choose> |
| | | <when test="statuses.size != 0"> |
| | | AND p.status IN |
| | | <foreach collection="statuses" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </when> |
| | | </choose> |
| | | <choose> |
| | | <when test="excludeIds.size != 0"> |
| | | AND p.id NOT IN |
| | | <foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </when> |
| | | </choose> |
| | | </select> |
| | | |
| | | |
| | | <!-- 해당 업무 공간에서 참여하고 있는 진행중인 프로젝트를 조회한다 --> |
| | | <select id="findByWorkspaceIdAndIncludeProjectAll" resultType="java.util.HashMap" |
| | |
| | | PROJECT_NOT_EXIST = \uD504\uB85C\uC81D\uD2B8\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. |
| | | PROJECT_NOT_MANAGER = \uD504\uB85C\uC81D\uD2B8 \uAD00\uB9AC\uC790\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. |
| | | PROJECT_NOT_MODIFY_PERMISSION = \uD504\uB85C\uC81D\uD2B8 \uAD00\uB9AC \uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. |
| | | PROJECT_NOT_DELETE = \uC774\uC288\uC720\uD615\uC5D0\uC11C \uC0AC\uC6A9\uC911\uC778 \uD504\uB85C\uC81D\uD2B8 \uC785\uB2C8\uB2E4. |
| | | PROJECT_NOT_NAME = \uD504\uB85C\uC81D\uD2B8 \uC774\uB984\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | PROJECT_NOT_STATUS = \uD504\uB85C\uC81D\uD2B8\uC758 \uC0C1\uD0DC\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | DATE_NOT_EXIST = \uAE30\uAC04\uC774 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | |
| | | toggleChecked : function (checkStatus, datas) { |
| | | // 전체 선택 체크 박스를 클릭했을 경우 |
| | | angular.forEach(datas, function (data) { |
| | | if (angular.isDefined(data.defaultYn)) { |
| | | /*if (angular.isDefined(data.defaultYn)) { |
| | | if (!data.defaultYn) { |
| | | data.checked = checkStatus; |
| | | } |
| | | } |
| | | else { |
| | | else {*/ |
| | | data.checked = checkStatus; |
| | | } |
| | | //} |
| | | }); |
| | | }, |
| | | radioChecked : function (target, datas) { |
| | |
| | | |
| | | if (tableConfig.dType === "checkbox") { |
| | | // 체크 박스일때 |
| | | if (scope.data.defaultYn) { |
| | | /*if (scope.data.defaultYn) { |
| | | makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" disabled ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">'; |
| | | } |
| | | else { |
| | | else {*/ |
| | | makeTag += '<input type="checkbox" ng-checked="data.checked == true ? true : false" ng-click="$root.$tableProvider.rowChecked(tableConfigs, data, fn.getResponseData())">'; |
| | | } |
| | | //} |
| | | |
| | | tableConfig.hChecked = false; |
| | | } |
| | |
| | | } else { |
| | | $rootScope.$broadcast("searchIssueList", {keyWord: $scope.vm.searchAll.keyWord}); |
| | | } |
| | | |
| | | //$scope.vm.searchAll.keyWord = ""; |
| | | //$rootScope.previousGetParams = null; |
| | | } |
| | | |
| | | function setLastIssueType() { |
| | |
| | | issueTypeId : "", |
| | | partnerVos : "", |
| | | search : { |
| | | keyWord : "", // 전체 검색 |
| | | keyWord : "", // 검색 |
| | | title : "", // 제목 |
| | | description : "", // 내용 |
| | | combinationIssueNumber : "", // 이슈 번호 |
| | |
| | | priorityIds : [], // 우선순위 검색 |
| | | issueStatusIds : [], // 이슈 상태 검색 |
| | | issueTypeIds : [] // 이슈 유형 검색 |
| | | }, |
| | | searchAll : { |
| | | keyWord : "", // 전체 검색 |
| | | }, |
| | | searchView : false, // 상세 검색 조건 표시 여부 |
| | | detailView : false, // 상세 모드 변경 값 |
| | |
| | | |
| | | // 상단 검색시 |
| | | $rootScope.$on("searchIssueList", function (event, args) { |
| | | $scope.vm.search.keyWord = args.keyWord; |
| | | $scope.vm.searchAll.keyWord = args.keyWord; |
| | | $scope.fn.getPageList(0); |
| | | }); |
| | | |
| | |
| | | // 검색 기본값 세팅 |
| | | $scope.vm.search.issueTypeIds = []; |
| | | $scope.vm.projects = []; |
| | | if ($scope.vm.search.keyWord == null || $scope.vm.search.keyWord === "") { |
| | | if ($scope.vm.searchAll.keyWord == null || $scope.vm.searchAll.keyWord === "") { |
| | | // 메뉴에서 선택된 이슈 유형을 기본으로 추가 |
| | | if ($rootScope.issueTypeMenu != null) { |
| | | //$scope.vm.pageTitle = $rootScope.issueTypeMenu.name; |
| | |
| | | fieldKey: $rootScope.issueTypeMenu.id, |
| | | fieldValue: $rootScope.issueTypeMenu.name |
| | | }); |
| | | |
| | | // 검색 조건을 저장한다. |
| | | //$scope.fn.makeVmSearchObject(); |
| | | |
| | | // 현재 선택된 프로젝트를 검색 기본으로 추가 |
| | | if ($rootScope.workProject != null && $rootScope.workProject.id > -1) { |
| | | var find = findProjectSearch($rootScope.workProject.id); |
| | | if (!find) { |
| | | $scope.vm.projects.push($rootScope.workProject); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 검색 조건을 저장한다. |
| | | //$scope.fn.makeVmSearchObject(); |
| | | |
| | | // 현재 선택된 프로젝트를 검색 기본으로 추가 |
| | | if ($rootScope.workProject != null && $rootScope.workProject.id > -1) { |
| | | var find = findProjectSearch($rootScope.workProject.id); |
| | | if (!find) { |
| | | $scope.vm.projects.push($rootScope.workProject); |
| | | } |
| | | } |
| | | //$scope.vm.searchAll.keyWord = ""; |
| | | } |
| | | |
| | | // 이슈 검색 조건을 만든다. |
| | |
| | | } else { |
| | | $scope.vm.responseData = result.data; |
| | | } |
| | | |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedIssueLookup"), result.data.message.message); // 이슈 조회 실패 |
| | |
| | | if ($rootScope.isDefined(params)) { |
| | | // $rootScope.$broadcast("makeIssueSearch", { projectKey : params.projectKey, issueNumber : params.issueNumber }); |
| | | if (params.keyWord != null) { |
| | | getPageList(0,false,params.keyWord); |
| | | $scope.vm.searchAll.keyWord = params.keyWord; |
| | | getPageList(0,false, params.keyWord); |
| | | }else { |
| | | getDetailList(params.projectKey, params.issueNumber); |
| | | return; |
| | | } |
| | | $rootScope.previousGetParams = null; |
| | | // $rootScope.issueTypeId = $rootScope.issueTypeMenu.id; |
| | | } |
| | | |