OWL ITS + 탐지시스템(인터넷 진흥원)
- 트리구조 데이터 없을때 데이터 없음 표시
- 이슈 추가 시 담당부서가 워크플로우 '생성' 상태의 담당부서가 선택되는 기능
9개 파일 변경됨
129 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/mapper/DepartmentMapper.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/IssueService.java 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 16 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/DepartmentCondition.java 22 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/IssueController.java 14 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/department-template.xml 31 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-tree/js-tree.html 7 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAdd.controller.js 28 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/issue/issue.service.js 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
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);
}
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);
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);
    }
}
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;
    }
}
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
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>
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="">
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) {
                        // 현재 프로젝트 설정
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) {