From 9c237ff6f08cb7a4121cac6c642660ced1045030 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 21 12월 2021 11:16:02 +0900 Subject: [PATCH] - 트리구조 데이터 없을때 데이터 없음 표시 - 이슈 추가 시 담당부서가 워크플로우 '생성' 상태의 담당부서가 선택되는 기능 --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 16 +++++ src/main/resources/mybatis/query-template/department-template.xml | 31 +++++++++ src/main/webapp/custom_components/js-tree/js-tree.html | 7 ++ src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java | 22 +++++++ src/main/java/kr/wisestone/owl/service/IssueService.java | 3 + src/main/webapp/scripts/components/issue/issue.service.js | 6 ++ src/main/java/kr/wisestone/owl/web/controller/IssueController.java | 14 ++++ src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java | 2 src/main/webapp/scripts/app/issue/issueAdd.controller.js | 28 ++++++++- 9 files changed, 124 insertions(+), 5 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java b/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java index 0f43f7d..0907e39 100644 --- a/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java +++ b/src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java @@ -24,4 +24,6 @@ List<Map<String, Object>> findByDepartmentIds(UserCondition condition); List<Map<String, Object>> findProjectDepartment(DepartmentCondition departmentCondition); + + List<Map<String, Object>> findByIssueStatusId(DepartmentCondition condition); } diff --git a/src/main/java/kr/wisestone/owl/service/IssueService.java b/src/main/java/kr/wisestone/owl/service/IssueService.java index 242c011..b1f692a 100644 --- a/src/main/java/kr/wisestone/owl/service/IssueService.java +++ b/src/main/java/kr/wisestone/owl/service/IssueService.java @@ -6,6 +6,7 @@ import kr.wisestone.owl.domain.Workflow; import kr.wisestone.owl.vo.IssueVo; import kr.wisestone.owl.web.condition.ApiMonitorCondition; +import kr.wisestone.owl.web.condition.DepartmentCondition; import kr.wisestone.owl.web.condition.IssueCondition; import kr.wisestone.owl.web.condition.ProjectCondition; import kr.wisestone.owl.web.form.EmailTemplateForm; @@ -104,6 +105,8 @@ void findPartner(Map<String, Object> resJsonData, Map<String, Object> params); + void findReadyDepartments(Map<String, Object> resJsonData, DepartmentCondition make, Pageable pageable); + void findApiIssue(ApiMonitorCondition apiMonitorCondition, Map<String, Object> resJsonData); void setCountDownIssues(List<IssueVo> issueVos); 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 96d90c3..ed2154d 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -3797,4 +3797,20 @@ resJsonData.put(Constants.RES_KEY_CONTENTS, usePartnerVos); } } + + @Override + public void findReadyDepartments(Map<String, Object> resJsonData, DepartmentCondition condition, Pageable pageable) { + Integer issueStatusId = 1; + condition.setIssueStatusId(issueStatusId); + + IssueType issueType = this.issueTypeService.getIssueType(condition.getIssueTypeId()); + if (issueType != null) { + condition.setWorkflowId(issueType.getWorkflow().getId()); + } + condition.setPage(pageable.getPageNumber() * pageable.getPageSize()); + condition.setPageSize(pageable.getPageSize()); + + List<Map<String, Object>> departmentVos = this.departmentMapper.findByIssueStatusId(condition); + resJsonData.put(Constants.RES_KEY_CONTENTS, departmentVos); + } } \ No newline at end of file diff --git a/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java b/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java index 87bfed4..c81f030 100644 --- a/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java +++ b/src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java @@ -21,6 +21,8 @@ private List<Long> departmentIds = Lists.newArrayList(); private Long issueTypeId; + private Integer issueStatusId; + private Long workflowId; private Integer Page; private Integer PageSize; @@ -30,6 +32,10 @@ if (MapUtil.getStrings(departmentConditions, "excludeIds") != null) { condition.setExcludeIds(MapUtil.getLongs(departmentConditions, "excludeIds")); + } + + if (MapUtil.getLong(departmentConditions, "issueTypeId") != null) { + condition.setIssueTypeId(MapUtil.getLong(departmentConditions, "issueTypeId")); } return condition; @@ -114,4 +120,20 @@ public void setIssueTypeId(Long issueTypeId) { this.issueTypeId = issueTypeId; } + + public Integer getIssueStatusId() { + return issueStatusId; + } + + public void setIssueStatusId(Integer issueStatusId) { + this.issueStatusId = issueStatusId; + } + + public Long getWorkflowId() { + return workflowId; + } + + public void setWorkflowId(Long workflowId) { + this.workflowId = workflowId; + } } diff --git a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java index e9e747d..904cdc6 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java @@ -5,6 +5,7 @@ import kr.wisestone.owl.service.IssueService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.web.condition.ApiMonitorCondition; +import kr.wisestone.owl.web.condition.DepartmentCondition; import kr.wisestone.owl.web.condition.IssueCondition; import kr.wisestone.owl.web.form.EmailTemplateForm; import kr.wisestone.owl.web.form.IssueForm; @@ -106,6 +107,19 @@ return this.setSuccessMessage(resJsonData); } + // �뙆�듃�꼫 紐⑸줉 議고쉶 + @RequestMapping(value = "/issue/findReadyDepartments", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> findReadyDepartments(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + Pageable pageable = this.pageUtil.convertPageable(this.getPageVo(params)); + + this.issueService.findReadyDepartments(resJsonData, DepartmentCondition.make(params.get(Constants.REQ_KEY_CONTENT)), pageable); + + return this.setSuccessMessage(resJsonData); + } + // �씠�뒋 �긽�꽭 議고쉶 @RequestMapping(value = "/issue/detail", produces = MediaType.APPLICATION_JSON_VALUE) public diff --git a/src/main/resources/mybatis/query-template/department-template.xml b/src/main/resources/mybatis/query-template/department-template.xml index 9b97cbb..ac05d26 100644 --- a/src/main/resources/mybatis/query-template/department-template.xml +++ b/src/main/resources/mybatis/query-template/department-template.xml @@ -12,10 +12,10 @@ FROM department d WHERE 1=1 - <if test="departmentName != '' and departmentName != null"> + <if test="departmentName != null and departmentName != ''"> AND d.department_name like CONCAT('%',#{departmentName},'%') </if> - <if test="id != '' and id != null"> + <if test="id != null and id != ''"> AND d.id like CONCAT('%',#{id},'%') </if> <choose> @@ -76,5 +76,32 @@ where p.id = #{projectId}; </select> + <select id="findByIssueStatusId" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.DepartmentCondition"> + SELECT + d.id as id, + d.department_name as departmentName + FROM + department d + INNER JOIN workflow_department wd ON wd.department_id = d.id + WHERE 1=1 + <if test="issueStatusId != null and issueStatusId != ''"> + AND wd.issue_status_id = #{issueStatusId} + </if> + <if test="workflowId != null and workflowId != ''"> + AND wd.workflow_Id = #{workflowId} + </if> + <choose> + <when test="excludeIds != null and excludeIds.size != 0"> + AND d.id NOT IN + <foreach collection="excludeIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </when> + </choose> + <if test="pageSize != '' and pageSize != null"> + limit #{pageSize} offset #{page}; + </if> + </select> + </mapper> \ No newline at end of file diff --git a/src/main/webapp/custom_components/js-tree/js-tree.html b/src/main/webapp/custom_components/js-tree/js-tree.html index 433040f..9b44e7a 100644 --- a/src/main/webapp/custom_components/js-tree/js-tree.html +++ b/src/main/webapp/custom_components/js-tree/js-tree.html @@ -1,4 +1,11 @@ <div> + <table class="table table-striped table-layout-fixed" ng-class="{ 'width768' : !detailView }" bindonce> + <tr ng-if="fn.getResponseData().length == 0"> + <td colspan="{{tableConfigs.length}}"> + <span translate="common.noData">�뜲�씠�꽣媛� �뾾�뒿�땲�떎.</span> + </td> + </tr> + </table> <ul class="ml-1 pl-1 tree"> <li ng-repeat="row in fn.getResponseData()"> <ul class=""> diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js index f23ed07..b9ebc23 100644 --- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js @@ -37,7 +37,8 @@ setIssueTypeTemplate : setIssueTypeTemplate, // �씠�뒋 �쑀�삎 �뀥�뵆由� �쟻�슜�븯湲� startExecute : startExecute, // 而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔 containsPartner : containsPartner, - getPartners : getPartners + getPartners : getPartners, + getDepartments : getDepartments, }; $scope.vm = { @@ -58,7 +59,8 @@ attachedFiles : [], // �꽟癒몃끂�듃濡� �뙆�씪 �뾽濡쒕뱶瑜� �븷 寃쎌슦 �꽌踰꾩뿉�꽌 pk瑜� �뵲怨� issue id�� �뿰�룞 �옉�뾽�씠 �븘�슂�븯�떎. startCompleteDateRange : "", // �떆�옉�씪 ~ 醫낅즺�씪 detectingDateRange : "", // �깘吏��씪 - issueCustomFields : [] // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 + issueCustomFields : [], // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 + issueStatusId: "" }, infiniteAdd : false, // �뿰�냽 �깮�꽦 projectName : "", // �봽濡쒖젥�듃 紐� 寃��깋 @@ -852,6 +854,25 @@ $scope.vm.partnerVos = result.data.data; } }); + } + + function getDepartments() { + if($scope.vm.form.issueTypeId === ""){ + $scope.vm.form.issueTypeId = $rootScope.issueTypeMenu.id + } + var content = { + issueTypeId : $scope.vm.form.issueTypeId, + }; + Issue.findReadyDepartments($resourceProvider.getContent( + content, + $resourceProvider.getPageContent(0, 1))).then(function (result) { + if (result.data.message.status === "success") { + angular.forEach(result.data.data, function (department) { + department.byName = department.departmentName; + $scope.vm.form.departments.push(department); + }); + } + }); } @@ -862,7 +883,8 @@ getIssueTypes : $scope.fn.getIssueTypes(), getPriorities : $scope.fn.getPriorities(), getSeverities : $scope.fn.getSeverities(), - getPartners : $scope.fn.getPartners() + getPartners : $scope.fn.getPartners(), + getDepartments : $scope.fn.getDepartments() }; $q.all(promises).then(function (results) { // �쁽�옱 �봽濡쒖젥�듃 �꽕�젙 diff --git a/src/main/webapp/scripts/components/issue/issue.service.js b/src/main/webapp/scripts/components/issue/issue.service.js index bc4b726..8290ed9 100644 --- a/src/main/webapp/scripts/components/issue/issue.service.js +++ b/src/main/webapp/scripts/components/issue/issue.service.js @@ -39,6 +39,12 @@ return response; }); }, + findReadyDepartments : function (conditions) { + return $http.post("issue/findReadyDepartments", conditions).then(function (response) { + $log.debug("�썙�겕�뵆濡쒖슦�쓽 �깮�꽦 �긽�깭�쓽 �떞�떦遺��꽌 紐⑸줉 �뜲�씠�꽣 : ", response); + return response; + }); + }, add : function (conditions) { conditions.url = "issue/add"; return $upload.upload(conditions).progress(function (evt) { -- Gitblit v1.8.0